我想請求一些幫助來為我的 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)時,規則將被刪除,並且規則將再次匹配。143
192.168.2.16
wg-quick
43
wg-quick
143
1043