IPFW как правильно выпустить VPN

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

IPFW как правильно выпустить VPN

Непрочитанное сообщение kharkov_max » 2013-05-29 13:07:32

Добрый день.

Ситуация следующая.
Есть шлюз freebsd8.2, он работает как VPN сервер, так же необходимо разрешить VPN из локальной сети (nat) lдля локальных клиентов, и самому шлюзу создавать одно VPN подключение.
Конфиг IPFW для VPN сервера показывать не буду ибо работает, его правила находятся ниже показаных мной секций.

По ниже показанным правила работает всегда та секция правил что находится выше.
Т.е. или шлюз может создавать VPN или можно натить VPN в инет.

Помогите разрулить ситуацию, хочется что б все работало ))).

mpd5 - это интерфейс который создает демон mpd5 для создания VPN подключения.

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

# =============Разрешаем шлюзу создавать VPN подключения ================
${fw} add allow tcp from ${ext_gateway_ip} to any 1723         out via ${ext_if}
${fw} add allow gre from ${ext_gateway_ip} to table\(5\)       out via ${ext_if}


${fw} add allow tcp from any  1723       to ${ext_gateway_ip}   in via ${ext_if}
${fw} add allow gre from table\(5\)      to ${ext_gateway_ip}   in via ${ext_if}

${fw} add allow all from { 192.168.0.1,192.168.0.2 } to any out via mpd5
${fw} add allow all from any to { 192.168.0.1,192.168.10.2 }  in via mpd5
# ========================================================================

# ====================== NAT VPN в инет ======================================================
${fw} add nat 1 tag 8 tcp from table\(3\) to any 1723        out recv ${int_if} xmit ${ext_if}
${fw} add nat 1 tag 8 gre from table\(3\) to any             out recv ${int_if} xmit ${ext_if}
${fw} add nat 1 tag 8 gre from ${ext_gateway_ip} to any      out via ${ext_if}
${fw} add allow tcp from ${ext_gateway_ip} to any 1723       out via ${ext_if} tagged 8
${fw} add allow gre from ${ext_gateway_ip} to any            out via ${ext_if} tagged 8

${fw} add nat 1 tag 8 tcp from any 1723 to ${ext_gateway_ip}  in via ${ext_if}
${fw} add nat 1 tag 8 gre from any to ${ext_gateway_ip}       in via ${ext_if}
${fw} add allow tcp from any 1723 to table\(3\)               in via ${ext_if} tagged 8
${fw} add allow gre from any to table\(3\)                    in via ${ext_if} tagged 8
# ============================================================================================
Есть подозрение что трафик уходит в инет как нужно? а вот когда возвращается попадает на правила

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

.....
${fw} add allow tcp from any  1723       to ${ext_gateway_ip}   in via ${ext_if}
${fw} add allow gre from table\(5\)      to ${ext_gateway_ip}   in via ${ext_if}
....
${fw} add nat 1 tag 8 tcp from any 1723 to ${ext_gateway_ip}  in via ${ext_if}
${fw} add nat 1 tag 8 gre from any to ${ext_gateway_ip}       in via ${ext_if}
.....
Ну а далее кто первый того и тапки.

Хостинговая компания 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/

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

Re: IPFW как правильно выпустить VPN

Непрочитанное сообщение kharkov_max » 2013-05-30 14:09:46

Решил данную проблему.
Причина была в правилах ядерного нат.

До того как не работало было так:

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

${fw} nat 1 config ip ${ext_gateway_ip} reset same_ports deny_in
А нужно что бы было так

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

${fw} nat 5 config ip ${ext_gateway_ip} same_ports
Reset на Ваше усмотрение, а вот deny_in судя из доки
deny_in

Параметр предписывает запрет пропускать через nat входящие пакеты для
которых нет совпадения во внутренней таблице активных соединений,
или же нет совпадения с другими правил демаскировки.

Если данный параметр не установлен то для входящих соединений
будет создаваться новая запись в таблице активных соединений
и пакет будет пропускаться.
Правила nat фильтрации должны быть первыми, потом правила для mpd5 клиента, а потом правила для mpd5 сервера.
Таким образом возврящаясь от сервера пакет для mpd5 клиента попадает в nat (т.к. он первый в правилах), nat видит что у него нет исходящего пакета, пакет не натит, но пропускает по правилам дальше. Далее пакет попадает в правила для mpd5 клиента.

Это как я понял.... Поправьте если что...

Таким образом есть рабочая конфигурация ipfw для mpd5 (сервера и клиента в одном лице) и пропуск внутренних хостов через nat для VPN.
Если кому нужно пишите кину.