具有多个接口的 iptables NAT

具有多个接口的 iptables NAT

我有一台 ubuntu 10 机器,正在尝试设置 NAT。

eth0 是 WAN 接口,使用 DHCP。

eth1、eth2、eth3为LAN接口,分别连接192.168.0.50、.51、.52。

通过 eth1 进行 NAT 效果很好。在 eth2/3 上,我什么也没得到——ping 时显示“没有到主机的路由”。这是我的 iptables 配置。有什么明显错误吗?

# Generated by iptables-save v1.4.4 on Mon Jan 31 09:40:55 2011
*nat
:PREROUTING ACCEPT [1799:327587]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [23:2190]
-A POSTROUTING -j MASQUERADE 
COMMIT
# Completed on Mon Jan 31 09:40:55 2011
# Generated by iptables-save v1.4.4 on Mon Jan 31 09:40:55 2011
*filter
:INPUT ACCEPT [3474:500657]
:FORWARD ACCEPT [24:1613]
:OUTPUT ACCEPT [857:128814]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 192.168.0.50/32 -i eth1 -o eth0 -m conntrack --ctstate NEW -j ACCEPT 
-A FORWARD -s 192.168.0.51/32 -i eth2 -o eth0 -m conntrack --ctstate NEW -j ACCEPT 
-A FORWARD -s 192.168.0.52/32 -i eth3 -o eth0 -m conntrack --ctstate NEW -j ACCEPT 
COMMIT
# Completed on Mon Jan 31 09:40:55 2011
# Generated by iptables-save v1.4.4 on Mon Jan 31 09:40:55 2011
*mangle
:PREROUTING ACCEPT [3890:612115]
:INPUT ACCEPT [3474:500657]
:FORWARD ACCEPT [220:45916]
:OUTPUT ACCEPT [857:128814]
:POSTROUTING ACCEPT [1140:186789]
-A PREROUTING -i eth1 -j MARK --set-xmark 0x3/0xffffffff 
-A PREROUTING -i eth2 -j MARK --set-xmark 0x4/0xffffffff 
-A PREROUTING -i eth3 -j MARK --set-xmark 0x5/0xffffffff 
COMMIT
# Completed on Mon Jan 31 09:40:55 2011

答案1

在不同的接口上使用相同的 /24 显然是错误的。

答案2

由于三个以太网位于同一个网络 (192.168.0.0/24),您可能希望将它们桥接并对桥接设备进行 NAT,而不是单独处理它们。

brctl addbr br0
brctl addif br0 eth1
brctl addif br0 eth2
brctl addif br0 eth3

ifconfig br0 192.168.0.50/24 # For example

# Now NAT using br0 as local interface and eth0 as WAN

相关内容