пʼятниця, 13 лютого 2009 р.

Разруливание разных программ в разные каналы

Из раздела "вдруг еще кому пригодится"
Условия: есть несколько внешних каналов. В моём случае это основное ethernet подключение и vpn поверх него
Задача: управлять каким программам через какой канал ходить в интернет.
Необходимо: freebsd 7-stable после r180774 (Thu Jul 24 2008, 7.1-RELEASE подходит)
Пересобираем ядро, добавив такую опцию:
options         ROUTETABLES=16           # max 16. 1 is back compatible.

После этого в основной route table оставляем default на основной канал, во второй добавляем default на второй канал методом sudo setfib 1 route -n add 0 <default_gw2> . После этого команды, которые необходимо отправлять в инет через второй канал, запускаем методом setfib 1 <program> . Запускать можно от обычного пользователя.
Для vpn, поднимаемого mpd, я себе написал скрипт такого содержания:

#!/bin/sh

REMOTEIP=$4

setfib 1 route -n delete 0/0
setfib 1 route -n add 0/0 $REMOTEIP

и прописал его как set iface up-script
UPD: sem сделал поддержку static/default route для разных fib в rc.d/routing: conf/132476

Немає коментарів: