Вопрос или проблема
7 июля наш веб-сервер перестал работать. Мы перезагрузили его и обнаружили, что он получил ошибку Kernel 41, но это не наша проблема на данный момент.
У нас на этом сервере три машины: одна с Windows (она работает прекрасно), вторая – это Gateway с CentOS, и она тоже работает. Третья машина вызывает проблемы, это Ubuntu 18.4 и FTP.
После перезагрузки наш FTP-сервер запускает ufw
, я закрыл/остановил его, так что теперь мы можем подключаться к FTP, но не всегда.
FileZilla не работает с ним должным образом, всегда возникает ETIMEOUT, 425 не удалось установить соединение
, и невозможно получить список.
Я дважды проверял, что брандмауэр (на Gateway и на FTP) был выключен, на Gateway я проверил iptables, и там есть правила ACCEPT ALL.
Вот наш vsftpd.conf:
listen=YES
pasv_enable=YES
pasv_min_port=62000
pasv_max_port=65535
port_enable=YES
anonymous_enable=YES
no_anon_password=YES
anon_root=/home/ftpadmin
local_enable=YES
#local_umask=022 #local_root=/home/ftpadmin
write_enable=YES
listen_port=2121
connect_from_port_20=YES
chmod_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
passwd_chroot_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
pasv_adress=xx.x.xxx.xxx
pasv_addr_resolve=NO
dirlist_enable=NO
user_config_dir=/etc/vsftd_conf_dir
Ошибка FileZilla:
Ответ: 227 Вход в пассивный режим (46,4,134,230,252,52).
Команда: LIST
Ошибка: Данные не удалось установить: ETIMEDOUT – Время ожидания соединения истекло
tracert
пакеты зависли только на FTP-сервере, они прошли мимо шлюза, так что я предполагаю, что проблема только в FTP, но я могу ошибаться.
Эта проблема может иметь множество причин, но когда я вижу вашу конфигурацию, я сразу дам вам следующий совет:
Измените dirlist_enable=NO
на dirlist_enable=YES
Кроме того, убедитесь, что вы улучшили ведение журнала, добавив следующие строки в ваш vsftpd.conf:
xferlog_enable=YES
log_ftp_protocol=YES
xferlog_file=/var/log/ftp/xferlog
Также убедитесь, что вы проверили /var/log/vsftpd.log на наличие ошибок.
Ответ или решение
Когда вы сталкиваетесь с ошибкой подключения FTP, особенно с сообщением об ошибке ETIMEDOUT - Connection attempt timed out
, это может указывать на несколько возможных проблем, связанных с конфигурацией сервера или сетью. Давайте рассмотрим ваши настройки и поработаем над разрешением этой ситуации.
1. Анализ конфигурации vsftpd
Ваш конфигурационный файл vsftpd.conf
содержит несколько хороших настроек, но есть моменты, которые следует проверить и изменить:
-
PASV-режим: Вы используете пассивный режим (pasv_enable=YES), что требует, чтобы клиент FTP подключался к серверу на случайные порты между 62000 и 65535. Убедитесь, что ваш брандмауэр (если он хоть как-то настроен) разрешает проходящие подключения на эти порты:
sudo iptables -A INPUT -p tcp --dport 62000:65535 -j ACCEPT
-
Параметры PASV: Проверьте, правильно ли указан IP-адрес сервера в строке
pasv_address
. Он должен быть публичным IP-адресом, доступным для FTP-клиентов. Убедитесь, что клиент FTP видит именно этот IP-адрес. -
Проблемы с соединениями: Строка
connect_from_port_20=YES
указывает, что сервер должен использовать порт 20 для FTP-соединений. Убедитесь, что порты 20 и 21 также разрешены в брандмауэре:sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
2. Проверка логов
Для более детального изучения проблемы стоит включить расширенное логирование. Добавьте в ваш конфигурационный файл:
xferlog_enable=YES
log_ftp_protocol=YES
xferlog_file=/var/log/ftp/xferlog
Это позволит вам следить за активностью FTP и легче находить причины проблем. После изменения позаботьтесь о создании директории для логов, если она ещё не существует:
sudo mkdir -p /var/log/ftp
sudo chown ftp:ftp /var/log/ftp
Затем просмотрите лог-файлы, чтобы выявить возможные ошибки или проблемы с подключением:
tail -f /var/log/vsftpd.log
3. Проверка клиентских настроек
Убедитесь, что в настройках FileZilla выбран правильный режим подключения. Если вы используете пассивный режим, он должен быть правильно включён в настройках клиента, иначе может возникнуть конфликт.
4. Диагностика сети
При использовании tracert
важно убедиться, что трафик проходит не только до шлюза, но и обратно к клиенту. Если пакеты застревают, это может указывать на проблемы маршрутизации. Проверьте настройки вашего маршрутизатора или используйте альтернативные сети, чтобы исключить их влияние.
5. Заключение
Данная проблема требует многопланового подхода, включая корректировку параметров сервера FTP, проверку логирования и сетевых настройках. После внесения изменений проведите тесты с разными FTP-клиентами, чтобы убедиться в стабильности соединения.
Если проблема не устранена, пожалуйста, предоставьте больше логов и информации о конфигурации сети. Это упростит диагностику и ускорит решение проблемы.