[Sysadmins] iptables, -j MARK и iproute2

Olvin =?iso-8859-1?q?olvin_=CE=C1_rambler=2Eru?=
Вс Июл 30 20:57:57 MSD 2006


ALM2.4

Выход в инет был через обычный модем по dialup. Теперь появляется ADSL, 
но хочется, чтобы тот, кто платит, ходил через ADSL, а кто не платит, 
так и остался на dialup. Пользователей различаю по UID. ADSL-соединение 
_постоянно_ (прерывать недопустимо), а модемное - эпизодическое.

Как сделать?

Я пробовал
iptables -t mangle -A OUTPUT \
          -m owner --uid-owner 500 \
          -j MARK --set-mark 1
ip route add all via 5.6.7.9 dev eth1 table 100
ip rule add fwmark 1 table 100
ip route flush cache

но всё равно пакеты от пользователя с uid=500 идут через ppp0. Поскольку 
замена fwmark 1 на fwmark 0 всё-таки даёт перенаправление на eth1, то 
заключаю, что дело в первой команде - она не помечает пакет, как её просят.

В документе 
file:/usr/share/doc/alt-docs/master/ch06s05.html#distrib.setup.network.firewall
Есть схема, из которой видно, что решение о маршрутизации принимается 
ещё до того, как отработает моё правило. Т.е. первая команда бесполезна.

Что делать? Надо различать именно по UID локального пользователя.






Подробная информация о списке рассылки Sysadmins