LINUX.ORG.RU
ФорумAdmin

fwmark iptables, 2wan


0

1

Всем привет!

На роутере один канал от провайдера - eth0 (все маршруты в таблице main)
Решил добавить запасной канал umts (3g usb модем) для резервирования некоторых протоклов.

Добавил таблицу маршрутизации в rt_tables
[code]
1 UMTS
[/code]

добавил в нее роутов:

[code]
ip route show table UMTS
[code]default via 10.64.64.64 dev ppp0
10.66.45.101 dev ppp0 scope link[/code]

добавил rules'ов в роутинге (пакеты с маркером 255 идут через эту таблицу):

[code]
0: from all lookup local
32763: from all fwmark 0xff lookup UMTS
32764: from all to 10.66.45.101 lookup UMTS
32765: from 10.66.45.101 lookup UMTS
32766: from all lookup main
32767: from all lookup default
[/code]

Добавил маркировку через iptables:

[code]
iptables -t mangle -A OUTPUT -p tcp --dports 22 -j MARK --set-mark 255
iptables -t mangle -A UMTS -s 192.168.0.0/24 -p tcp -m multiport --dports 22 -j MARK --set-mark 255
iptables -t nat -A POSTROUTING -m mark --mark 255 -o ppp0 -j MASQUERADE
[/code]

И все работает, исходящий на 22 порт идет через ppp0.

Проблема в том, что работает до тех пор, пока в таблице main есть default gw. Т.е. если eth0 упадет (link down) - попытки соединения на локалхосте будут возвращать network unreachable.
Если же из-сети 192.168.200.0/24 - то трафик проходит mangle, маскарадинг, и пакеты даже уходят на ppp0. Возвращаются и ответы на ppp0 из интернета, но обратно в сеть 192.168.200.0/24 не идет..

пробовол копировать роуты из main в таблицу UMTS - не помогло.

Чего я упустил?


зачем в иптаблесах цепочка умтс не очень понятно. на нее гдето есть ссылка? с локалхоста я думаю так и будет т.к. пакет скорее всего не доходит до таблицы мангле чтобы получить маркировку. еще в таблицу умтс можно добавить роут в локалку.

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

да, там опечатка. не umts, а prerouting конечно..
маршрут до сети локалки есть, естественно. как в main, так и в таблице UMTS.
Хочу заметить, что если рулс
from all fwmark 0xff lookup UMTS
заменить на просто
from 192.168.0.0/24 lookup UMTS

то тогда работает и при отсутствие gw для eth0 в main.
т.е. как-то не так маркируется в iptables. но что именно...

ponch ()
Ответ на: комментарий от blind_oracle

Картинка красивая, сохраню.

В общем, решее было найдено. добавил в main пустой default route на dummy0 с метрикой выше, чем у основоного канала. Этот роут там присутствует всегда и не ломает прохождение маркерованных пакетов при отсутствии defgw на eth0..

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