如何在macOS中以编程方式实现VPN Kill Switch

时间:2018-02-05 05:53:32

标签: swift macos

我想以编程方式实现VPN kill switch。我可以从终端手动启用和禁用pf。但我无法从我的应用程序中执行此操作。  为此,我加载了pf.conf文件,其中包含规则:

"block drop all\n"
"pass inet proto udp from any to 224.0.0.0/4 keep state\n"
"pass inet proto udp from 224.0.0.0/4 to any keep state\n"
"pass inet from any to 255.255.255.255 flags S/SA keep state\n"
"pass inet from 255.255.255.255 to any flags S/SA keep state\n"
"pass on $active_interface proto tcp from any port 67:68 to any port 67:68 flags S/SA keep state\n"
"pass on $active_interface proto udp from any port 67:68 to any port 67:68 keep state\n"
"pass on $active_interface inet proto tcp from any to 109.201.137.13 flags S/SA keep state\n"
"pass on $active_interface inet proto udp from any to 109.201.137.13 keep state\n"
"pass on $VPN_interface all flags S/SA keep state\n"

当VPN连接时,它与sudo pfctl -esudo pfctl -d一起工作正常。如果VPN断开,流量将被阻止,用户必须连接到von或禁用kill开关来利用流量。

为了从mac app执行命令我使用了特权帮助工具,我根据控制台中的PF enabled命令得到pf和'PF禁用',但是流量一直被阻止。我正在使用Swift进行开发

我正在为此奋斗一个星期。请帮忙。  任何帮助将不胜感激。提前谢谢。

0 个答案:

没有答案