Тема увы не нова, но разобраться и заставить все работать так, как нужно, увы, не получилось. Поэтому прошу помощи тут.
Имеем:
есть сервер с тремя интерфейсами: eth0 eth1 eth2
соответственно
eth0 - интерфейс для ДСЛ интернета. Модем присваивает этому интерфейсу адрес вида 192.168.1.*
eth1 - для быстрых интернетов. Ип 81.200.17.91. Фиксированный.
eth2 - смотрит во внутреннюю сеть. На сервере поднят дхцп. Он раздает во внутреннюю сеть адреса вида 10.0.1.*. Адрес самого eth0 - 10.0.1.1
Теперь перейдем к тому, что хочу:
нужно сделать так чтобы пакеты, которые бегают через 80 и 3724 порты шли через eth0, а все остальные шли через eth1. Но! Вдобавок к этому, нужно сделать так, чтобы на заданный адрес(stat.su29.ru) пакеты шли через eth1.
Для обоих интерфейсов, 0 и 1, поднимаем НАТ и прописываем правила:
Код: Выделить всё
server:~# cat /etc/iptables.rules
# Generated by iptables-save v1.4.2 on Sat Oct 24 01:15:46 2009
*filter
:INPUT ACCEPT [678:71618]
:FORWARD ACCEPT [2:1152]
:OUTPUT ACCEPT [648:147344]
-A FORWARD -i eth2 -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i eth2 -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Oct 24 01:15:46 2009
# Generated by iptables-save v1.4.2 on Sat Oct 24 01:15:46 2009
*nat
:PREROUTING ACCEPT [397:46215]
:POSTROUTING ACCEPT [14:841]
:OUTPUT ACCEPT [15:893]
-A POSTROUTING -d ! 81.200.3.40/32 -o eth0 -p tcp -m multiport --dports 80,3724 -j MASQUERADE
-A POSTROUTING -d ! 81.200.3.40/32 -o eth0 -p udp -m multiport --dports 80,3724 -j MASQUERADE
-A POSTROUTING -d 81.200.3.40/32 -o eth1 -p tcp -m multiport --dports 80,3724 -j MASQUERADE
-A POSTROUTING -d 81.200.3.40/32 -o eth1 -p udp -m multiport --dports 80,3724 -j MASQUERADE
-A POSTROUTING -o eth1 -p tcp -m multiport --dports 0:79,81:3723,3725:65535 -j MASQUERADE
-A POSTROUTING -o eth1 -p udp -m multiport --dports 0:79,81:3723,3725:65535 -j MASQUERADE
-A POSTROUTING -o eth1 -p udplite -j MASQUERADE
-A POSTROUTING -o eth1 -p icmp -j MASQUERADE
-A POSTROUTING -o eth1 -p esp -j MASQUERADE
-A POSTROUTING -o eth1 -p ah -j MASQUERADE
-A POSTROUTING -o eth1 -p sctp -j MASQUERADE
COMMIT
# Completed on Sat Oct 24 01:15:46 2009Но оно не работает так, как бы того хотелось.
Нужно заставить пакеты, которые должны бегать через eth0, бегать через eth0. они бегают только если сделать route del default; route add refault gw <шлюз за eth0>, а это серверу не нужно - иначе пакеты самого сервера начинают бегать не по правильному интерфейсу
Прошу помощи)