LINUX.ORG.RU
ФорумAdmin

route, iptables, 2 провайдера


0

0

есть сервак (gw) с 2'мя физическими интерфейсами, к одному подключён роутер с выходом в инет через одного провайдера (пусть это будет gw1), к другому локальная сеть и роутер с выходом в инет к другому провайдеру (пусть это будет gw2), вообщем надо чтоб вся сеть кроме части компов ходила в инет через gw2, остальная часть через gw1 при этом все компы указывают в качестве гейтвея сервак gw.

вообщем делаю //первая часть сети, gw1 iptables -t nat -A POSTROUTING ....... -o eth0 --to-source 1.2.3.4 .... //вторая часть сети, gw2 iptables -t nat -A POSTROUTING ....... -o eth1 --to-source 5.6.7.8 ....

при этом если в таблице роутинга на gw указываю default роутером gw1 всё лезет на 1.2.3.4 , если gw2, то - gw1, а если не прописывать default роутера то вообще ничего не работает, хотя для сетей 1.2.3.4 и 5.6.7.8 в таблице роутинга гейтвеи явно указаны, вообщем как решить данную проблему

anonymous

Если на всех тачках в качестве шлюза приписан gw, то похоже тут нужен source based routing и пакет iproute2

spirit ★★★★★
()

Кстати, "-A POSTROUTING" добавляет правила в цепочку POSTROUTING, которая называется так, потому что пакеты проходят по ней после принятия решений о маршрутизации, а здесь как раз надо перед обычной (destination based) маршрутизацией определить кого через gw1, а кого через gw2. И "-o ethX" здесь ничего не решает, это всего лишь условие для применения правила (или не применения), а не указание через что слать. Указание уже сделано маршрутизацией.

spirit ★★★★★
()
Ответ на: комментарий от spirit

я всё понял, настроил роутинг через iproute2

anonymous
()
Ответ на: комментарий от fagot

>А правила не покажешь?

я особо не мудрил и сделал по тупому
echo 100 Prov1 >> /etc/iproute2/rt_tables
echo 100 Prov2 >> /etc/iproute2/rt_tables

ip route add default via 1.2.3.4 dev eth0 table Prov1
ip route add default via 5.6.7.8 dev eth1 table Prov2

#далее в файлах file1 - ipшники которые идут через Prov1
#в file2 - ipшники которые идут через Prov2

cat file1 | while read ip;do
echo $ip;
ip rule del from $ip table Prov1
ip rule add from $ip table Prov1
done

cat file2 | while read ip;do
echo $ip;
ip rule del from $ip table Prov2
ip rule add from $ip table Prov2
done

ip route flush cache

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.