Суть проблемы в следующем:Есть роутер с тремя интерфейсами:
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 anyipfw 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 rl0ipfw 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.
Вопрос: как заставить преобразованные пакеты выходить через свой интерфейс?
>[оверквотинг удален]
> 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только надо не забыть в ядре скомпилисть формардинг для ипфв
>[оверквотинг удален]
> /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
>ты же фактически просто распределяешь трафик РУЧКАМИ в соответствии от
внутренней подсети, а надо чтобы оно автоматически равномерно
распределялось...я это решил с помошью pf (суперская штука!)
мне когда-то помогла эта статья http://www.openbsd.org/faq/pf/pools.html
>ты же фактически просто распределяешь трафик РУЧКАМИ в соответствии от
>внутренней подсети, а надо чтобы оно автоматически равномерно
>распределялось...Кому надо? Мне - не надо, мне как раз надо, чтобы разные клиенты по разным каналам работали. Приведенные мной строки - это суть того, как у меня сделано, все сложнее, там ИП нужнык клиентов из мискля берутся, в зависимости от их тарифных пакетов в разные каналы :)
Топикстартеру, как я понял, тоже не нужно что-то автоматически равномерно распределять
>[оверквотинг удален]
>>внутренней подсети, а надо чтобы оно автоматически равномерно
>>распределялось...
>
>Кому надо? Мне - не надо, мне как раз надо, чтобы разные
>клиенты по разным каналам работали. Приведенные мной строки - это суть
>того, как у меня сделано, все сложнее, там ИП нужнык клиентов
>из мискля берутся, в зависимости от их тарифных пакетов в разные
>каналы :)
>
>Топикстартеру, как я понял, тоже не нужно что-то автоматически равномерно распределятьну может я неправильно понял вопрос...
но у меня была задача
1. обеспечить РАВНОМЕРНОЕ занимание обоих каналов
2. в случае падения одного канала, чтобы все перетекало в другой
VitalyMoiseev респект и увжуха! :-)Сделал по предложенному. Просмотрел логи. Пакеты ходят непонятно как, но РАБОТАЕТ!
Огромное спасибо!
>VitalyMoiseev респект и увжуха! :-)
>
>Сделал по предложенному. Просмотрел логи. Пакеты ходят непонятно как, но РАБОТАЕТ!
>
>Огромное спасибо!Велкам. Все там очень просто :)
Суть - пакет после НАТА выходит уже с ИП этого ната и, понятно, пытается уйти по дефаулт роуту. А мы его форвардим на нужный именно для этого ИП роутер. И все.