macOS Sierra: recarrega o firewall quando a rede muda

1

Eu tenho tentado recarregar as regras pf sempre que a rede mudar. Aqui está o meu arquivo plist. /Library/LaunchAgents/com.wwk.networkchange.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.wwk.networkchange</string>
    <key>ProgramArguments</key>
    <array>
        <string>sudo /sbin/pfctl -f /Users/wwk/pf.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>WatchPaths</key>
    <array>
        <string>/private/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Eu posso ver que /private/var/run/resolv.conf é alterado quando as interfaces de rede são alteradas, mas as regras pf não são recarregadas. FYI, /Users/wwk/pf.conf está lá e eu habilitei / sbin / pfctl para ser executado sem prompt de senha via arquivo / etc / sudoers. Obrigado em qualquer adiantamento!

    
por Pei 26.08.2017 / 10:00

1 resposta

0

Na verdade, foi porque meu novo daemon estava em conflito com o daemon pfctl padrão da Apple. Então eu tive que atualizar o plemon daemon pfctl padrão para observar os caminhos que são alterados sempre que a rede muda. Adicione o seguinte ao /System/Library/LaunchDaemons/com.apple.pfctl.plist

<WatchPaths>
<array>
    <string>/private/var/run/resolv.conf</string>
    <string>/etc/pf.conf</string>
    <string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
</array>

Btw, temos que habilitar as alterações nos arquivos do sistema por $ csrutil disable no modo de recuperação do macOS para fazer alterações no arquivo plist acima. (deve fazer $ csrutil enable após as alterações necessárias nos arquivos do sistema)

    
por 04.09.2017 / 20:54