Давно уже работал у меня vsftpd на FreeBSD 7.1-RELEASE
Машина одним интерфейсом смотрит в Интернет другим в ЛВС.
На на внешнем $ext_if_ppp включен NATТребуется сделать правильный FTP сервер как для ЛВС и Интернета.
Все мы знаем про режимы работы FTP, я решил что мой FTP будет работать в пассивном режиме.
Если я не прав поправьте : Пассивный режим будет работать у клиента всегда, лижь бы мой сервер был правильно настроен ?
Следуя рекомендациям на
http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...
и
man ftp-proxy
сделал следующее:
в /etc/rc.conf добавил:
echo "ftpproxy_enable="YES"
ftpproxy_flags="-v -D 7" >
кстати где посмотреть его лог ? или его ещё нужно настроить? и где если да ?
как только мы его включили мы должны знать, что он будет работать на порте 8021
и еще вопрос в чем разница между запуском из rc.conf и из inetd например так:
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
добавим в pf.conf правило, которое будет делать проброс пакетов, с ним работает пассивный режим как из локалки так и из инета
rdr pass on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
но тут вопрос! А может правильнее сделать так :
rdr pass on $int_if proto tcp from $trusted_lan to $int_if port 21 -> 127.0.0.1 port 8021
тогда как быть с инет-клиентами может так
rdr pass on $ext_if_ppp proto tcp from any to $ext_if_ppp port 21 -> 127.0.0.1 port 8021
а вот с последним правилом перестает работать доступ к ftp из вне, клиенты говорят, что не могут подключиться типа connection refused
тогда вопрос как бы мне пропустить пакеты через шлюз до ftp-proxy и от него до клиентов
правильными правилами, т.к. все что я писал - не помогают
просто ведь у меня в сети клиенты могут ходить на ftp сервера интернета, точнее будут это делать и нужно чтобы у них все работало. я правильно считаю, по идее не все пакеты должны заворачиваться на локальный ftp-proxy?
и еще если убрать
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
из правил, то клиент зависает(пытается договориться) на установке пассивного режима, например total commander
поэтому вопрос что делают эти правила, я если честно не понял, точнее я понял, что они позволяют вставлять динамически правила для клиентов при работе в пассивном режиме, но какие именно правила вставляются в цепочки ?
и еще как и почему ftp-proxy получает доступ к pfctl?
у меня есть предположение, что я что-то кардинально напутал, имеется в виду что то довольно общее
есть подозрение что тут что то лишнее или наоборот чего то не хватает
пока как бы все работает в итоге следующие правила у меня для работы включены:
# Делаем просто проброс на ftp-proxy ПРОСТО ПРОБРОС
rdr pass on $int_if proto tcp from $trusted_lan to $int_if port 21 -> 127.0.0.1 port 8021
# rdr pass on $ext_if_ppp proto tcp from any to $ext_if_ppp port 21 -> 127.0.0.1 port 8021
второе закаментировано, т.к. если его включить, то извне не достучаться, не знаю что разрешить правильно
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
# FTP for Internet
pass in on $ext_if_ppp proto tcp from any to $ext_if_ppp port 21
# Требуеться для работы клиента в пассивном режиме с ftp сервером
# если отключить вход пакетов SYN на эти порты, то клиент не сможет использовать get, ls и т.д.
pass in on $int_if inet proto tcp from $trusted_lan to $int_if port 50000><50100 keep state
pass in on $ext_if_ppp inet proto tcp from any to $ext_if_ppp port 50000 >< 50100 keep state
кстати еще один вопрос как мне ограничить ftp_proxy на то чтобы он работал в диапазоне от 50000 до 50100 портах ?
дело в том. что man ни чего не написано про такие параметры
и также странно, то, что если отключить эти два последних правила то пассивный ftp не работает
хотя в клиенте видно, что порты вовсе не из этого диапазона, я понимаю что бред но ...
я использую для тестирования два клиента
1-й тотал комендер
2-й ftp на внутреннем личном компьютере с freebsd
так вот если их отключить тотал(2-й) работает собака а вот 2-й(т.е. ftp) ни хрена виснет на
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||58342|)
200 EPRT command successful. Consider using EPSV.
425 Failed to establish connection.
Я понимаю, что все просто, но как говаривал Рич в нашем мире все настолько просто что надо быть гением чтобы это понять ;)
Помогите привести мысли в порядок пожалуйста.
если будет время отпишу наверное даже статью на наш любимый сайт, только если конечно полностью разберусь
думаю будет не лишним