Зачем нужна default route в таблице main?
Описание ситуации:
- удаляю default route в таблице main
- добавляю такую же default route, но в таблицу 100, туда же роутинг на локалку.
- маркирую исходящие пакеты в mangle\OUTPUT mark 1
- добавляю правило: ip rule add fwmark 1 lookup 100
- пинг гугла - Network is unreachable, гмм ок!
- добавляю неправильный шлюз в таблицу main
- пинг гугла - внезапно - пошел! естественно через таблицу 100, в которой правильный шлюз
Смотрю netfilter packet flow : написано, что решение о роутинге принимается после mangle\OUTPUT, то есть после моей маркировки. И мой пакет должен пойти в таблицу 100, а там шлюз есть.
Вопрос – фейковый шлюз в таблице main нужен просто чтоб был?
Ниже тестовый скрипт для проверки в Virtualbox, с одним сетевым интерфейсом типа NAT:
ip ro del default
ip ro del default
ip ro del default
ip ru add fwmark 1 tab 100
ip ro rep default via 10.0.2.2 tab 100
iptables -t mangle -I OUTPUT -j MARK --set-mark 1
ping 8.8.8.8 -c2
# fail!
# add fake Gateway to the main Routing table
ip ro rep default via 10.0.2.100
ping 8.8.8.8 -c2
# success!!