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

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

Добавлено: 2013-05-29 13:07:32
kharkov_max
Добрый день.

Ситуация следующая.
Есть шлюз 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}
.....
Ну а далее кто первый того и тапки.

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

Добавлено: 2013-05-30 14:09:46
kharkov_max
Решил данную проблему.
Причина была в правилах ядерного нат.

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

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

${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.
Если кому нужно пишите кину.