Wireguard 的 Iptables 终止开关

Wireguard 的 Iptables 终止开关

我想要寻求一些关于为我的 VPN 设置终止开关的帮助。

我在 Pi 上使用以下设置,并将 Pi 的 IP 设置为所选客户端的网关 (192.168.2.16)。这样,客户端流量就通过 VPN 路由。

一切都运行良好,但如果由于某种原因 VPN 连接中断,我想添加一个终止开关,将流量路由到黑洞。

[Interface]
PrivateKey = ...
Address = 10.111.111.111/32
Table = 43

PostUp = ip rule add from 192.168.2.16 table 43; iptables -A FORWARD -i %i -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -A FORWARD -i eth0 -o %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE

PostDown = ...


[Peer]
PublicKey = ...
AllowedIPs = 0.0.0.0/0
Endpoint = 86.xxx.xxx.xxx:51820

答案1

在您的路由策略规则中添加一个低优先级数字PostUp,比如说143(并在脚本中以相同的方式删除它PostDown):

PostUp = ip rule add from 192.168.2.16 table 43 priority 143; ...
PostDown = ip rule del from 192.168.2.16 table 43 priority 143; ...

优先级较低的规则将首先匹配。如果您不设置优先级,操作系统将把它设置为 左右的数字32765,略低于默认规则。

然后在启动 Pi 时添加一条规则(具体在哪里执行取决于操作系统和版本),使用更高的优先级数字(但低于32000或大约为),该规则将拒绝来自以下所有流量192.168.2.16

ip rule add from 192.168.2.16 prohibit priority 1043

有了此功能,当 WireGuard 接口关闭时,路由引擎将1043在路由来自 的流量时匹配规则192.168.2.16,并拒绝该流量。当您使用 启动 WireGuard 接口时wg-quick,它将添加规则143,该规则将优先,并开始通过 WireGuard 隧道路由来自 的流量(通过表中192.168.2.16设置的路由)。当您使用 关闭 WireGuard 接口(或重新启动 Pi)时,规则将被删除,并且规则将再次匹配。wg-quick43wg-quick1431043

相关内容