每当网络发生变化时,我一直试图重新加载pf规则。 这是我的plist文件。 /Library/LaunchAgents/com.wwk.networkchange.plistmacOS Sierra:每当网络发生变化时重新加载防火墙
<?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>
我可以看到当网络接口更改,但PF规则不被重新加载在所有/private/var/run/resolv.conf改变。 仅供参考,/Users/wwk/pf.conf在那里,我已启用/ sbin/pfctl通过/ etc/sudoers文件没有密码提示。 非常感谢!
对于ProgramArguments,您是对的。我按照您的指示安排了它们,但仍然没有运气。 关于sudo问题,我发现我仍然必须以sudo作为前缀,即使它已注册为sudoers。 – Pei
@Pei您是否将它移动到/ Library/LaunchDaemons(然后重新启动或使用'sudo launchctl load/Library/LaunchDaemons/com.wwk.networkchange.plist'加载它?这应该使'sudo'无关紧要。 –
是的,我这样做,并做了sudo launchctl加载/卸载几次,但仍然没有运气。 – Pei