pf не пропускает vpn клиентов из вне
Добавлено: 2010-01-18 15:32:17
привет всем? ситуация следующая
нужно организовать впн тунель к внутреннему серваку для внешних впн клиентов
в качестве впн сервара мпд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
нужно организовать впн тунель к внутреннему серваку для внешних впн клиентов
в качестве впн сервара мпд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