У меня есть система Arch Linux, работающая под управлением vsftpd, которая уже год работала с FTPES. В течение последних двух дней я заметил, что все мои FTP-клиенты не могут подключиться через FTPES. Когда я подключаюсь с помощью FileZilla 3.17.0 в Windows 7, я замечаю, что при отправке списка каталогов возникает ошибка GnuTLS -15:
Это пассивный FTPES с хостом, указанным с использованием IP-адреса WAN:
Status: Connecting to ###.###.###.###:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (###,###,###,###,27,163).
Command: LIST
Response: 150 Here comes the directory listing.
Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing
Status: Disconnected from server
FileZilla затем повторяет попытку соединение с идентичными результатами, затем прекращает попытки подключения. Предыдущая версия FileZilla также показывала ошибку GnuTLS -110, хотя у меня нет сохраненного вывода, содержащего эту ошибку.
Я читал несколько сообщений, в которых предполагается, что эта проблема вызвана проблемой с пассивной конфигурацией FTP. Пассивный FTP работает на этом сервере уже некоторое время, и я не вносил никаких изменений в какие-либо соответствующие файлы конфигурации. Конечно, я пробовал подключиться в активном режиме. Все кажется нормальным, пока я не получаю ошибку команды Illegal PORT, после чего FileZilla снова пытается использовать пассивный.
Это «активный» FTPES с хостом, указанным с использованием WAN IP:
Status: Connecting to ###.###.###.###:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PORT 192,168,0,7,240,98
Response: 500 Illegal PORT command.
Command: PASV
Response: 227 Entering Passive Mode (###,###,###,###,27,103).
Command: LIST
Response: 150 Here comes the directory listing.
Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing
Status: Disconnected from server
Проблема здесь, кажется, в том, хотя Я ввожу свой IP-адрес в глобальной сети, активный режим по-прежнему пытается использовать локальный IP-адрес в этой команде PORT. Другой FTP-клиент, FTP Client Pro версии 3.0.4 для iOS, выдает ошибку «Сервер, похоже, не поддерживает активный режим». Затем я попытался подключиться к своему серверу локально, и хотя на этот раз клиент не перешел в пассивный режим, ошибка TLS сохраняется.
Это активный FTPES с хостом, указанным с использованием локального IP:
Status: Connecting to 192.168.0.2:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PORT 192,168,0,7,240,129
Response: 200 PORT command successful. Consider using PASV.
Command: LIST
Response: 150 Here comes the directory listing.
Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing
Status: Disconnected from server
Наконец, я попытался подключение без использования шифрования. Хотя я избегаю этого, если это вообще возможно, я должен оставить поддерживаемые незашифрованные соединения, чтобы подключаться из некоторых ограниченных сетей. Как активные, так и пассивные настройки в FileZilla работают через общедоступный Интернет с отключенным шифрованием, хотя оба типа показывают одинаковый результат:
Это активный / пассивный простой FTP с хостом, указанным с использованием WAN IP:
Status: Connecting to 98.220.249.102:21...
Status: Connection established, waiting for welcome message...
Status: Logged in
Status: Retrieving directory listing...
Status: Calculating timezone offset of server...
Status: Timezone offset of server is 0 seconds.
Status: Directory listing of "/" successful
Поскольку этот сервер находится за маршрутизатор, он настроен так, что пассивный FTP не будет работать локально; см. vsftpd.conf ниже. Чтобы опробовать все возможности подключения, вот FileZilla ' s выход для создания активного, незашифрованного соединения локально. Это не удается, но меня это не особо беспокоит, поскольку я никогда не использую эту комбинацию настроек.
Это активный простой FTP с хостом, указанным с использованием локального IP:
Status: Connecting to 192.168.0.2:21...
Status: Connection established, waiting for welcome message...
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PORT 192,168,0,7,240,195
Response: 200 PORT command successful. Consider using PASV.
Command: LIST
Response: 150 Here comes the directory listing.
Response: 500 OOPS: priv_sock_get_cmd
Error: Failed to retrieve directory listing
Error: Connection closed by server
Вот мой /etc/vsftpd.conf
без комментариев. По сути, это тот же файл, который я успешно использовал в течение прошлого года.
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
port_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to HOSTNAME (vsftpd on ArchLinux).
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
ssl_tlsv1=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
pasv_min_port=7000
pasv_max_port=7100
pasv_address=###.###.###.###
Последнее полное обновление моей системы Arch, до того, как я заметил эту проблему, было 17 апреля 2016 года и включало обновленные gnutls (3.4.10- 1 -> 3.4.11-1)
. Последнее обновление до vsftpd было 9 марта 2016 г. (3.0.3-1 -> 3.0.3-2), поэтому вместо того, чтобы понижать только gnutls, я восстановил всю систему до ее состояния 9 марта 2016 г., используя Arch Linux Archive . Это не помогло, и впоследствии я обновил систему, чтобы она соответствовала текущим репозиториям. Представленные здесь выходные данные были созданы с использованием последней версии системы на дату публикации (23 апреля 2016 г.). Я не уверен, когда именно возникла эта ошибка, поскольку я не использую свой FTP-сервер достаточно часто, чтобы сразу заметить ее.
Как я уже говорил ранее, мои соответствующие конфигурации не изменились с момента последней работы моего FTP-сервера, за исключением изменения, внесенные для размещения информации здесь.
Моя цель - снова заставить пассивный FTPES работать через общедоступный Интернет. Это приемлемо, если я должен пожертвовать незашифрованным активным FTP, но я все же хотел бы оставить его доступным на те редкие моменты, когда он мне нужен. Что мне нужно сделать, чтобы это исправить?
Ich hatte das gleiche Problem wie Sie und nach langer Suche im Internet habe ich hier eine Problemumgehung gefunden :
Fügen Sie die Zeile hinzu
seccomp_sandbox = NO
zu Ihrer /etc/vsftpd.conf
.
Mein Anwendungsfall ist ein Nur-LAN-SSL-fähiger FTP-Server, also YMMV. Eine mögliche Erklärung für dieses Problem könnte darin liegen, dass ich aufgrund eines inkompatiblen WLAN-Treibers nicht den neuesten Kernel installiert habe, der in den Repos verfügbar ist.
Ich hoffe, dies hilft :)