我想要做的是当 VPN 连接断开时完全禁用互联网连接。我通过 Viscosity 连接到我的 VPN (privatevpn.com)。
我已经尝试了书中的所有方法。我尝试过在 Viscosity 中设置断开连接脚本,但它们从未触发,或者触发不一致,导致我的连接易受攻击。我也尝试过 Viscosity 中的路由技巧,但也没有用。
在我的 Ubuntu 机器上,我有一个完美的解决方案,我使用 ufw 规则来控制防火墙。为了连接到我的 VPN,我需要禁用 UFW,然后在 VPN 连接后启用 UFW,这样就可以确保连接不会泄漏。
Mac 上有一个叫做 pf 的东西。我可能能够配置 pf 以与我的 ufw 规则相同的方式工作,但我不知道如何配置它。
这些是我想要在 Mac 上运行的 UFW 规则,也许有人可以帮助我配置 pf 以使用相同的规则?
状态:活动 日志记录:开启(低) 默认:拒绝(传入)、拒绝(传出)、禁用(路由) 新配置文件:跳过
从任何地方执行操作 允许进入 193.180.119.0/24 任何地方允许出站 193.180.119.0/24
答案1
我发现最好的办法是使用PF可在苹果系统,连接到您的 VPN 提供商后只需更改 IP。
~/killswitch/pf.conf
创建包含此内容的文件
# Options
set block-policy drop
set ruleset-optimization basic
set skip on lo0
# Interfaces
wifi = "en1"
vpn = "utun1"
# Block everything
block out all
block in all
# Outbound: Allow only VPN
pass out on $wifi proto {tcp, udp} from any to 81.171.71.XX
# Allow traffic for VPN
pass out on $vpn all
仔细检查您的接口,在我的情况下en1
是 WiFi 和uten1
VPN 隧道。
更改81.171.71.XX
为您连接时获取的IP。
启用 pf
$ sudo pfctl -e
加载规则:
$ sudo pfctl -Fa -f /path/to/pf.conf
禁用 pf:
$ sudo pfctl -d
由于 ipvanish 出现问题,我不得不实施这一点,主要是因为应用程序崩溃导致 VPN 中断,并且流量回到默认的、未加密的路由。
更新
您可以尝试终止开关它可以自动为您完成所有这些操作。
答案2
这个脚本能解决问题吗?
#!/bin/bash
while true
do
result=$(scutil --nc list | grep Connected)
if [ -z "$result" ]; then
killall Transmission
exit
fi
done