К слову pf является ядерным натом и очень хорошо справляется с большими нагрузками - думаю 300 мегабит прокачает без проблем, только тогда обязательно нужно включить полинг - т.к. машина просто загнется от прерываний...
Вобщем конфигурация подогнана по 2 канала и 3 ip пула.
10.20.0.0/16 - использует http с 2 канала и все остальное с 1 го.
10.30.0.0/16 - все идет с 1 го канала
10.40.0.0/16 - все идет с 2 го канала
Для включения pf следует:
1. Собрать ядро с данными опциями
Код: Выделить всё
device pf
device pflog
device pfsync
Код: Выделить всё
pf_enable="YES"
pf_rules="/etc/pf.conf"
(ip адреса естественно подставить свои)
Код: Выделить всё
set optimization aggressive
# Указываем используемые сетевые интерфейсы:
ext_if_a = "fxp0"
ext_if_b = "fxp1"
# Для каждого из каналов задаем IP-адрес шлюза:
ext_gw_a = "192.168.2.1"
ext_gw_b = "192.168.1.1"
ext_ip_a = "192.168.2.2"
ext_ip_b = "192.168.1.2"
nat on $ext_if_a inet from { 10.20.0.0/16 } to any port { 80, 81, 8080 } -> $ext_ip_b:0
nat on $ext_if_a inet from { 10.20.0.0/16, 10.30.0.0/16 } to any -> $ext_ip_a:0
nat on $ext_if_a inet from { 10.40.0.0/16 } to any -> $ext_ip_b:0
# Важный момент: направляем исходящие пакеты в канал, соответствующий адресу источника:
pass in all
pass out all
pass out route-to ($ext_if_a $ext_gw_a) inet from ($ext_if_a) to !(self:network) keep state
pass out route-to ($ext_if_b $ext_gw_b) inet from ($ext_if_b) to !(self:network) keep state
##// Разрешаем входящие подключения к обслуживаемым TCP-сервисам:
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto tcp to any keep state
pass in on $ext_if_a inet proto tcp from ($ext_if_a:network) to any keep state
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) inet proto tcp to any keep state
pass in on $ext_if_b inet proto tcp from ($ext_if_b:network) to any keep state
4. Включить нат командой pfctl -e
5. Загрузить параметры из файла командой pfctl -f /etc/pf.conf
Дальше можно отключить Ваш natd или ipnat.
Разумеется модуль pf можно добавить в систему командой kldload pf без пересборки ядра (только следует включить эту команду в автозагрузку.
А эту инструкцию можно добавить в инструции на сайте.