在不使用 IP 路由的情况下保留 wireguard VPN 设置中的源 IP

在不使用 IP 路由的情况下保留 wireguard VPN 设置中的源 IP

我有以下设置

PC1(wireguard 客户端)-> PC2(wireguard 服务器,wg0,eth0)-> PC3(tcp 服务器)

192.168.1.100,10.1.1.2->192.168.1.101,10.1.1.1->192.168.1.102

192子网是WIFI网络。10.1.1.0/24是wireguard网络。

问题:

  1. 我该如何设置使用 iptables 仅让 PC3 看到 tcp 数据包的源 IP 来自 10.1.1.2?

使用以下规则,它可以到达 tcp 服务器,但源 IP 是 192.168.1.101(PC2,eth0)

iptables -t nat -A PREROUTING -p tcp -s 10.1.1.0/24 --dport 80  -j DNAT --to-destination 192.168.1.102:8080
iptables -t nat -A POSTROUTING -s 10.1.1.0/24  -j SNAT --to 192.168.1.101

更新:

问题:

  1. 我们不能使用 IP 路由的原因是,当在 k8s 中执行此操作时,在 IP 路由中使用 kube-proxy 服务时,它会抛出下一跳是无效网关。

有什么方法可以在 k8s 中存档这个吗?

谢谢!

答案1

你不能。要么使用SNAT(IP 地址被替换),要么设置正确的 IP 路由。

对于特定的应用层协议(例如 HTTP),您可以使用应用程序级代理。

相关内容