>[оверквотинг удален]
> rl0 - смотрит в сторону 1-го провайдера,
> rl1 - смотрит в сторону 2-го провайдера,
> fxp0 - смотрит в сторону локальной сети. Локальная сеть разделена
>на две подсети.
>
>В качестве роутера комп с FreeBSD v.7.1 - STABLE.
>На каждом из интерфейсов провайдеров установлен NAT. Ядро скомпилировано с поддержкой
>множественных таблиц маршрутизации (ROUTETABLE=2). В таблицы внесены default-маршруты.
>В первую таблицу для первого провайдера, во вторую - для второго.
>зачем так сложно?
у меня роутер с 3 внешними каналами, все решается элементарно
основные куски правил:
поднимаем сколько нужно натов на разных ИП:
/sbin/natd -f /etc/natd.conf -a ip_isp_1 -p 8671
/sbin/natd -f /etc/natd.conf -a ip_isp_2 -p 8672
/sbin/natd -f /etc/natd.conf -a ip_isp_3 -p 8673
далее дивертами раскидываем разных клиентов на разные наты:
/sbin/ipfw add 819 divert 8671 ip from 192.168.101.0/24 to any out via fxp0
/sbin/ipfw add 820 divert 8672 ip from 192.168.103.0/24 to any out via fxp0
/sbin/ipfw add 821 divert 8673 ip from 192.168.104.0/24 to any out via fxp0
при этом с ip_isp_1 все уходит по дефаулт роутер, а вот второй и третий - форвардим на соответствующие ip роутеров провов:
/sbin/ipfw add 970 fwd ip_router_isp_2 ip from ip_isp_2 to any out
/sbin/ipfw add 980 fwd ip_router_isp_3 ip from ip_isp_3 to any out
ну и, естественно, диверты в нужные порты для входящих пакетов извне:
/sbin/ipfw add 990 divert 8671 ip from any to ip_isp_1 in via fxp0
/sbin/ipfw add 991 divert 8672 ip from any to ip_isp_2 in via re0
/sbin/ipfw add 992 divert 8673 ip from any to ip_isp_3 in via re1
все работает отлично
ps: фря 6.4
только надо не забыть в ядре скомпилисть формардинг для ипфв