Страница 1 из 1
IPFW и два маршрута в Интернет
Добавлено: 2014-02-03 16:10:56
admin_sv
Есть два канала в Интернет. Стоит роутер с Freebsd 8.4 на котором вкомпилин ipfw. Нужна помощь в реализации одновременного доступа к роутеру из вне.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-07 4:33:01
reinover
Если хочешь запускать разные приложения\сервисы слушающие разные каналы, то копай в сторону setfib
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-09 2:30:18
harmless
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-17 17:15:39
admin_sv
Я немного переделаю вопрос, как через pf пустить трафик в 2 канала с сохранением сеанса?
с первым вопросом я почти разобрался, подглядел такой вариант:
Код: Выделить всё
lan_ip="10.10.10.0/28"
net_1="re0" # 192.168.2.2
net_2="em0" # 10.10.0.2
lan="em1" # 10.10.10.1
out_1="192.168.2.2"
out_2="10.10.0.3"
in_1="10.10.10.1"
gw_1="192.168.2.1"
gw_2="10.10.0.1"
nat on $net_1 from $lan_ip to any -> $net_1
nat on $net_2 from $lan_ip to any -> $net_2
pass in quick from ($net_1:network) tagged EXT_IF_A keep state
pass in quick reply-to ($net_1 $gw_1) tagged EXT_IF_A keep state
pass in quick from ($net_2:network) tagged EXT_IF_B keep state
pass in quick reply-to ($net_2 $gw_2) tagged EXT_IF_B keep state
но правда не пойму как он работает, пакеты где метку получают не пойму.
Предполагаю что можно отслеживать пакеты с флагом S/SA и направлять их в определенный интерфейс и запоминать состояние, после чего все ответы слать в соответствии с состоянием. Распределение организовать за счет probability. Как вы думаете получится? Буду рад помощи.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-19 17:19:51
skeletor
Получают они метки на входе (pass in ...tagged EXT_IF_*) и на основе этой метки должны уходить через reply-to
Ещё желательно добавить такие правила:
Код: Выделить всё
pass out route-to ($ext_if_1 $gw_1) inet from ($ext_if_1) keep state
pass out route-to ($ext_if_2 $gw_2) inet from ($ext_if_2) keep state
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-21 11:42:24
admin_sv
я так написал:
Код: Выделить всё
pass in on $lan route-to ($net_1 $gw_1 ) from $lan_ip to { any, !$in_1 } keep state
tagged EXT_IF_A
в мане написано что этот ключ проверяет ключ, а пишет tag так вот его нет.
и есть вопрос в продолжение темы что даст замена keep state на synproxy state. преследую цель охранения маршрута за сеансом но долгий срок.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-21 12:17:11
admin_sv
Промежуточный решение найдено. Выглядит так:
Код: Выделить всё
lan_ip="10.10.10.0/28"
net_1="re0" # 192.168.2.2
net_2="em0" # 10.10.0.3
lan="em1" # 10.10.10.1
out_1="192.168.2.2"
out_2="10.10.0.3"
in_1="10.10.10.1"
gw_1="192.168.2.1"
gw_2="10.10.0.1"
nat on $net_1 from $lan_ip to any -> $net_1
nat on $net_2 from $lan_ip to any -> $net_2
pass in quick from ($net_1:network) tagged EXT_IF_A keep state
pass in quick reply-to ($net_1 $gw_1) tagged EXT_IF_A keep state
pass in quick from ($net_2:network) tagged EXT_IF_B keep state
pass in quick reply-to ($net_2 $gw_2) tagged EXT_IF_B keep state
pass in on $lan route-to ($net_1 $gw_1 ) from $lan_ip to { any, !$in_1 } probability 95% synproxy state
pass in on $lan route-to ($net_2 $gw_2 ) from $lan_ip to { any, !$in_1 } probability 5% synproxy state
keep state приводит к тому что со временем рвется сессия на https и предирчевых к ip клиента сайтах и приложениях. В случае реализации 2 шлюзов правила можно переполовинить относительно default router, пакеты туда идут сами. По результатам тестов выложу точный конфиг.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-21 18:27:14
skeletor
Действительно.
У вас несколько урезанный вариант этого
http://argo-uln.blogspot.com/2008/02/pf ... -62-3.html , поэтому не хватает меток tag для icmp.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-23 16:02:58
admin_sv
Меня icmp не очень волнует, а точнее не нужен он мне пока. Проблема в том чтобы организовать доступ к серверу по любому из внешних каналов, при этом исходящий трафик распределять между каналами (балансировать его).
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-23 17:12:54
admin_sv
В этом примере не то что мне надо, я хочу все сервесы развернуть на обе сетевки. У меня это получилось вот так
Код: Выделить всё
pass in on $net_1 from any to 10.10.0.2 tag EXT_IF_B keep state
pass in quick reply-to ($net_1 $gw_1) tagged EXT_IF_B keep state
, второй набор правил не указываю так-ка для default rote смысла не вижу, само туда пойдет.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-23 22:26:24
admin_sv
пакеты разрулил, но есть вопрос: как заставить жить долго динамическое правило. Возникает проблема с авторизацией при смене ip клиента.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-02-25 15:33:55
skeletor
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-03-04 20:09:41
admin_sv
Спасибо, но немного не то. Решение найдено, сейчас тестирую. По результатам тестов отпишу.
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-03-17 11:49:05
admin_sv
И так тест прошел успешно. Задача была объединить 2+ канала в одну полосу пропускания, при этом пользователь пройдя через конкретный шлюз весел на нем стабильно целый день. Также потом выявили потребность в распределении пользователей по каналам в процентном соотношении и в случае выявления потери соединения на канале новые пользователи туда не попадали, а старые были распределены по рабочим.
lan_ip="10.10.10.0/28"
net_1="re0"
net_2="em0"
lan="em1"
out_1="192.168.2.2"
out_2="10.10.0.3"
in_1="10.10.10.1"
gw_1="192.168.2.1"
gw_2="10.10.0.1"
table <stream_A> persist
table <stream_B> persist
PA="50%"
PB="50%"
nat on $net_1 from $lan_ip to any -> $net_1
nat on $net_2 from $lan_ip to any -> $net_2
pass in on $lan from {$lan_ip !<stream_A> !<stream_B>} to any flags S/SA probability $PA keep state (max-src-conn-rate 1/60, overload <stream_A> flush global)
pass in on $lan from {$lan_ip !<stream_A> !<stream_B>} to any flags S/SA probability $PB keep state (max-src-conn-rate 1/60, overload <stream_B> flush global)
pass in on $lan route-to ($net_2 $gw_2) from <stream_B> to any
pass in on $lan route-to ($net_1 $gw_1) from <stream_A> to any
Указаны только правила реализующие ТЗ. Дальше должно быть два скрипта.
- 1 - скрипт проверяет наличие канала.
2 - скрипт по результатам проверки корректирует вес канала(PA= ;PB=;)
Re: IPFW и два маршрута в Интернет
Добавлено: 2014-03-17 11:57:28
admin_sv
Да еще забыл указать очистки таблиц производятся в 24:00, еще одним скриптом и cron.