Привожу решение своего поста, так сказать для ознакомления. Все делалось для домашного роутера ASUS WL500W на базе Linux MIPS на "прошивке от Олега". Исходные данные:
- основной и старейший ( у меня дома) провайдер на базе ADSL модема (модем в режиме Bridge). Настройки WAN порта: PPPoE (провайдерский DHCP+внешний статический адрес также выдаваемый провайдером). Шлюз по умолчанию
- скорости ADSL модема стало мало и поэтому был докуплен еще 16МБ канал на витой паре со внутренним статическим IP адресом. Под WAN порт был выделен свободный LAN порт (прошивка и "железо" это позволяет) и ему "задано" имя
vlan1
Задача: - необходимо 2 компа в домашней сети завернуть на нового провайдера оставив старый канал для сервисов, не требующих контроля.
Исходные данные: используем переменные (чтоб не давать конкретики)
- IP1_source - адрес первого компа который должен ходить через нового провайдера
- IP2_source - адрес второго компа который должен ходить через нового провайдера
- IP1_gateway - адрес шлюза выдаваемого основным провайдером (внешний статический адрес)
- IP2_gateway - адрес шлюза выдаваемого дополнительным провайдером (внутренний статический адрес)
в обоих случаях шлюз заранее известен!
далее основные источники информации:
1) умные люди, которые знают IPTABLE (я не знаю этого вопроса - только на стадии изучения)
2) страничка на сайте
http://www.opennet.ru/base/net/iproute2.txt.html
3) страничка на сайте
http://www.dd-wrt.com/wiki/index.php/Du ... ualization
мои текущие настройки на роутере (я не стал для маркировки пакетов в дальнейшем использовать таблицу /etc/iproute2/rt_tables как рекомендовали 1 и 2, а заюзал триггеры (по варианту 3), так как это мне кажется более красивым решением):
#маркируем трафик идущий со шлюзов. Данные скрипты просто скопированы и подогнаны под свои нужды с источника 3
Код: Выделить всё
ip rule flush
ip rule add lookup main prio 32766
ip rule add lookup default prio 32767
ip rule add from $IP1_gateway table 100 prio 100
ip rule add fwmark 0x100 table 100 prio 101
ip rule add from $IP2_gateway table 200 prio 200
ip rule add fwmark 0x200 table 200 prio 201
ip route flush table 100
ip route flush table 200
for TABLE in 100 200
do
ip route | grep link | while read ROUTE
do
ip route add table $TABLE to $ROUTE
done
done
ip route add table 100 default via $IP1_gateway
ip route add table 200 default via $IP2_gateway
маркируем трафик идущий от нужных компов
Код: Выделить всё
ip rule add from $IP1_source table 200 prio 200
ip rule add from $IP2_source table 200 prio 200
# Чистим кеш
ip route flush cache
настройка IPTABLES. без комментов
iptables -A INPUT -i vlan1 -m state --state NEW -j SECURITY
iptables -A FORWARD -i vlan1 -m state --state NEW -j SECURITY
iptables -t nat -A POSTROUTING -o vlan1 ! -s $IP2_gateway -j MASQUERADE
# перенаправление трафика на другой шлюз для некоторых клиентов
# Для правильной обратной связи
iptables -t mangle -N PROV
iptables -t mangle -A PROV -i vlan1 -j CONNMARK --set-mark 2
iptables -t mangle -A PREROUTING -i eth1 -m state --state ESTABLISHED -j CONNMARK --restore-mark
iptables -t mangle -A FORWARD -i vlan1 -m state --state NEW -j PROV
Вот как то так. И главное что оно работает!