macOS Sierra: Firewall bei Netzwerkänderungen neu laden

macOS Sierra: Firewall bei Netzwerkänderungen neu laden

Ich habe versucht, die PF-Regeln bei jeder Netzwerkänderung neu zu laden. Hier ist meine plist-Datei. /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>

Ich kann sehen, dass /private/var/run/resolv.conf geändert wird, wenn Netzwerkschnittstellen geändert werden, aber PF-Regeln werden überhaupt nicht neu geladen. Zu Ihrer Information: /Users/wwk/pf.conf ist da und ich habe aktiviert, dass /sbin/pfctl ohne Kennwortabfrage über die Datei /etc/sudoers ausgeführt werden kann. Vielen Dank im Voraus!

Antwort1

Eigentlich lag es daran, dass mein neuer Daemon mit Apples Standard-PFCTL-Daemon in Konflikt geriet. Daher musste ich die Standard-PFCTL-Daemon-Plist aktualisieren, um Pfade zu überwachen, die bei Netzwerkänderungen geändert werden. Fügen Sie Folgendes zur/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>

Übrigens müssen wir Änderungen an Systemdateien $ csrutil disableim macOS-Wiederherstellungsmodus aktivieren, um Änderungen an der obigen plist-Datei vorzunehmen. (sollte $ csrutil enablenach den erforderlichen Änderungen an den Systemdateien erfolgen)

verwandte Informationen