URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5441
[ Назад ]

Исходное сообщение
"Правила PF для OpenVPN"

Отправлено nik03pe , 04-Ноя-17 15:27 
Всем Здравствуйте!
Поставил я себе OpenVPN on VPS (FreeBSD11) и начал настраивать NAT средствами PF так-как не хотел ядро пересобирать. Несколько дней потратил на борьбу сначала с тем, что хэндшэйк не проходил, потом пинг обратно не возвращался клиенту. В результате написал и все работает, но (не смейтесь) не пойму почему оно работает и где логика. Если не трудно, то может разъясните и просветите начинающего адепта BSD. Секцию таблицы ввел  для китайцев которые ддосили меня на прошлой конфигурации под линуксом. Включу, когда разберусь.


pf.conf
ext_if = "re0"
int_if = "tun0"
net_int = "10.8.10.0/24"
############## TABLES ##########################
table <badhost> persist
############# GLOBAL POLICY ####################
set block-policy return
set skip on lo
set state-policy floating
scrub in all fragment reassemble
############### NAT ############################
nat on $ext_if inet from $net_int to any -> $ext_if

################ FILTER ########################
block in
pass out
antispoof log quick for $ext_if inet
#################  SSH  #########################
pass in on $ext_if proto tcp from any to $ext_if port 22 flags S/SA modulate state

################ SERVICE ########################
pass out on $ext_if proto udp from $ext_if to any port ntp keep state
#pass out on $ext_if proto { tcp, udp } from $ext_if to any port domain keep state
#pass in on $ext_if proto udp from any to any port domain keep state
pass out inet proto icmp all icmp-type echoreq keep state

pass in on $ext_if proto { tcp, udp, icmp } from $net_int to any keep state
pass in on $ext_if proto udp from any to $ext_if port 1194 keep state
pass quick on $int_if no state


Содержание

Сообщения в этом обсуждении
"Правила PF для OpenVPN"
Отправлено eRIC , 04-Ноя-17 21:52 
>В результате написал и все работает, но (не смейтесь)
> не пойму почему оно работает и где логика. Если не трудно,
> то может разъясните и просветите начинающего адепта BSD.

вам расжевать каждое ваше правило?


"Правила PF для OpenVPN"
Отправлено nik03pe , 05-Ноя-17 01:26 
> вам расжевать каждое ваше правило?

Извиняюсь за неточность в вопросе. Меня интересуют 3 последние строки. Я сейчас сам пробую на виртуалках разобраться.

>pass quick on $int_if no state

Здесь разрешается все на внутреннем интерфейсе, однако если это правило убрать, то хэндшэйк все-равно происходит, но пинг дальше openvpn сервера не проходит.

>pass in on $ext_if proto udp from any to $ext_if port 1194 keep state

тут более менее ясно - разрешаем трафик udp до внешнего интерфейса.

>pass in on $ext_if proto { tcp, udp, icmp } from $net_int to any keep state

вот почему здесь работает с внешним, а не с внутренним интерфейсом?
и нужна-ли мне вообще переменная $int_if?
Надеюсь посоветуете как можно оптимизировать правила.