我有一个局域网内的服务器(S1),一个路由器在我的控制之外。 在服务器上安装openvpn,我可以用sshlogin。 局域网上有另一台服务器(S2),我想把S2上的端口转发到端口S1。
如果我做
sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d S1 --dport 8001 -j DNAT --to-destination S2:80
然后尝试从我的电脑连接S1:8001我有S1的LAN接口:
IP **my_vpn_ip**.48174 > S2.80: Flags [S], seq 4243753453, win 14600, options [mss 1368,sackOK,TS val 89266048 ecr 0,nop,wscale 7], length 0
显然这是行不通的,因为S2没有路由到我的电脑,也不能发送回复。 是否有可能欺骗源S1上的数据包回来,然后做NAT?
在S2上改变路由是不可能的,因为它是一个function非常有限的IP摄像机。
在你连接的主机上设置SNAT / Masquerading。 这样你的源地址就被修改成了来自NAT的代理。
像这样简单的规则可能会做你想要的。
iptables -t nat -A POSTROUTING --destination S2 -j MASQ