我有一个带有 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,只需确保:
每台计算机都有一个通过 Linux 机器设置的默认网关,或者有一个通过 Linux 机器到其他网络的路由。
Linux 机器已启用转发 – 取消注释
net.ipv4.ip_fortward
并/etc/sysctl.conf
重新启动(或echo 1 > /proc/sys/net/ipv4/ip_forward
暂时执行此操作)。确保防火墙允许转发(
iptables -vnL
并检查FORWARDING
规则没有链且设置为默认ACCEPT
)。我相信这是默认的。