Andrey Nikitin wrote:
Хотелось бы настроить хост(etch) так,чтобы скачка больших файлов (руками запущенные wget, torrent-клиенты) проходила бы через unlim-шлюз, а остальной доступ - через wide-шлюз (по умолчанию).Как научить wget и torrent ходить не через дефолтный маршрут, или выбрать их аналоги, умеющие это делать? И что прописать в netfilter?
Задача поставлена не совсем корректно. Приложения работают с прикладными протоколами поверх неких транспортных (TCP или UDP). Ни о каких маршрутах они не знают. Этим занимается сетевой стек ОС. В общем случае нужен policy routing на основе используемого протокола прикладного уровня. Идеологически верно для этого использовать iptables вместе с iproute2, однако для простоты можно поставить из patch-o-matic цель ROUTE, которая позволяет указывать next hop, используя только правила iptables. Классифицировать трафик проще всего по портам назначения. Можно и более продвинуто, с помощью модуля layer7.
Приблизительно так будет выглядеть правило, направляющее HTTP через интерфейс eth0:
iptables -A PREROUTING -t mangle -p tcp --dport 80 -j ROUTE --oif eth0