转发stream量到VPNnetworking

我有一台运行在Ubuntu 14.04上的云服务器,它连接着一个IPsec隧道。

服务器有一个真实的接口,公网IP xxxx和虚拟接口172.16.100.1所有到远程networking的stream量都应该通过IP 172.16.100.1的虚拟接口路由。所以我build立了一个路由条目。 这适用于在该服务器上生成的所有通信。

route add -net 172.17.1.2/21 gw 172.16.100.1 dev eth0:1 

但另一个要求是,如果云服务器接收到具有特定端口的公共IP上的stream量,则该stream量也应该被转发到远程networking。 我试图通过添加一个IP表条目:

 iptables -t nat -A PREROUTING -p tcp --dport 45678 -j DNAT --to-destination 172.17.1.2:29871 

但问题是,它以某种方式忽略了路由configuration,只是转发请求与其源IP,而不是使用172.16.xx

那configuration是正确的方法,还是我完全错了? 还有什么我必须configuration转发正确的stream量?

添加以下POSTROUTING条目解决了这个问题:

 iptables -t nat -A POSTROUTING -p tcp --dport 29871 -j SNAT --to-source 172.16.100.1