Я запускаю proFTPd на моей виртуальной машине CentOS linux (которая находится за NAT).
Это мое proftpd.conf
конфигурация на данный момент: http://pastebin.com/raw.php?i=X8rXYbSJ
Когда я подключаюсь к учетной записи ftp в клиенте FileZilla, я получаю следующее:
Status: Connecting to 109.xxx.xx.xxx:2121...
Status: Connection established, waiting for welcome message...
Response: 220 FTP Server Ready.
Command: USER exampleuser
Response: 331 Password required for exampleuser
Command: PASS ******
Response: 230 User exampleuser logged in
Command: SYST
Response: 215 UNIX Type: L8
Command: FEAT
Response: 211-Features:
Response: MDTM
Response: MFMT
Response: LANG ja-JP;ko-KR;bg-BG;zh-TW;en-US;ru-RU;it-IT;fr-FR;zh-CN
Response: TVFS
Response: UTF8
Response: MFF modify;UNIX.group;UNIX.mode;
Response: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Response: REST STREAM
Response: SIZE
Response: 211 End
Command: OPTS UTF8 ON
Response: 200 UTF8 set to on
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (109,xxx,xx,xxx,237,74).
Command: MLSD
Error: Connection timed out
Error: Failed to retrieve directory listing
Я заглянул в /var/log/proftpd/
папка и она пуста.
Я нашел в этом файле следующее /var/log/messages
:
Oct 29 12:34:33 mageDev proftpd[27542]: 127.0.0.1 - ProFTPD killed (signal 15)
Oct 29 12:34:33 mageDev proftpd[27542]: 127.0.0.1 - ProFTPD 1.3.3g standalone mode SHUTDOWN
Oct 29 12:34:34 mageDev proftpd[27560]: 127.0.0.1 - ProFTPD 1.3.3g (maint) (built Sat Sep 14 2013 20:13:10 UTC) standalone mode STARTUP
Oct 29 12:34:53 mageDev proftpd[27562]: 127.0.0.1 (::ffff:46.xx.xxx.xx[::ffff:46.xx.xxx.xx]) - FTP session opened.
Oct 29 12:34:53 mageDev proftpd[27562]: 127.0.0.1 (::ffff:46.xx.xxx.xx[::ffff:46.xx.xxx.xx]) - Preparing to chroot to directory '/ftp/exampleuser'
Как я могу диагностировать эту ошибку / проблему? Почему выдает ошибку Failed to retrieve directory listing
?
Это папка сервера для этого exampleuser
:
Я понимаю, что подобный вопрос уже задавался здесь: proftpd, динамический IP и filezilla: проблемы с портом
В отличие от этого пользователя, если я удалю свой MasqueradeAddress
Я получаю это предупреждение и все еще ту же ошибку:
Status: Server sent passive reply with unroutable address. Using server address instead.
Command: LIST
Error: Connection timed out
Error: Failed to retrieve directory listing
1) Убедитесь, что ваша виртуальная машина работает в Bridged
сетевой режим, поэтому вы получаете IP-адрес от NAT вашего маршрутизатора, и вам не нужно использовать NAT дважды.
2) Вы должны включить MasqueradeAddress
в конфигурации ProFTPd и введите свой публичный IP-адрес (попробуйте whatismyip.com)
3) Вам необходимо раскомментировать параметр «Пассивные порты» в конфигурации ProFTPd. Там два числа, они должны образовывать диапазон ОТ - ДО. Вы можете сделать диапазон намного меньше, если хотите.
3) Вам необходимо перенаправить следующие порты от вашего маршрутизатора к соответствующим портам FTP VM: 20, 21 и весь диапазон пассивных портов.
Вы получаете сообщение об ошибке «Не удалось получить список каталогов», потому что FTP-клиент не получает список каталогов с сервера, скорее всего, из-за проблем с брандмауэром или сети.
Протокол FTP был изобретен задолго до сетевых брандмауэров и трансляции сетевых адресов, и он использует отдельный командный канал и канал данных для связи.
Когда вы входите в систему, используется только командный канал.
Когда вы выполняете листинг каталогов, клиент и сервер сообщают друг другу по командному каналу, на каком IP-адресе и порту (60746 в вашем примере) канал данных должен быть динамически настроен для передачи данных списка каталогов.
Это делается с помощью команды FTP PORT или PASV.
В вашем случае клиент выдает команду PASV, а сервер отвечает: 227 Entering Passive Mode (109,xxx,xx,xxx,237,74).
Первые 4 октета в скобках составляют IP-адрес, а последние два - номер порта (256 * 237 + 74 = 60746).
Вы используете FTP-сервер на виртуальной машине с NAT
сетевой адаптер, настроенный для виртуальной машины (в отличие от Bridged
)? Тогда это, скорее всего, причина ваших проблем, потому что такие типы виртуальных машин обычно недоступны "извне", поскольку они имеют общий IP-адрес физического хоста.
На сервере открыты порты 60000-65535? В вашей конфигурации указан диапазон, который будет использоваться для пассивных подключений. Вы можете сузить его до более короткого диапазона, чтобы в брандмауэре требовалось меньше открытых портов.