Разделяю трафик с локалки по таблицам. Чтобы засунуть нужные куски локалки в нужные таблицы маркирую iptables нужные Ipшники.
Вот так (mangle):
-A PREROUTING -m iprange -i eth2 --src-range 172.16.0.2-172.16.0.10 -j MARK --set-mark 0x2
-A PREROUTING -m iprange -i eth2 --src-range 172.16.0.11-172.16.0.254 -j MARK --set-mark 0x1
Всё работает замечательно и трафик идёт в нужные таблицы. Только у меня возник вопрос: почему когда используешь CONNMARK ip rule не подхватывает маркированные пакеты в нужные таблицы? Ведь отличие CONNMARK от простого MARK только в том, что первый маркирует соединения, а второй - пакеты. И первый рекомендуют как дефолт. Но почему в моём случае CONNMARK не работал, а MARK работает?
Вот такое правило ip rule:
ip rule add fwmark 0x1 lookup raw_link
ip rule add fwmark 0x2 lookup vpn_link