У меня есть машина Ubuntu 10, которую я пытаюсь настроить с помощью NAT.
eth0 - это WAN-интерфейс, использующий DHCP.
eth1, eth2, eth3 - это интерфейсы LAN. Они подключены к 192.168.0.50, .51, .52 соответственно.
NAT через eth1 отлично работает. На eth2 / 3 я ничего не получаю - "нет маршрута к хосту" при пинге. Вот моя конфигурация 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
Поскольку три Ehternet находятся в одной сети (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
Очевидно, неправильно использовать один и тот же / 24 на разных интерфейсах.