PF & 2 WAN GW

Вопросы настройки и работы с этой ОС.
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
hostage
проходил мимо
Сообщения: 4
Зарегистрирован: 2014-02-26 22:58:19

PF & 2 WAN GW

Непрочитанное сообщение hostage » 2014-02-26 23:09:35

немного иная ситуация, чем в соседней ветке..

OpenBSD 5.4, 2 extermal gw
round-robin не надо, надо основной канал 1, второй как резервный для захода извне (у первого и основного приватный ip). Работало. Раньше. Много лет. И на 4.9 с чуть другим синтаксисом (разобрался в конце концов). И на совсем старом pf работало, с тэгированием пакетов и ещё более древним синтаксисом. Сейчас ни в какую.

default gw - ИСП 1 (это важно для понимания). лишнее с листинга убрано, оставлена самая суть

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

# тут понятно - интерфейсы и адреса шлюзов (ip интерфесов 1.1.1.1 и 2.2.2.1)
lan_net = "192.168.10.0/24" # сетка локалки
int_if = "re0" # сетевуха внутрь
ext_if1 = "rl0" # сетевуха ИСП 1
ext_if2 = "rl1" # сетевуха ИСП 2
ext_gw1 = "1.1.1.2" # шлюз интерфейса к ИСП 1
ext_gw2 = "2.2.2.2" # шлюз интерфейса к ИСП 2
# нат с локалки на оба внешних
match out on $ext_if1 from $lan_net nat-to ($ext_if1)
match out on $ext_if2 from $lan_net nat-to ($ext_if2)
# внутренний - можно всё
pass out on $int_if to $lan_net
pass in quick on $int_if from $lan_net to $int_if
pass in quick on $int_if proto icmp
# разрешаем выход
pass out on $ext_if1
pass out on $ext_if2
# вот эти строки должны по идее класть в нужный внешний канал приходящее с любого внешнего канала
pass out on $ext_if1 from $ext_if2 route-to ($ext_if2 $ext_gw2)
pass out on $ext_if2 from $ext_if1 route-to ($ext_if1 $ext_gw1)
# это фаерволом выбираем дефолт шлюз - ИСП 1, потом оно натится и всё сладко
pass in on $int_if proto tcp from $lan_net route-to ($ext_if1 $ext_gw1)
Всё работало, можно было зайти на любой ext_if, работали пробросы rdr-to внутрь локалки, не было проблем. Накручивал скрипты переключения каналов (заменой в последней строчке 1 на 2), всё было айс. Пока не перешли на очередное ядро и очередной синтаксис pf

Что сейчас - с этими конфигами пингуем 2.2.2.1 и... правильно, пакеты приходят на ext_if2, а уходят с ext_if1. То есть нифига не пинугется.

# ext_if2, пингую адрес 2.2.2.1 с внешней машины, скажем, 5.5.5.5 - пакеты приходят... уходящих нет
tcpdump -i rl1 -n -l | grep 5.5.5.5
tcpdump: listening on rl1, link-type EN10MB
16:23:00.630616 5.5.5.5 > 2.2.2.1: icmp: echo request (DF) [tos 0x28]

# а потому что уходят с не того интерфейса, хотя адрес отправителя правильный (как такое может вообще быть?)
tcpdump -i rl0 -n -l | grep 5.5.5.5
tcpdump: listening on rl0, link-type EN10MB
16:23:18.633938 2.2.2.1 > 5.5.5.5: icmp: echo reply (DF) [tos 0x28]

читаем доки, по слухам они рулез. http://www.openbsd.org/faq/pf/ru/pools.html
ну посмотрим что там с раунд-робин

пишем:

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

lan_net = "192.168.10.0/24"
int_if = "re0"
ext_if1 = "rl0"
ext_if2 = "rl1"
ext_gw1 = "1.1.1.2"
ext_gw2 = "2.2.2.2"
# исходящие соединения nat на каждый сетевой интерфейс
match out on $ext_if1 from $lan_net nat-to ($ext_if1)
match out on $ext_if2 from $lan_net nat-to ($ext_if2)
# по умолчанию блокируем все
#block in
#block out
# разрешаем все исходящие пакеты на внутреннем интерфейсе
pass out on $int_if to $lan_net
# разрешаем все входящие пакеты предназначенные самому шлюзу
pass in quick on $int_if from $lan_net to $int_if
# балансируем исходящий трафик из внутренней сети.
pass in on $int_if from $lan_net route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin
# обычное правило "pass out" для внешних интерфейсов
pass out on $ext_if1
pass out on $ext_if2
# пропускаем пакеты с любых IP на $ext_if1 и $ext_gw1 и аналогично на $ext_if2 и $ext_gw2
pass out on $ext_if1 from $ext_if2 route-to ($ext_if2 $ext_gw2)
pass out on $ext_if2 from $ext_if1 route-to ($ext_if1 $ext_gw1)
и.. да, выход наружу идёт то по одному каналу, то по второму согласно round-robin, но.... пытаемся снаружи зайти на ext_gw2 и... всё то же самое

что делать??? возвращаться на 4.9 не предлагать ))

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: PF & 2 WAN GW

Непрочитанное сообщение Alex Keda » 2014-03-15 23:57:48

венуться на 4.9? =)
Убей их всех! Бог потом рассортирует...

ыть
проходил мимо

Re: PF & 2 WAN GW

Непрочитанное сообщение ыть » 2014-03-29 9:09:20

hostage писал(а):лишнее с листинга убрано, оставлена самая суть
без этого убранного конструкция работает на 4.9?
часто можно перепутать "какуюто фегню" с "самой сутью"..
ну и, как правильно советуют, почему бы не остаться на 4.9, если работает?
нужны веские основания для перехода.. или разработчика пинать..

hostage
проходил мимо
Сообщения: 4
Зарегистрирован: 2014-02-26 22:58:19

Re: PF & 2 WAN GW

Непрочитанное сообщение hostage » 2014-03-31 0:55:09

ыть писал(а):
hostage писал(а):лишнее с листинга убрано, оставлена самая суть
без этого убранного конструкция работает на 4.9?
часто можно перепутать "какуюто фегню" с "самой сутью"..
ну и, как правильно советуют, почему бы не остаться на 4.9, если работает?
нужны веские основания для перехода.. или разработчика пинать..
фигня - это разрешённые tcp/udp порты, пробросы внутрь лана и прочее, не так актуальное в данный момент.

npppd нужен был. да и как то.. хочется идти в ногу со временем :)

(вдогонку) поставил фрю 10ку. сделал то же самое, с точностью до синтаксиса (как в совсем старой опенке, до правил match).
пакет идущий на сам шлюз (пинг, ssh) пуляется назад с правильного интерфейса, что уже хорошо, по крайней мере доступ к машине имеем.
а вот то что работало прекрасно в этих же совсем старых опенках (где правила писались с "nat", "rdr pass") - проброс внутрь лана с тэгированием пакета с какого интерфейса он пришёл и возвратом назад куда нужно - не работает
Хотя работало как часы во всяких древних опенках типа 3.0

погуглил, похабрил. всё равно не работает. описаний куча, все сводятся к тому же что делаю я - не работает. возможно, в логике именно pf что то поломали. Исходники читать не готов :st:

в качестве костыля поставил rinetd с логированием. буду дальше думать.

Аватара пользователя
dekloper
ст. лейтенант
Сообщения: 1331
Зарегистрирован: 2008-02-24 15:43:19
Откуда: давно здесь сидим..
Контактная информация:

Re: PF & 2 WAN GW

Непрочитанное сообщение dekloper » 2014-04-02 6:32:36

на стабильной ветке (на фре) проверяли?
говорят в релизе бага есть (но там с ipfw проявилось)
неприятно конечно.. pf самому нравится, хз где он "прямее".. :oops:
ТОВАгИЩИ! БгАТЬЯ И СЕСТгЫ! ДОЛОЙ гАВНОДУШИЕ!

hostage
проходил мимо
Сообщения: 4
Зарегистрирован: 2014-02-26 22:58:19

Re: PF & 2 WAN GW

Непрочитанное сообщение hostage » 2014-04-02 10:25:19

dekloper писал(а):на стабильной ветке (на фре) проверяли?
Каюсь, на релизе, на 10-STABLE не было времени обновляться. Равно как и пробовать 9ку, скажем.
Появится возможность, соберу тестовый стенд из нескольких виртуалок, буду изучать внимательно.
Спасибо за ссылочку, очень даже может быть дело в этом - pf или ipfw возможно в данном случае именно ядро так себя показывает

Отпишусь сюда, если чего накопаю )