Наверное меня сейчас закидают помидорами, т.к. тема уже здесь вроде как подымалась, но все равно прошу помощи...
Есть сервер, подключенный по двум каналам(eth1, eth2) к двум разным провайдерам. Настроены две таблицы маршрутизации, транзитный трафик маркируется и отправляется по нужному каналу, никаких коллизий с неправильным NAT, все красиво и отлаженно работает.
В таблице маршрутизации main на сервере в качестве default gw указан первый провайдер. Встал вопрос, как сделать так, чтобы весь трафик ЛОКАЛЬНОГО пользователя на сервере(pinkbyte@server) отправлялся по ДРУГОМУ default gw(точнее по другой таблице маршрутизации)? Пробовал маркировать трафик в mangle/OUTPUT - ничего не вышло, все равно идет через 1 маршрут. Покурив Iptables HOWTO понял, что таким образов ничего и не получиться, ибо для исходящих(не транзитных) пакетов СНАЧАЛА определяется маршрут, а уже ПОТОМ они отправляются в iptables.
Гугление дало мне пищу для ума в виде patch-o-matic-ng для iptables, конкретно: «ROUTE target», с помощью которого можно изменить решение о маршрутизации непосредственно в iptables(кто-то считает что это не тру, но других альтернатив я не нашел).
Собственно казалось бы - в чем вопрос? patch-o-matic-ng я скачал и патч ROUTE даже наложился без ошибок... вроде бы... пока я не начал собирать ядро. вот тут то меня и ждал облом в виде «структура sk_buff не содержит в себе элемента dst»(точный текст сейчас привести не могу).
Собственно вопрос: как этим patch-o-matic пользоваться и нет ли альтернативных решений проблемы? Каким нибудь образом «превратить» исходящий трафик в транзитный?(чувствую ересь в этой фразе, но все же...)
P.S. Дистрибутив - Gentoo. Ядра пробовал разные - от 2.6.29-vanilla до 2.6.31-zen включительно(естественно родные гентушные тоже не обошел стороной). Ошибка везде одна и та же...