PF и NAT (Не пропускает подключение у VPN)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

FATMan
Сообщения: 166
ОС: OpenBSD4 Slacka11 MacOS X

PF и NAT

Сообщение FATMan »

Недавно решил сделать для второго компа выход в интернет. Интернет подключён к первому компу через подключение по VPN в локальной сети.
Поставил на первый комп NAT - всё работает - со второго компа могу просматривать сеть от первого, но к VPN не могу подключится :(. Устанавливается подключение, начинается проверка пароля и через некоторое время вылетает ошибка, мол сервер не отвечает... Прописывал pass quick all - работало нормально... В чём может быть проблема?




Выкладываю свой pf.conf

ext_if="rl0"
int_if="rl1"
icmp_types="echoreq"

nat on $ext_if from $int_if:network to any -> ($ext_if)
block all
block in quick inet6 all
pass from {lo, $int_if:network} keep state
tcp_services="{ domain,www }"
udp_services = " { domain } "
pass out proto tcp to any port $tcp_services keep state
pass quick inet proto udp to any port $udp_services keep state

pass inet from $int_if to $ext_if
pass inet from $ext_if to $int_if

pass proto tcp to any port > 1024 user updater
pass inet proto icmp all icmp-type $icmp_types keep state

pass inet proto { tcp,udp } from $int_if to any
pass inet proto { tcp, udp } from $ext_if to any

block in proto tcp from any to port < 1024
pass proto tcp from any to any port $tcp_services keep state
Спасибо сказали:
-error
Сообщения: 174
Статус: sysadmin / oracle dba
ОС: HP-UX :-)

Re: PF и NAT

Сообщение -error »

по pf не специалист, но если под VPN подразумевается PPtP, то ему для работы нужен GRE, который, видимо, pf успешно давит.
Спасибо сказали:
FATMan
Сообщения: 166
ОС: OpenBSD4 Slacka11 MacOS X

Re: PF и NAT

Сообщение FATMan »

Да, под VPN имелось в виду pptp. Не подскажете, что нужно прописать? Я в сетевом устройстве не силён...
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: PF и NAT

Сообщение Shura »

почему-то хандбук молчит. Попробуй подгрузить модуль if_gre и, соответственно man if_gre
Rock'n'roll мертв © БГ
Спасибо сказали:
Jay
Сообщения: 57
ОС: FreeBSD, Kubuntu Linux

Re: PF и NAT

Сообщение Jay »

if_gre тут абсолютно не при чем.

Проблема в том, что не пропускается протокол GRE. Добавьте его в список протоколов.
Пример:

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

pass inet proto { tcp,udp,gre } from any to any


HINT: Полный список протоколов можно посмотреть в файле /etc/protocols.
FreeBSD 6.2-REL, Kubuntu 6.06
pdaXrom r198 на Sharp Zaurus C1000
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: PF и NAT

Сообщение Shura »

Однако непонятно почему при правиле pass all не пропускаются протоколы, отличные от TCP и UDP. У меня, например pf за каким-то еще и IGMP рубит
Rock'n'roll мертв © БГ
Спасибо сказали:
Jay
Сообщения: 57
ОС: FreeBSD, Kubuntu Linux

Re: PF и NAT

Сообщение Jay »

В pf выполняется последнее найденное правило, а не первое, как в ipfw. То есть, если у вас после pass all написаны другие правила, под которые может попасть пакет, он под них и попадет. Попробуйте pass quick all.
FreeBSD 6.2-REL, Kubuntu 6.06
pdaXrom r198 на Sharp Zaurus C1000
Спасибо сказали:
FATMan
Сообщения: 166
ОС: OpenBSD4 Slacka11 MacOS X

Re: PF и NAT

Сообщение FATMan »

Всё, спасибо! Проблема решилась! Переписал с нуля конфиг, и всё заработало! Если кому надо - выложу...
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: PF и NAT

Сообщение Shura »

Jay, да это-то понятно. В конфиге ничего больше нет, только несколько nat правил. Да и блокирует он на выход, что вообще странно.
Rock'n'roll мертв © БГ
Спасибо сказали:
sysalex
Сообщения: 4

Re: PF и NAT

Сообщение sysalex »

FATMan писал(а):
03.07.2007 14:07
Всё, спасибо! Проблема решилась! Переписал с нуля конфиг, и всё заработало! Если кому надо - выложу...

выкладывай...
столкнулся с той же проблемой
Спасибо сказали:
sysalex
Сообщения: 4

Re: PF и NAT

Сообщение sysalex »

все.
решение нашел сам
может и не очень красивое, но работает

та часть конфига с которой все заработало
##########################################
tcp_serv_out = "{ pptp }"
nat_serv = "{pptp }"
vpn_ip = "{192.168.1.1}"

nat on $oif proto gre from $vpn_ip to xxx.xxx.xxx.xxx -> ($oif)
pass quick inet proto { tcp,udp,gre } from $vpn_ip to xxx.xxx.xxx.xxx
##########################################
xxx.xxx.xxx.xxx - IP VPN-сервера
Спасибо сказали:
FATMan
Сообщения: 166
ОС: OpenBSD4 Slacka11 MacOS X

Re: PF и NAT

Сообщение FATMan »

Выкладываю свой конфиг:

ext_if="rl0"
int_if="rl1"

icmp_types="echoreq"

nat on $ext_if from $int_if:network to any -> ($ext_if)

block all
block quick inet6 all
pass in quick inet proto tcp from any to any port > 1024 user updater
pass out quick inet proto tcp from any port > 1024 to any user updater

tcp_services="{ domain,www }"
udp_services="{ domain }"

pass inet proto tcp to any port $tcp_services keep state
pass quick inet proto tcp to any port ssh keep state
pass quick inet proto udp to any port $udp_services keep state
block in quick inet proto tcp to { $int_if,$ext_if } port != 80
block in quick proto tcp from { $int_if,$ext_if } to { $int_if,$ext_if } port != 80
pass from {lo,$int_if:network}
pass quick inet proto icmp all icmp-type $icmp_types keep state
block quick inet proto icmp

pass inet from any to any
block quick inet from $ext_if:network to $ext_if:network
block quick inet from any to lo


Идея была такая: на сервере весит NAT и у сервера открыт только 80ый порт вебсерва. user updater - это небольшой сканер-демон, работающий в своём чруте
Спасибо сказали: