Суть проблемы в следующем:Есть роутер с тремя интерфейсами:
rl0 - смотрит в сторону 1-го провайдера,
rl1 - смотрит в сторону 2-го провайдера,
fxp0 - смотрит в сторону локальной сети. Локальная сеть разделена на две подсети.
В качестве роутера комп с FreeBSD v.7.1 - STABLE.
На каждом из интерфейсов провайдеров установлен NAT. Ядро скомпилировано с поддержкой
множественных таблиц маршрутизации (ROUTETABLE=2). В таблицы внесены default-маршруты.
В первую таблицу для первого провайдера, во вторую - для второго.
Задача - банальна:
Пользователей из локальной сети распределить по двум разным каналам.
Пытаюсь для этого использовать новую примочку для ipfw - setfib.
Наткнулся на проблему: после преобразования NATом на втором интерфейсе пакеты пытаются уйти через первый интерфейс игнорируя при этом вторую таблицу маршрутов.
======
setfib 0 route add default XXX.XXX.XXX._GW
setfib 1 route add default YYY.YYY.YYY._GW
======
ipfw add 10 setfib 0 from 111.ZZZ.ZZZ.ZZZ to any
ipfw add 20 setfib 1 from 222.ZZZ.ZZZ.ZZZ to any
ipfw add 100 divert natA all from 111.ZZZ.ZZZ.ZZZ to any out via rl0
ipfw add 110 divert natA all from any to XXX.XXX.XXX._MY in via rl0
ipfw add 120 pass all from XXX.XXX.XXX._MY to any out via rl0
ipfw add 200 divert natB all from 222.ZZZ.ZZZ.ZZZ to any out via rl1
ipfw add 210 divert natB all from any to YYY.YYY.YYY._MY in via rl1
ipfw add 220 pass all from YYY.YYY.YYY._MY to any out via rl1
т.е. на 200-м правиле пакет из второй подсети преобразуется и вместо интерфейса rl1 пытается выйти через rl0.
Вопрос: как заставить преобразованные пакеты выходить через свой интерфейс?