сперто здесь http://www.opennet.ru/base/net/adv_route_qos.txt.html
Code:
4. Advanced Routing.
Теперь я приведу несколько примеров, иллюстрирующих возможности
table-routing.
Для начала рассмотрим вариант простейшей маршрутизации по адресу src.
Предположим, у нас есть высокоскоростной и дорогой линк на провайдера
(xDSL) и медленный, но дешёвый линк по коммутируемуму доступу
(dial-up). Маршрут по умолчанию в основной таблице установлен на xDSL,
но мы хотим одну из машин внутренней сети направить в нашу медленную
связь, и освободить таким образом основной канал. Теперь мы создадим
для этой машины отдельную таблицу маршрутов, которую назовем Manager:
# echo 100 Manager >> /etc/iproute2/rt_tables
Далее создаем правило-селектор по адресу нашей выделенной машины,
чтобы маршрутизация для нее переходила в новую таблицу:
# ip rule add from 191.216.121.1 table Manager
Осталось добавить маршрут по умолчанию в таблицу Manager (там пока
пусто), и сбросить кэш маршрутов:
# ip route add default via 191.216.121.14 dev ppp2 table Manager
# ip route flush cache
Все готово. Здесь ppp2 - наш дешёвый линк. Конечно это можно было
сделать и не создавая отдельную таблицу маршрутов, это просто пример
работы с таблицами.
Теперь предположим, что нам надо направить в dial-up весь SMTP трафик,
идущий с внутреннего адреса. Используя iptables помечаем пакеты SMTP:
# iptables -t mangle -I PREROUTING -p tcp -s 10.0.0.1 --sport 25 -j MARK --set-mark 0x10
Маскарадим отмеченные пакеты, и отправляем их в таблицу Manager,
содержащую маршрут в ppp2:
# ip rule add fwmark 10 preference 200 nat 191.216.121.2 table Manager