Условия: есть несколько внешних каналов. В моём случае это основное 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
Немає коментарів:
Дописати коментар