The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Один шлюз, два провайдера и две таблицы маршрутов"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от kassy_k email(ok) on 17-Дек-08, 01:12 
Суть проблемы в следующем:

Есть роутер с тремя интерфейсами:
  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.

Вопрос: как заставить преобразованные пакеты выходить через свой интерфейс?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от VitalyMoiseev email on 17-Дек-08, 01:46 
>[оверквотинг удален]
>  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

только надо не забыть в ядре скомпилисть формардинг для ипфв

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от vagif email on 17-Дек-08, 09:48 

>[оверквотинг удален]
> /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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от VitalyMoiseev email on 17-Дек-08, 10:55 
>ты же фактически просто распределяешь трафик РУЧКАМИ в соответствии от
>внутренней подсети, а надо чтобы оно автоматически равномерно
>распределялось...

Кому надо? Мне - не надо, мне как раз надо, чтобы разные клиенты по разным каналам работали. Приведенные мной строки - это суть того, как у меня сделано, все сложнее, там ИП нужнык клиентов из мискля берутся, в зависимости от их тарифных пакетов в разные каналы :)

Топикстартеру, как я понял, тоже не нужно что-то автоматически равномерно распределять

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от vagif email on 17-Дек-08, 11:29 
>[оверквотинг удален]
>>внутренней подсети, а надо чтобы оно автоматически равномерно
>>распределялось...
>
>Кому надо? Мне - не надо, мне как раз надо, чтобы разные
>клиенты по разным каналам работали. Приведенные мной строки - это суть
>того, как у меня сделано, все сложнее, там ИП нужнык клиентов
>из мискля берутся, в зависимости от их тарифных пакетов в разные
>каналы :)
>
>Топикстартеру, как я понял, тоже не нужно что-то автоматически равномерно распределять

ну может я неправильно понял вопрос...
но у меня была задача
1. обеспечить РАВНОМЕРНОЕ занимание обоих каналов
2. в случае падения одного канала, чтобы все перетекало в другой

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от kassy_k email(ok) on 17-Дек-08, 10:45 
VitalyMoiseev респект и увжуха! :-)

Сделал по предложенному. Просмотрел логи. Пакеты ходят непонятно как, но РАБОТАЕТ!

Огромное спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Один шлюз, два провайдера и две таблицы маршрутов"  
Сообщение от VitalyMoiseev email on 17-Дек-08, 11:00 
>VitalyMoiseev респект и увжуха! :-)
>
>Сделал по предложенному. Просмотрел логи. Пакеты ходят непонятно как, но РАБОТАЕТ!
>
>Огромное спасибо!

Велкам. Все там очень просто :)
Суть - пакет после НАТА выходит уже с ИП этого ната и, понятно, пытается уйти по дефаулт роуту. А мы его форвардим на нужный именно для этого ИП роутер. И все.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру