将传入数据包从服务器重新路由到本地计算机 B 而不是 A

将传入数据包从服务器重新路由到本地计算机 B 而不是 A

我正在尝试将服务器传入的 TCP 数据包重定向到本地计算机 B。

本地计算机 A ( ) 上的应用程序客户端192.168.0.7连接到服务器 ( 1.2.3.4),因此来自服务器的每个传入 TCP 数据包都会通过端口 38xx 到达本地计算机 A。

  1. 如何将数据包从服务器重定向到本地机器 B ( 192.168.0.20) 而不是本地机器 A?
  2. 然后,如何将数据包从本地计算机 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-BIP 为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

相关内容