当数据包从我们的客户端到达时,我需要转换它们的目标IP,并将从我们的网络离开的数据包的源IP转换为客户的网络。
我在Linux机器上有一个带有客户端的IPSec VPN通道。该机器具有两个具有以下配置的界面:
eth0: 172.15.100.5
eth1: 172.15.100.15 (public IP 33.x.x.x)
应用程序服务器为172.15.100.50
。
客户IP:10.26.18.38/32
客户端无法使用我们的内部IP 172.15.100.50
通过隧道与应用程序对话。相反,他们将通过VPN将流量发送到172.20.100.55
(这不是我们的IP),并且他们需要我们以源IP为172.20.100.55
进行响应。
我的想法是,我应该能够使用iptables POSTROUTING
和PREROUTING
将传入流量的目标IP从10.20.100.55
转换为172.15.100.50
(应用服务器),然后传出从我们的网络应用服务器IP 172.15.100.50
到10.20.100.55
的流量。但是,我不确定实现此目标的正确方法。
iptables -t nat -I PREROUTING -i eth1 -d 10.20.100.55 -j DNAT --to 172.15.100.50
iptables -t nat -I POSTROUTING -i eth0 -d 10.26.18.38 -j SNAT --to 172.20.100.55
我已经使用tcpdump监视了应用程序服务器上的流量,但是看来我的NAT规则不起作用。