我有一个“客户端-服务器”设置,由一台 Wireguard 服务器计算机和一个客户端组成,两者都在各自的 NAT 下。我希望这些在没有客户端路由器上的端口转发的情况下进行通信。显然,我仍然需要在服务器的路由器中进行端口转发。
根据此评论,如果服务器的回复来自客户端用来访问它的同一端口,则可以利用有状态的 UDP 防火墙。为此,我ListenPort
在两端设置为 58120:
[Interface]
ListenPort = 51820
...snip...
现在通过tcpdump
在客户端的路由器上执行,我可以证明数据包的源端口为 51820 和目标端口为 51820。与tcpdump
在服务器的路由器上执行的相同:源和目标设置为 51820 的传出数据包。
但在传入方向,客户端的路由器显示数据包来自端口 1025。看起来服务器端 NAT 将端口 51820 更改为 1025。这是因为端口 51820 已被端口转发占用吗?如何使源端口和目标端口相等,以便客户端路由器检测到 UDP“连接”?
实施细节:防火墙和 NAT 都是 iptables 驱动的。