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

pf не пропускает vpn клиентов из вне

Добавлено: 2010-01-18 15:32:17
beznika
привет всем? ситуация следующая
нужно организовать впн тунель к внутреннему серваку для внешних впн клиентов
в качестве впн сервара мпд5, работает без проблем
в пф пасс правила вписал, впн клиенты подключаются, но доступа в нужному серверу да и вообще к сети не имеют, в настройках соединения на впн клиенте адресом шлюза прописывается адрес самого клиента, адресация для клиентов из тогоже диапазона что и в локальной сети.

ос freebsd 7.0
вот pf.conf

int_if = "fxp0"
ext_if = "re0"
vpn_if = "ng0"
ports_tcp = "{20 21 25 53 80 110 123 143 443 465 995 1723 3128 8021 9001 >=49151}"
ports_udp = "{53 87}"
router = "192.168.0.1"
icmp_types = "{echoreq, unreach}"

set block-policy return

set loginterface re0
set loginterface ng0
set skip on lo
scrub in all

#local
table <local> {192.168.0.0/24}

#nat
nat on $vpn_if from $int_if:network to any -> $vpn_if
nat on $ext_if from $int_if:network to any -> $ext_if

#no nat gre и pptp
no nat on {$vpn_if $ext_if} proto gre all
no nat on {$vpn_if $ext_if} proto tcp from any to any port = pptp
no nat on {$vpn_if $ext_if} proto tcp from any port = pptp to any

#пакеты из локалки по 80 порту на внутренний интефейс перебрасываем на squid
rdr on $int_if inet proto tcp from <local> to any port www -> 127.0.0.1 port 3128

#закрваем по умолчанию всё
block all

#пишем лог заблокированных попыток соединения
block return log all

#если пакет зашёл то его можно выпустить
pass out keep state

#защита от спуфинга
antispoof quick for { lo $int_if }

#закрываем вход по ssh из инета
block in log on $vpn_if proto tcp from any to any port {ssh}
block in log on $ext_if proto tcp from any to any port {ssh}

#разрешием использование ssh в локальной сети
pass in on $int_if proto tcp from any to any port {ssh}

#правила фильтрации трафика
#фильтруем трафик между шлюзом и локалкой по портам
pass in on $int_if proto tcp from <local> to any port $ports_tcp flags S/SA keep state
pass in on $int_if proto udp from <local> to any port $ports_udp keep state
pass out on $int_if proto tcp from any port $ports_tcp to <local> flags S/SA keep state
pass out on $int_if proto udp from any port $ports_udp to <local> keep state

#пропускаем исходящий трафик
pass out on $vpn_if proto tcp from <local> to any port $ports_tcp modulate state flags S/SA
pass out on $vpn_if proto udp from <local> to any port $ports_udp modulate state

#пропускаем исходящие icmp пакеты
pass inet proto icmp all icmp-type $icmp_types keep state

#блокируем входящие
block in quick on $vpn_if proto icmp

#для внешних клиентов vpn открываем порт 1723 и прокол gre
pass quick on {$vpn_if $ext_if} proto {tcp udp} from any port {1723 53} to any flags S/SA keep state
pass quick on {$vpn_if $ext_if} proto {tcp udp} from any to any port {1723 53} flags S/SA keep state
pass quick on {$vpn_if $ext_if} inet proto gre from any to any

#правило для связи с провайдером по vpn
pass in quick on $ext_if proto tcp from 10.0.0.1 port {1723 1023} to any flags S/SA keep state

#разрешаем для ftp передачу данных
pass in on $vpn_if inet proto tcp from port ftp-data to {$vpn_if} user proxy flags S/SA keep state
pass in on $ext_if inet proto tcp from port ftp-data to {$ext_if} user proxy flags S/SA keep state

Re: pf не пропускает vpn клиентов из вне

Добавлено: 2010-01-18 16:19:16
Shuba
Закоментируй данную строку:

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

antispoof quick for { lo $int_if }
И используй на форуме тег

Re: pf не пропускает vpn клиентов из вне

Добавлено: 2010-01-18 17:25:15
_Менделеев
да, конечно без оформления мало желания глядеть в твой вопрос

но:
1) чтобы заработало надо:

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

pass in on $ext_if proto tcp from any to any port=pptp  #разр. вх. на порт, кот. слушает MPD 
pass in on ng0 from $ng0:peer to any                    #разр. вх. на netgraph-интерфейсе пакетам из адреса партнера  
pass out on $int_if from $ng0:peer to $int_if:network   #разр. исх. с int_if пакеты из адреса партнера
пропустить GRE (у тебя вроде сделано) или заместо сработает:

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

pass out on $ext_if from ($ext_if) to any
2) слишком много правил, уверен ты уже сам не понимаешь че ты там написал, а если понимаешь, то уж точно не знаешь как это у тебя оно все еще работает. Упрощай, оставь самое необходимое чтобы поднялся впн

Re: pf не пропускает vpn клиентов из вне

Добавлено: 2010-01-19 9:20:12
beznika
на форуме впервые, с оформлением я учту
я убрал из конфига всё лишнее, причём ничего нового не добавил
и заработало, оставил только открытые порт 1723 и gre протокол
убрал

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

block all
вписал

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

block on $vpn_if all
,
но вот ведь ни задача, клиенты xp подключаются без проблем а vista пишет ошибка:800