vsftpd за nat

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

cheater
Сообщения: 59

vsftpd за nat

Сообщение cheater »

Есть Ubuntu 9.10, есть vsftpd: version 2.2.0, локальный IP машиный 192.168.0.101, роутера (D-link) 192.168.0.1.
Настройки vstfpd.conf

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

listen=YES
anonymous_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

pasv_enable=YES
pasv_max_port=30100
pasv_min_port=30000
log_ftp_protocol=YES


Проблема в том, что до фтп с внешки получается достучаться только когда на машину пробрасываю порты 1024-65536 (на фтп можно зайти anonymous'ом как консольным ftp так и firefox'ом). Пробрасываю на роуторе только порты 30000-30100 и начинаются фокусы. Консольный ftp заходит, но перестает передавать данные

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

user@localhost:~$ ftp -pd somehost.org
Connected to somehost.org.
220 (vsFTPd 2.2.0)
ftp: setsockopt: Bad file descriptor
Name (somehost.org:user): ftp
---> USER ftp
331 Please specify the password.
Password:
---> PASS XXXX
230 Login successful.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PASV
227 Entering Passive Mode (xx,xx,xx,xx,236,203)
ftp: connect: Connection timed out
ftp>


в логах сервера смотрим:

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

Sat Dec 26 18:19:37 2009 [pid 2] CONNECT: Client "xx.xx.xx.xx"
Sat Dec 26 18:19:37 2009 [pid 2] FTP response: Client "xx.xx.xx.xx", "220 (vsFTPd 2.2.0)"
Sat Dec 26 18:19:40 2009 [pid 2] FTP command: Client "xx.xx.xx.xx", "USER ftp"
Sat Dec 26 18:19:40 2009 [pid 2] [ftp] FTP response: Client "xx.xx.xx.xx", "331 Please specify the password."
Sat Dec 26 18:19:42 2009 [pid 2] [ftp] FTP command: Client "xx.xx.xx.xx", "PASS <password>"
Sat Dec 26 18:19:42 2009 [pid 1] [ftp] OK LOGIN: Client "xx.xx.xx.xx", anon password "l"
Sat Dec 26 18:19:42 2009 [pid 3] [ftp] FTP response: Client "xx.xx.xx.xx", "230 Login successful."
Sat Dec 26 18:19:42 2009 [pid 3] [ftp] FTP command: Client "xx.xx.xx.xx", "SYST"
Sat Dec 26 18:19:42 2009 [pid 3] [ftp] FTP response: Client "xx.xx.xx.xx", "215 UNIX Type: L8"
Sat Dec 26 18:19:45 2009 [pid 3] [ftp] FTP command: Client "xx.xx.xx.xx", "PASV"
Sat Dec 26 18:19:45 2009 [pid 3] [ftp] FTP response: Client "xx.xx.xx.xx", "227 Entering Passive Mode (xx,xx,xx,xx,117,107)."
Sat Dec 26 18:24:45 2009 [pid 3] [ftp] FTP response: Client "xx.xx.xx.xx", "421 Timeout."


Почему почему клиент обращается к порту 60619 (236*256+203) в то время как сервер слушает 30059?
Все мы бывшие пользователи венды... (с)
Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: vsftpd за nat

Сообщение strah »

Потому, что на клиенте тоже надо указывать, какие порты ему использовать.
/earth: file system full
Спасибо сказали:
cheater
Сообщения: 59

Re: vsftpd за nat

Сообщение cheater »

strah писал(а):
26.12.2009 17:52
Потому, что на клиенте тоже надо указывать, какие порты ему использовать.


:huh: Разве не сервер указывает клиенту на какой порт соединяться?
Все мы бывшие пользователи венды... (с)
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: vsftpd за nat

Сообщение rm_ »

Почитайте man vsftpd.conf на предмет опции pasv_address.
Спасибо сказали:
cheater
Сообщения: 59

Re: vsftpd за nat

Сообщение cheater »

rm_ писал(а):
26.12.2009 18:43
Почитайте man vsftpd.conf на предмет опции pasv_address.


Читал я всё это, не помогло. С ним сервер вобще перестаёт быть достуным.
Все мы бывшие пользователи венды... (с)
Спасибо сказали:
cheater
Сообщения: 59

Re: vsftpd за nat

Сообщение cheater »

Всё работает. Танцы с бубном никто не отменял. Ковырял настройки роутера, убрал перенаправление портов, включил DMZ, не работает, прописал в файрволе пускть всюду всё, не помогло, отключил DMZ, перенаправил 21 порт и всё работает. Убрал созданное в файрволе правило (всё отовсюду), все работает. Получилось, что роутер вернул в прежнее состояние и всё работает.

Не знаю в чём была приблема, но забавно, что сервак точно так же слушает прописанный диапазон портов, клиент так же обращается на порт вне этого диапазона, но всё работает.

1 Кто нибудь может объяснить сие? Роутер глючит? Это он щас глючит или глючил когда не работало?

2 Хочу заметить, что прослушиваемый диапазон портов (30000-30100) не проброшен (пробросил только 21 и 22, а всё работает), но по всем правилам на роутере должены пробрасываться эти порты. Это как-то повязано на работе NAT'а?

3 На счёт pasv_address зачем он вобще нужен, если и без него всё работает? Тот же вопрос и по параметру pasv_addr_resolve.

4 В упор не понимаю зачем нужен параметр connect_from_port_20=YES? На сколько я понимаю 20 порт вобще не используется при пассивном режиме работы ftp.
Все мы бывшие пользователи венды... (с)
Спасибо сказали: