使用 iptables 更改传入数据包的 IP 地址

使用 iptables 更改传入数据包的 IP 地址

我在 LAN 内有一台服务器 (S1),其中的路由器不受我控制。服务器上安装了 openvpn,我可以使用 ssh 登录到它。LAN 上还有另一台服务器 (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 上的路线,因为它是一个功能非常有限的 IP 摄像机。

答案1

在您要连接的主机上设置 SNAT/伪装。这样您的源地址就会被修改为显示为来自 NAT 盒的代理。

像这样简单的规则也许能够实现您想要的效果。

iptables -t nat -A POSTROUTING --destination S2 -j MASQ

相关内容