如何为 Mac OS X 制作 VPN 终止开关

Joh*_*ong 3 networking vpn ufw pf macos

我想要做的是在 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

nba*_*ari 6

我发现的最好的事情是使用mac os X上可用的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
Run Code Online (Sandbox Code Playgroud)

仔细检查您的接口,在我的情况下en1是 WiFi 和uten1VPN 隧道。

更改81.171.71.XX为连接时获得的 IP。

启用 pf

$ sudo pfctl -e 
Run Code Online (Sandbox Code Playgroud)

加载规则:

$ sudo pfctl -Fa -f /path/to/pf.conf 
Run Code Online (Sandbox Code Playgroud)

禁用 pf:

$ sudo pfctl -d
Run Code Online (Sandbox Code Playgroud)

由于 ipvanish 的一个问题,我不得不实施这个,主要是因为应用程序崩溃导致 VPN 关闭并且流量恢复到默认的,没有加密的路由。

更新

您可以尝试killswitch它可以自动为您完成所有这些。

  • 我刚刚在 macOS 10.12.6 上尝试了 `killswitch`,它运行良好。使用 `brew install killswitch` 安装。如果失败,请先尝试“brew tap vpn-kill-switch/killswitch”,然后安装。这样,它可能无法下载瓶子,但它会为您从源代码编译。 (2认同)