Страница 1 из 1

Схема/правила на 2 провайдера?

Добавлено: 2009-12-23 17:36:41
Medison
Почитал статью http://www.lissyara.su/articles/freebsd ... /pbr+ipfw/ и обсуждение http://forum.lissyara.su/viewtopic.php?t=3014
- за деталями логика теряется, skipto раньше не юзал, торможу че-то :)

Опустим детали, пусть только ethernet, пусть файрвол пропускает все порты.
Пусть есть 3 сетевые карты:

Код: Выделить всё

fxp0=ip1/nm1 - провайдер 1
fxp1=ip2/nm2 - провайдер 2
fxp2=ip3/nm3 - локалка
gw1 - default route 1 провайдера
gw2 - default route 2 провайдера
Можно ли сделать с помощью ipfw и natd так, чтобы пакеты уходили теми же путями, что и пришли?

Хочу понять принцип (реально задачка примерно такая: имею gw1=defaut, ip3/nm3 ходит в инет, на ip1 висят основные сервисы, а на ip2 хочу повесить vpn с входом через gw2, вторую mx-запись также с входом через gw2 и т.п.).

Схема, описание, правила, ссылки - любая информация подойдет.

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-23 17:50:19
terminus
http://forum.lissyara.su/viewtopic.php?f=4&t=20814

тут уже боролись. с переменным успехом...

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-23 17:54:50
hizel

Код: Выделить всё

uname -a

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-23 18:22:43
Medison
hizel писал(а):

Код: Выделить всё

uname -a
FreeBSD 7.2-STABLE

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-23 18:43:37
Medison
terminus писал(а):http://forum.lissyara.su/viewtopic.php?f=4&t=20814

тут уже боролись. с переменным успехом...
Спасибо, читаю :)

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-24 18:32:32
Medison
terminus писал(а):http://forum.lissyara.su/viewtopic.php?f=4&t=20814
тут уже боролись. с переменным успехом...
У меня заработал такой вариант:

Код: Выделить всё

ipfw add 00400 allow ip from any to me via fxp1
ipfw add 00500 fwd gw2 ip from ip2 to not me
С setfib че-то пока не врубаюсь, документации нет.

Такой вариант не прошел:

Код: Выделить всё

setfib 1 route add default gw2
ipfw add 00400 setfib 1 ip from any to any in recv fxp1
ipfw add 00500 allow ip from any to any via fxp1
По умолчанию работает таблица 0, поскольку в 0 - все путем, пытаюсь настроить только 1.
Чем отличаются команды

Код: Выделить всё

setfib 1 netstat -rn
и
setfib -1 netstat -rn

Что происходит при

Код: Выделить всё

ipfw add setfib 1 ip from ...
Как использовать новые таблицы маршрутизации?

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-24 21:20:51
terminus
Just for record, как грится...
я тут сейчас ради интереса игрался с setfib в ipfw и выяснил, что на проходе OUT эта конструкция не влияет на трафик :(

У nuclight'a было обьяснение про то как трафику проходящему через рутер, на основе таблицы маршрутизачии, назначается, через какой сетевой интерфейс он должен быть отослан и на какой рутер. Так вот, я не знаю всей кухни, но выходит, что если делать setfib на проходе IN то позже на проходе OUT эта метка учитывается системой и в соответствии с ней назначаются сетевой интерфейс и рутер. А если сделать setfib на проходе OUT (когда сетевой интерфейс и рутер уже были назначенны перед этим) то система не станет еще раз пересчитывать параметры передачи как при fwd - она не учитывает, что мы поставили новую метку setfib. Вот такие пироги. Поэтому-то мой пример у kpp не заработал тогда...

---
Чем отличаются команды
setfib 1 netstat -rn
и
setfib -1 netstat -rn
Ничем. Почитайте man setfib - можно применять обе формы.
Что происходит при
ipfw add setfib 1 ip from ...
К пакету прикрепляется внутренняя метка, увидев которую, система понимает, что для расчета маршрута для передачи пакета, надо использовать информацию не из таблици маршрутизации по-умолчанию, а брать ту таблицу, чей номер указан в setfib.
Как использовать новые таблицы маршрутизации?
Дофига применений. Джайлы например можно вешать на отдельные таблицы маршрутизации. Можно разделять трафик проходящий через рутер на несколько потоков и направлять через разных провайдеров (вручную или динамически). Применений море.

Re: Схема/правила на 2 провайдера?

Добавлено: 2009-12-25 14:20:07
Medison
terminus писал(а):... на проходе OUT эта конструкция не влияет на трафик
...
ipfw add setfib 1 ip from ...
- К пакету прикрепляется внутренняя метка, увидев которую, система понимает, что для расчета маршрута для передачи пакета, надо использовать информацию не из таблици маршрутизации по-умолчанию, а брать ту таблицу, чей номер указан в setfib.
Вроде идею уловил, но почему-то не работает:

Код: Выделить всё

setfib 1 route add default gw2
ipfw add 00400 setfib 1 ip from any to me in via fxp1
ipfw add 00500 allow ip from any to any via fxp1
- в этом примере я пытаюсь поставить метку на пакеты, которые приходят из сети провайдера 2

ping ip2 снаружи через провайдера 2 - работает
при попытке установить соедиение ip2:1723 (vpn) tcpdump показывает входящие пакеты, а назад ничего не уходит...

А в таком варианте все работает:

Код: Выделить всё

ipfw add 00400 allow ip from any to me via fxp1
ipfw add 00500 fwd gw2 ip from ip2 to not me