Pf и vsftpd за NAT

На шлюзе со статическим IP стоит KWF 6.5 с пробросом 21 порта на машину с OpenBSD 4.1+vsftpd. До тех пор, пока не включил на машинке pf, все работало. Почитал мануалы по связкам pf+vsftpd, наваял следующее:

inservices  = "{ 21, 22 }"
ext_if      = "fxp0"

pass in on $ext_if proto tcp from any to any port $inservices flags S/SA keep state
pass in on $ext_if proto tcp from any to any port > 49151 flags S/SA keep state

В данной конфигурации локально доступ есть, а из внешней сети - нет. В чем может быть дело?

Аватар пользователя Victor

Старый грустный FTP

Зайди вот сюда:

http://www.obsd.ru/8/?q=node/1181

Раздел "Старый грустный FTP" посмотри

Аватар пользователя Tantos

Имеется ввиду,

Имеется ввиду, что надо подключить к этому вопросу ftp-proxy? Была у меня такая мысль, смущало то, что NAT поднят на внешнем шлюзе, а не на данной машине.

Аватар пользователя Victor

Да

Да, например его использовать.

Аватар пользователя Tantos

Смущает

Смущает следуее. Судя статьям, правила должны выглядеть так:

rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1  port 8021
pass in on $ext_if inet proto tcp from port ftp-data to ($ext_if) \
    user proxy flags S/SA keep state
   
Однако, если верить man'y, это верно лишь для активного режима ftp. Для пассивного надо использовать NAT-правила:
nat from $client to $server port $port -> $proxy
pass in quick inet proto tcp from $client to $server port $port
pass out quick inet proto tcp from $proxy to $server port $port

Кому верить?

 

Аватар пользователя Tantos

Все было

Все было гораздо проще - необходимо было разрешить исходящий трафик на шлюзе и самом сервере:

pass out on $ext_if proto tcp from any to any port > 1023 flags S/SA

Аватар пользователя BABUT

для пассивного

для пассивного

pasv_max_port=
# The maximum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling. Default: 0 (use any port)

pasv_min_port=
# The minimum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling. Default: 0 (use any port)

зы: в ответе pasv фигурирует ip фтп-сервера, если сервер за натом, то этот ip, видимо, фейк. остаётся рабочим вариантом port или вин-аналог ftp-proxy. для pasv этот диапазон следует открыть на вход в pf

Аватар пользователя Tantos

Все та же

Все та же система OpenBSD 4.1
Есть в конфиге строчки:
inner = "{ 192.168.0.0/24, 192.168.200.0/24 }"

pass in log proto tcp from any to any port $inservices flags S/SA keep state \
(max-src-conn-rate 3/9, overload flush global)
Как сделать, чтобы ограничение не применялось к таблице inner?

Аватар пользователя test00

Как сделать,


Как сделать, чтобы ограничение не применялось к таблице inner?

Стандартное указание таблицы в качестве адресата для from или to правилом выше - не помогает? Что-то типа

pass in proto tcp from innner ....
pass in log proto tcp from any to any port $inservices flags S/SA keep state \
(max-src-conn-rate 3/9, overload flush global)

P.S.: inner - в виде знак меньше и больше по бокам.

Почему теги code и pre не работают здесь?
Почему тег code убивает пробелы от начала строки до первого символа?
Почему внутри тега pre нельзя напечатать МеньшеinnerБольше?
Почему не поставить бы на сайт адекватный движок, типа https://www.pgpru.com/razrabotki/dvizhok ? Там, кстати, и нормальные капчи уже прикручены; спам с топиков здесь не вычищается?

Аватар пользователя Tantos

А правила друг

А правила друг друга не перекроют?

Аватар пользователя test00

А правила друг


А правила друг друга не перекроют?

При прочих равных последнее подходящее правило "выигрывает". Для IP из таблицы inner выиграет верхнее правило, т.к. оно будет подходить, для остальных IP первое правило подойти не может, потому их пакеты должны будут обработаться следующим правилом. Можно и явно писать во втором правиле вместо any что-то типа ! МеньшеinnerБольше.
PS: прочитайте официальный FAQ по PF, вы спрашиваете хрестоматийный хорошо описанный вопрос.

Аватар пользователя BABUT

--Для IP из

--Для IP из таблицы inner выиграет верхнее правило
это нельзя однозначно утверждать(правила недостаточно определены)
--Можно и явно писать во втором правиле вместо any что-то типа ! МеньшеinnerБольше
с "!" нужно быть осторожным, бо при наличии в таблице исключений получим не совсем то. безопасней использовать quick в первом
зы:
--Почему не поставить..
"жираф большой- ему видней"