我有以下设置
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网络。
问题:
- 我该如何设置使用 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
更新:
问题:
- 我们不能使用 IP 路由的原因是,当在 k8s 中执行此操作时,在 IP 路由中使用 kube-proxy 服务时,它会抛出下一跳是无效网关。
有什么方法可以在 k8s 中存档这个吗?
谢谢!
答案1
你不能。要么使用SNAT
(IP 地址被替换),要么设置正确的 IP 路由。
对于特定的应用层协议(例如 HTTP),您可以使用应用程序级代理。