我们的主机之一负责使用以下configuration创buildIPsec隧道:
conn abc authby=secret auth=esp auto=start type=tunnel forceencaps=no left=%defaultroute leftid=52.50.100.70 leftnexthop=%defaultroute leftsourceip=10.203.0.153 right=89.110.203.12 rightsubnet=89.110.203.128/26 rightnexthop=%defaultroute ike=aes128-sha1;modp1024! phase2alg=aes128-sha1;modp1024 ikelifetime=28800s pfs=yes salifetime=3600s keyexchange=ike
问题是,我们有3个应用程序通过安装在主机内部的通道进行通讯。
我们的目标是将它们取出并安装在不同的主机上。 为了达到这个目的,我想创build一个使用iptables的端口映射来把那个主机的端口映射到另一端的主机。
我做了我的研究,并尝试使用以下命令:
iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to-destination 89.110.203.148:2775 iptables -t nat -A POSTROUTING -p tcp -d 89.110.203.148 --dport 2775 -j SNAT --to-source 172.31.22.88
但没有运气。 虽然他们工作,当我testing它没有ipsec隧道(只是转发端口从一个主机到另一个)。 可能他们不工作的原因是规则在数据包被encryption之前被应用。
第二种方法是使用socat命令:
socat TCP-LISTEN:9999,fork TCP:89.110.203.148:2775
这实际上有效,但我不确定这种方法的性能/稳定性。
所以我的问题是,如何使用iptables来configuration路由映射端口,并获得与socat命令相同的结果。