子网之间的 Wireguard 路由停止工作

子网之间的 Wireguard 路由停止工作

我有一个可以正常工作的 wireguard 设置,但我做了一些更改,现在我不明白为什么它不工作了。我在云端有一个 VPS 服务器和两个远程客户端,我想在它们之间进行路由。

我的配置是:

客户A:

[Interface]
Address = 192.168.9.5/24
PrivateKey = eN

PostUp= iptables -w -A FORWARD -i %i -j ACCEPT; iptables -w -A FORWARD -o %i -j ACCEPT; iptables -w -t nat -A POSTROUTING -o ens160 -j MASQUERADE; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE
PostDown= iptables -w -D FORWARD -i %i -j ACCEPT; iptables -w -D FORWARD -o %i -j ACCEPT; iptables -w -t nat -D POSTROUTING -o ens160 -j MASQUERADE; iptables -t nat -D POSTROUTING -o %i -j MASQUERADE

[Peer]
PublicKey = Xh
AllowedIPs = 192.168.9.1/32, 192.168.2.0/24
Endpoint = 168.:51820
PersistentKeepalive = 25

$ping 192.168.9.1: OK
$ping 192.168.2.x: NOT OK

-=[VPS - 云服务器]=-

[Interface]
Address = 192.168.9.1/24
ListenPort = 51820
PrivateKey = kGbGSC
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
#Client B
PublicKey = oj
AllowedIPs = 192.168.9.4/32, 192.168.2.0/24
[Peer]
#Client A
PublicKey = uP
AllowedIPs = 192.168.9.5/32, 192.168.1.0/24

$ping 192.168.1.x : OK
$ping 192.168.2.x : OK
$ping 192.168.9.4 and 9.5: OK

客户B:

[Interface]
Address = 192.168.9.4/24
PrivateKey = gO

PostUp= iptables -w -A FORWARD -i %i -j ACCEPT; iptables -w -A FORWARD -o %i -j ACCEPT; iptables -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE
PostDown= iptables -w -D FORWARD -i %i -j ACCEPT; iptables -w -D FORWARD -o %i -j ACCEPT; iptables -w -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -t nat -D POSTROUTING -o %i -j MASQUERADE


[Peer]
PublicKey = Xh
AllowedIPs = 192.168.9.1/32, 192.168.1.0/24
Endpoint = 168.:51820
PersistentKeepalive = 25

$ping 192.168.9.1: OK
$ping 192.168.1.X: NOT OK

从服务器,我可以用原始子网 ping 两个客户端,但不能 ping 客户端到客户端。以前它可以工作,我不知道我做了什么改动导致它停止工作。

当我从客户端 ping 另一个(不工作的)客户端时,在服务器上我看到:

$ sudo tcpdump -nni wg0  icmp -vv
tcpdump: listening on wg0, link-type RAW (Raw IP), capture size 262144 bytes
08:20:49.027878 IP (tos 0x0, ttl 64, id 51706, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.9.5 > 192.168.2.50: ICMP echo request, id 14, seq 1, length 64
08:20:49.027976 IP (tos 0x0, ttl 63, id 51706, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.9.5 > 192.168.2.50: ICMP echo request, id 14, seq 1, length 64

结果是超时。

答案1

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

还不够,因为我们不是路由客户端 -> 服务器 -> 互联网,而是客户端 -> 服务器 -> 客户端

我补充道:

iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

并且它现在正在工作。

相关内容