vsFTPd Browser no Listing

Я пытаюсь получить доступ к моему FTP-серверу через браузер, но у меня возникла проблема.

Если я получаю доступ к нему с помощью Filezilla, я вижу, что файлы в порядке. Однако, используя браузер, я не вижу список каталогов, как вы можете видеть здесь: http://www.imageurlhost.com/images/2ki5heahncml7517tcbg.png

Я добавил эту запись в iptables, надеясь решить проблему, но она не изменилась:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 

Может ли кто-нибудь помочь мне диагностировать эту проблему?

Простое решение – переключить Filezilla на использование пассивного режима при подключении к этому FTP-серверу.

Когда вы подключаетесь к FTP, вы используете порт 21, который известен как канал управления. Это соединение, используемое для отправки команд и получения уведомлений о результатах выданных команд. Обратите внимание, что для списков файлов (выход для LIST ), передачи файлов (выборка файлов RETR и установка файлов STOR ) и других операций, которые фактически требуют передачи данных, создается отдельный канал, известный как канал данных. FTP может управлять этим каналом данных в любом из двух режимов: активном или пассивном. Оба они относятся к тому, как устанавливается канал данных.

 You issue a LIST (in active mode) CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ (port 21) |=| ---------- LIST command ---------> |=| [__]|=| ----- LIST command issued -- > |=| |=| /::/|_| . |_| <----- FTP server attempts to ---- |_| `\___ now listening on arbitrary connect and gets denied port for data channel say 8000 by firewall 

В активном режиме клиент рекламирует произвольный порт прослушивания, который он создает, и FTP-сервер подключается к этому объявленному адресу и порту на клиентской машине. Обычно это брандмауэры блокируют трафик, потому что это случайный (часто меняющийся) номер порта высокого порядка на клиентском хосте, рекламирующем канал данных FTP. Filezilla по умолчанию использует порт между 6000 и 7000. Если брандмауэр не блокирует это соединение, вывод команды LIST затем передается по этому отдельному каналу.

 You issue a LIST (in passive mode) CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ (port 21) |=| ---------- LIST command ---------> |=| [__]|=| --- LIST command issued -- > |=| |=| /::/|_| |_| <--- FTP server advertises the --- |_| listening data port over \___ server with the control channel listening data channel CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ <--- open control channel ---> |=| ---- open control channel ----> |=| [__]|=| |=| |=| /::/|_| --- client establishes a ----> |_| ---- passive data channel ----> |_| connection to the connection allowed advertised data channel by firewall 

В пассивном режиме роли меняются на противоположные, клиент FTP выдает команду PASV перед командой LIST . Затем FTP-сервер создает прослушивающий TCP-порт и рекламирует это для подключения клиента для установления канала данных. Обычно это допускается большинством брандмауэров (поскольку клиенты могут устанавливать соединения исходящие к любому порту).

Обратите внимание, что если между вашим FTP-сервером и Интернетом имеется межсетевой экран, этот брандмауэр ALSO должен быть настроен так, чтобы эти порты открывались для обеспечения пассивных соединений. Большинство FTP-серверов предоставляют возможность устанавливать диапазон, в котором эти порты будут рекламироваться, и их можно открыть, чтобы разрешить эти подключения.

Если вы ограничены и имеете клиента, который не может делать пассивный, Filezilla предлагает возможность (uned Edit -> Settings … -> Connection / FTP / Active Mode, чтобы указать, какие порты использовать), и вы можете добавить их в свой брандмауэр.