Wireguard 的 Iptables KillSwitch

Wireguard 的 Iptables KillSwitch

我想請求一些幫助來為我的 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規則,並開始透過 WireGuard 隧道路由流量(透過表 中設定的路由)。當您關閉 WireGuard 介面(或重新啟動 Pi)時,規則將被刪除,並且規則將再次匹配。143192.168.2.16wg-quick43wg-quick1431043

相關內容