Распределение трафика между двумя каналами во FreeBSD


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


В ядре отвечает за это опция:

options ROUTETABLES=[количество таблиц]

Распределения трафика будет осуществляться средствами пакетного фильтра ipfw.

Задаем маршруты по умолчанию:

setfib 0 route add default 1.0.1.1 # таблица по умолчанию
setfib 1 route add default 1.1.1.1 # новая таблица

Файл конфигурации для запуска ipfw:

cmd="/sbin/ipfw"
$cmd add 10 check-state
$cmd add 20 prob 0.5 setfib 0 tcp from 192.168.0.0/16 to not 192.168.0.0/16 setup keep-state
$cmd add 30 setfib 1 tcp from 192.168.0.0/16 to not 192.168.0.0/16 setup keep-state
$cmd add 40 allow all from any to any

Таким образом мы задаем распределение трафика 50/50. Если каналы не равноценные
то нужно выставить процентную весомость этих каналов.

Трансляция адресов (NAT).

Под эту задачу я выбрал ipnat, реализацию NAT от фаервола ipf.

пример /etc/ipnat.rules:

map vlan0 192.168.0.0/16 -> 1.0.1.1/32
map tun0 192.168.0.0/16 -> 1.1.1.1/32

Также можно выбрать демон natd или новый, работающий на уровне ядра, NAT,
который появился во FreeBSD 7.

Обновлено: 12.03.2015