我对 iptables 和 NAT 还不熟悉。但我正在通过网上和书籍中的各种资料进行研究。我对使用 iptables 实现 NAT 有疑问。
假设我的网络场景如下所示。
linuxbox2 (10.0.0.3)
|
|
linuxbox1-------- Switch ----- INTERNET
(10.0.0.2) (194.160.1.1)
我的 Linux 盒子 1 和 2 通过交换机连接到互联网,我只有一个公共 IP 地址 (194.160.1.1)。但通信有点奇怪。盒子 2 不通过交换机直接连接到外部世界。但它与盒子 1 位于 VLAN 中。因此,来自盒子 2 的流量会流向盒子 1,然后向下传输到交换机以连接到外部世界。我们在盒子 1 上进行 natting
因为我们尝试伪装成同一个公共 IP 地址,所以 iptable 中的规则应该是什么。
我的问题可能很奇怪,但我无法清楚地解释......
开启了一个新话题,提供更多详细信息和输出
答案1
如果我理解正确的话,盒子 2 与盒子 1 位于同一个 VLAN,而盒子 1 也位于另一个可以访问 Internet 的 VLAN 中。
假设第一个 VLAN 是 VLAN 100,第二个 VLAN 是 VLAN 200,我假设您在 Box 1 上正确配置了 VLAN,因此您有两个 VLAN 的网络接口(通常是 eth0.100 和 eth0.200)。
在这种情况下,解决方案很简单,在框 1 上:
iptables -t nat -A POSTROUTING -o eth0.200 -j MASQUERADE
使用此命令,Box 1 将通过 VLAN 200 将数据包进行 NAT 伪装发送到 Internet。因此,当 Box 2 将数据包发送到 VLAN 100 上的 Box 1 时,Box 1 会将其转发到 VLAN 200。
确保在 Box 1 上启用了 IP 转发 ( sysctl -w net.ipv4.ip_forward=1
)。