![iptables 链在两个相同网络之间转发](https://linux22.com/image/180916/iptables%20%E9%93%BE%E5%9C%A8%E4%B8%A4%E4%B8%AA%E7%9B%B8%E5%90%8C%E7%BD%91%E7%BB%9C%E4%B9%8B%E9%97%B4%E8%BD%AC%E5%8F%91.png)
我有两个相同的网络,我希望在分别配置为 TCP 服务器和 TCP 客户端的两台计算机之间转发流量。使用连接到两个网络的计算机,我希望使用 iptables 转发此数据。我希望启动从客户端到转发器的 TCP 连接,然后让它与服务器建立连接。
例如,TCP 客户端(1.1.1.155) 与转发器(1.1.1.55) 建立连接,并且它内部将请求转发到服务器(1.1.1.155) 以完成连接。参见下图。
我已启用 ipv4 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
我已经清除了 iptables 配置
iptables -F
我一直在尝试的 iptables 配置是:
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth2 -j DNAT --to-destination 1.1.1.155
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
答案1
当前的设计可能不适合您。您当前的问题让我想起了 VPN,其中本地子网与远程子网相同。回到你的设计,转发器将是一个 VPN 服务器。为了使这项工作有效:
LAN-A subnet will remain unchanged
LAN-B subnet will remain unchanged
eth1 and eth2 on forwarder must belong to two unique subnets, without conflicting with each other or with LAN-A and LAN-B.
一旦满足这些条件,您就必须在防火墙规则中使用 NAT。请记住,转发器将充当网关。如前所述,为了使网关正常工作,它必须在不同子网上至少有两个网络接口。