Настраиваю по доке "linux advanced ruoting how-to" роутинг через два гейтвея и у меня следующая проблема: Не проходит трафик который рутится на основе марков (fwmark).Вот что я имею:
eth0 - Gaeway 1 iface
ip0 - ip for eth0
gw0 - gateway ip for eth0
eth1 - Internal iface
ip1 - ip for eth1
eth2 - gateway 2 iface
ip2 - ip for eth2
gw2 - gateway for eth2
Прописываю следующее:
iptables -t mangle -A PREROUTING -p icmp -j MARK --set-mark 6
ip rule add fwmark 6 table T1
ip rule add main
ip rule add default
Правила роутинга в T1 прописаны правильно, т.к. если в критерии правила не ставить fwmark - всё работает. А вот с этой fwmark трейсроут доходит только до гейтвея gw0 или gw2 (Пробовал направлять в оба). Тоесть решение о роутинге принимается правильно и пакеты уходят с сервера через правильный интерфейс, но вот на хардварном гейтвее (куда напрвлены eth0 и eth2) застревают. Последним в маршруте трейсировки любого адреса находится адрес указаного гейтвея и дальше не идёт :(
Почему такое может быть? Какая разница использую я марки или нет? Они же ведь только в кернеле сущевствуют. Почему хост-гейтвей не пропускает маркированые пакеты? Или есть ещё способы направлять маршруты по портам и протоколам?