Назад | Перейти на главную страницу

iptables NAT с несколькими интерфейсами

У меня есть машина 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 на разных интерфейсах.