fwmark iptables, 2wan
Всем привет!
На роутере один канал от провайдера - 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 - не помогло.
Чего я упустил?