pf nat + 2 провадера + vlan'ы
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
pf nat + 2 провадера + vlan'ы
Добрый день уважаемые. Имеем сервер с FreeBsd 8.2 на борту, ядро собрано с поддержкой pf (для nat) и ipfw ( для шейпинга), имеются 3-и сетевые карты: bge0 - локальная сеть поделенная на 6 vlan (1 управл., 5 подсетей), em0 - один провайдер, em1 - второй провайдер. Нужно сделать nat vlan1+vlan3 на em0 и vlan2+vlan4+vlan5 на em1. Сначало делал балансировку round-robin - но это жесть, которая покарала меня сайтами со скачкой по IP. Подскажет кто адекватные правила отправки пакетов по схеме? Все с виду просто, но с pf к несчастью не работал. Заранее сильно благодарен.
P.S.
Как там насчет шейпинга на pf + altq? Пару лет назад говорили, что не стоит использовать и ipfw получше будет...
P.S.
Как там насчет шейпинга на pf + altq? Пару лет назад говорили, что не стоит использовать и ipfw получше будет...
Последний раз редактировалось f_andrey 2012-01-14 22:44:01, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. приводите полную диагностику, больше логов больше вероятности ответа, а не флуда
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. приводите полную диагностику, больше логов больше вероятности ответа, а не флуда
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- сержант
- Сообщения: 258
- Зарегистрирован: 2009-10-31 22:13:04
- Контактная информация:
Re: pf nat + 2 провадера + vlan'ы
Нормально pf + altq шейпит. а по схеме в чем проблема сделать так
nat on $em0 from $vlan1 to any -> ($em0) и т.д.
nat on $em0 from $vlan1 to any -> ($em0) и т.д.
-
- проходил мимо
Re: pf nat + 2 провадера + vlan'ы
А со шлюзами как поступить? Надо что бы через свои шлюзы ходило.
-
- сержант
- Сообщения: 258
- Зарегистрирован: 2009-10-31 22:13:04
- Контактная информация:
Re: pf nat + 2 провадера + vlan'ы
По поводу шлюзов не понял как-то поподробней можно желательно с схемкой сети.
-
- проходил мимо
Re: pf nat + 2 провадера + vlan'ы
Два провайдера, соответственно два шлюза от них. В rc.conf прописан только один(default) роут. Как сделать что бы в фаерволле пакеты ходили по своим шлюзам? route-to? Можно какой нить пример?
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: pf nat + 2 провадера + vlan'ы
Насколько мне известно, то route-to не работает во FreeBSD (вроде бы в 9-ке типа обновили pf, но касательно этой опции не уверен). Вместо него можно применять reply-to. Вот как я делал http://skeletor.org.ua/?p=1263
-
- сержант
- Сообщения: 160
- Зарегистрирован: 2007-11-19 10:47:09
Re: pf nat + 2 провадера + vlan'ы
Уже больше года нормально работает конфа вида
в
так что нормально route-to работает.
а reply-to это для того, чтобы сервисы отвечали через те шлюзы, с которых приходит запрос.
Вот это например чтобы sshd на обоих ip был доступен. Без этих правил ответный пакет всегда будет уходить через default gw нулевой таблицы маршрутизации.
ps. в 8-й фре вроде как pf как в openbsd 4.3 - так что бери официальную доку по pf от openbsd 4.3 и читай - там все разжевано.
Код: Выделить всё
...
nat on $ifSp1 from <nat_isp1> to any -> ($ifSp1)
nat on $ifSp2 from <nat_isp2> to any -> ($ifSp2)
...
pass in on $ifLan route-to ($ifSp1 $gwSp1) inet from <nat_isp1> to any
pass in on $ifLan route-to ($ifSp2 $gwSp2) inet from <nat_isp2> to any
...
Код: Выделить всё
[root@gw /]# uname -a
FreeBSD gw.tkor.loc 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Sat Mar 19 12:33:14 MSK 2011 root@gw.tkor.loc:/usr/obj/usr/src/sys/D4 amd64
[root@gw /]#
а reply-to это для того, чтобы сервисы отвечали через те шлюзы, с которых приходит запрос.
Код: Выделить всё
#------ sshd
pass in quick on $ifSp2 reply-to ($ifSp2 $gwSp2) inet proto tcp from any to $ifSp2 port 16322 keep state
pass in quick on $ifSp1 reply-to ($ifSp1 $gwSp1) inet proto tcp from any to $ifSp1 port 16322 keep state
ps. в 8-й фре вроде как pf как в openbsd 4.3 - так что бери официальную доку по pf от openbsd 4.3 и читай - там все разжевано.
-
- проходил мимо
Re: pf nat + 2 провадера + vlan'ы
Код: Выделить всё
ext_if_a="em0"
ext_gw_a="шлюз"
ext_if_b="em1"
ext_gw_b="шлюз2"
int_if101="vlan101"
int_if102="vlan102"
int_if103="vlan103"
int_if104="vlan104"
int_if105="vlan105"
nat on $ext_if_a from $int_if101 to any -> ($ext_if_a)
nat on $ext_if_a from $int_if103 to any -> ($ext_if_a)
nat on $ext_if_b from $int_if102 to any -> ($ext_if_b)
nat on $ext_if_b from $int_if104 to any -> ($ext_if_b)
nat on $ext_if_b from $int_if105 to any -> ($ext_if_b)
pass in quick reply-to ($ext_if_a $ext_gw_a) tagged EXT_IF_A keep state
pass in quick reply-to ($ext_if_b $ext_gw_b) tagged EXT_IF_B keep state
pass out route-to ( $ext_if_a $ext_gw_a ) inet from $ext_if_a:0 keep state
pass out route-to ( $ext_if_b $ext_gw_b ) inet from $ext_if_b:0 keep state

-
- сержант
- Сообщения: 160
- Зарегистрирован: 2007-11-19 10:47:09
Re: pf nat + 2 провадера + vlan'ы
ещё бы оно работало ...
Так должно работать.
Ну а дальше можно упрощать. Например сгруппировав сети по таблицам.
Ну и соответственно добавив рулежку межвиланным траффиком в конец. (в pf к пакету применяется последнее подходящее правило)
Код: Выделить всё
...
nat on $ext_if_a from $int_if101:network to any -> ($ext_if_a)
nat on $ext_if_a from $int_if103:network to any -> ($ext_if_a)
nat on $ext_if_b from $int_if102:network to any -> ($ext_if_b)
nat on $ext_if_b from $int_if104:network to any -> ($ext_if_b)
nat on $ext_if_b from $int_if105:network to any -> ($ext_if_b)
block all
pass in on $int_if101 route-to ($ext_if_a $ext_gw_a) inet from $int_if101:network to any
pass in on $int_if103 route-to ($ext_if_a $ext_gw_a) inet from $int_if103:network to any
pass in on $int_if102 route-to ($ext_if_b $ext_gw_b) inet from $int_if102:network to any
pass in on $int_if104 route-to ($ext_if_b $ext_gw_b) inet from $int_if104:network to any
pass in on $int_if105 route-to ($ext_if_b $ext_gw_b) inet from $int_if105:network to any
# Ну и что то типа
pass out on $ext_if_a from $ext_if_a to any
pass out on $ext_if_b from $ext_if_b to any
Ну а дальше можно упрощать. Например сгруппировав сети по таблицам.
Ну и соответственно добавив рулежку межвиланным траффиком в конец. (в pf к пакету применяется последнее подходящее правило)
-
- проходил мимо
Re: pf nat + 2 провадера + vlan'ы
Вроде что то пошуршало, щас правда в логах tcpdump одни Refused- 0/0/0 и 2+ A? от адресов dns серверов провайдера...
-
- сержант
- Сообщения: 258
- Зарегистрирован: 2009-10-31 22:13:04
- Контактная информация:
Re: pf nat + 2 провадера + vlan'ы
А вообще если два канала от разных провайдеров я бы динамическую маршрутизацию крутил.
-
- проходил мимо
Re: pf nat + 2 провадера + vlan'ы
Огромнейшее спасибо suspender. Все прекрасно заработало, проблема dns была в простой перезагрузке роутера клиента...