如何将 eth0 中的所有流量重定向到 eth1 并返回

如何将 eth0 中的所有流量重定向到 eth1 并返回

我有一个带有 eth0 和 eth1 的 Ubuntu 盒子。

我如何才能将所有来自 eth0 的流量重定向到 eth1 并返回?

我应该像下面这样执行 DNAT 和 SNAT 还是仅转发,或者两者兼而有之?

编辑

我的情况是这样的 ABC,有 3 台机器。A 和 C 都在不同的网络中。B 有两个网卡,一个在 A 的网络(eth0),另一个在 B 的网络(eth1)。我无法将 B 设置为 A 或 B 中的网关。

下面说明了主机 B 上的 iptables 如何实现此目的:解决方案

iptables -t nat -A PREROUTING -p tcp -m tcp ! --dport 22 -j DNAT --to-destination eth1IP
iptables -t nat -A POSTROUTING -p tcp -m tcp -o eth1 -j MASQUERADE

已排除端口 22,以便 SSH 流量不受规则约束,并且我的 ssh 到主机 C 可以正常工作。

答案1

只要网络掩码正确且不重叠,您就不需要使用 DNAT 或 SNAT,只需确保:

  1. 每台计算机都有一个通过 Linux 机器设置的默认网关,或者有一个通过 Linux 机器到其他网络的路由。

  2. Linux 机器已启用转发 – 取消注释net.ipv4.ip_fortward/etc/sysctl.conf重新启动(或echo 1 > /proc/sys/net/ipv4/ip_forward暂时执行此操作)。

  3. 确保防火墙允许转发(iptables -vnL并检查FORWARDING规则没有链且设置为默认ACCEPT)。我相信这是默认的。

相关内容