我正在尝试将服务器传入的 TCP 数据包重定向到本地计算机 B。
本地计算机 A ( ) 上的应用程序客户端192.168.0.7
连接到服务器 ( 1.2.3.4
),因此来自服务器的每个传入 TCP 数据包都会通过端口 38xx 到达本地计算机 A。
- 如何将数据包从服务器重定向到本地机器 B (
192.168.0.20
) 而不是本地机器 A? - 然后,如何将数据包从本地计算机 B 发送回服务器,但使其看起来像是来自本地计算机 A?
我已经尝试过以下方法:
- 通过编辑文件启用端口转发
sysctl.conf
。 - 运行 IP 表命令:
iptables -t nat -A PREROUTING -d 192.168.0.7 -p tcp -m tcp --dport 38xx -j DNAT --to-destination 192.168.0.120:38xx
iptables -t nat -A POSTROUTING -j MASQUERADE
然而,使用 Wireshark 分析流量似乎没有得出任何结果。
非常感谢你。
答案1
转发流量:[client] --> [proxy] --> [server-A] --> [server-B]
回程交通:[server-B] --> [server-A] --> [proxy] --> [client]
如果这就是您的流量应有的样子,那么您必须配置server-A
转发和伪装流量。当server-A
收到来自 的流量时proxy
,它将转发到server-B
。
虽然server-B
IP 为192.168.0.20
,但我们假设server-A
:
eth0 is facing the proxy
eth1 is facing server-B
TCP 3800 is listening on server-A and server-B respectively
在 上server-A
,执行以下操作:
$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3800 -j DNAT --to-destination 192.168.0.20:3800
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE