Маршрутизация в FreeBSD

Материал из Xgu.ru

Перейти к: навигация, поиск


Просмотр таблицы маршрутизации:

netstat -r

Изменение таблицы маршрутизации:

route

Конфигурационный файл для хранения информации о статических маршрутах:

/etc/rc.conf

В более сложных случаях, когда информации в таблице маршрутизации не хватает, для маршрутизации может использоваться ipfw.

Например, для маршрутизации по политике (policy routing), когда маршрут определяется не адресом получателя, а адресом отправителя, нужно включить поддержку ipfw в ядре

 options IPFIREWALL
 options IPFIREWALL_FORWARD

И добавить в правила:

 00100 allow ip from any to any via lo0
 00500 allow ip from IP1 to IP1/IP1-netmask
 00501 fwd IP1-GW ip from IP1 to any
 00600 allow ip from IP2 to IP2/IP2-netmask
 00601 fwd IP2-GW ip from IP2 to any

При использовании pf вместо ipfw возможностей для маршрутизации ещё больше. Подробнее: [1].

[править] Множественные таблицы маршрутизации в FreeBSD

В FreeBSD начиная с версии 7 поддерживаются множественные таблицы маршрутизации (FIB, Forwarding Information Base). Это значит, что для разных видов трафика, в заивимости от каких-либо критериев, будут выбираться различные таблицы маршрутизации (нечто похожее на ip rule из iproute2 в Linux).

Для поддержки нескольких таблиц маршрутизации в ядре оно должно быть собрано с опцией

 options ROUTETABLES=2 # максимум 16

Пример настройки:

/usr/sbin/setfib 1 /sbin/route delete default
/usr/sbin/setfib 1 /sbin/route add default 20.0.0.1

### assing route tables to interfaces
### Note: uncomment following lines if you are using ipfw. Leave it if you are using PF.
###
ipfw -f flush
ipfw add allow ip from any to any via lo0
ipfw add setfib 0 ip from any to any via wan0
ipfw add setfib 1 ip from any to any via wan1
ipfw add allow ip from any to any

[править] Дополнительная информация

Подробнее о множественных таблицах маршрутизации: