macOS Sierra: recarga el firewall cuando cambia la red

macOS Sierra: recarga el firewall cuando cambia la red

He estado intentando recargar las reglas de pf cada vez que cambia la red. Aquí está mi archivo plist. /Biblioteca/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>

Puedo ver que /private/var/run/resolv.conf cambia cuando se cambian las interfaces de red, pero las reglas de pf no se recargan en absoluto. Para su información, /Users/wwk/pf.conf está ahí y he habilitado /sbin/pfctl para que se ejecute sin solicitar contraseña a través del archivo /etc/sudoers. ¡Gracias de antemano!

Respuesta1

En realidad, fue porque mi nuevo demonio estaba en conflicto con el demonio pfctl predeterminado de Apple. Así que tuve que actualizar la lista de demonios pfctl predeterminada para observar las rutas que cambian cada vez que cambia la red. Agregue lo siguiente al/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>

Por cierto, tenemos que habilitar los cambios en los archivos del sistema en $ csrutil disableel modo de recuperación de macOS para realizar cambios en el archivo plist anterior. (debería hacerlo $ csrutil enabledespués de los cambios necesarios en los archivos del sistema)

información relacionada