Рейтинг:0

Centos7 не может подключиться к FTP-серверу, команда 200 PORT выполнена успешно. Рассмотрите возможность использования PASV. 425 Не удалось установить соединение

флаг cn

я пытаюсь подключить Linux ftp-сервер в командной строке окна он отлично работает, когда порт ftp по умолчанию (20, 21)

это не работает после того, как я изменил порт FTP по умолчанию, FTP-DATA

да, я проверял брандмауэр (это то же самое, даже если брандмауэр выключается), и да, я проверил файл vsftpd.conf

есть ли что-то еще, чтобы проверить, изменился ли порт? я думал, что только vsftpd.conf влияет на порт FTP и FTP-DATA

  • отлично работает, когда порт по умолчанию (20, 21)

введите описание изображения здесь

  • 425 Не удалось установить соединение. когда я сменил порт

введите описание изображения здесь

а это мой файл /etc/vsftpd/vsftpd.conf

анонимный_включить = НЕТ
local_enable = ДА
write_enable = ДА
local_umask=022
listen_port=39021 # добавить это
dirmessage_enable = ДА
xferlog_enable = ДА
connect_from_port_20=НЕТ
ftp_data_port=39020 # добавить это
xferlog_std_format = ДА
ftpd_banner=Добро пожаловать в службу FTP.
chroot_local_user = ДА
chroot_list_enable = ДА
chroot_list_file=/etc/vsftpd/chroot_list
слушать = ДА
порт_включить = ДА
pam_service_name = vsftpd
userlist_enable = ДА
tcp_wrappers = НЕТ
pasv_enable=YES # добавить это
pasv_min_port=60019 # добавить это
pasv_max_port=60020 # добавить это 
pasv_address=[Мой IP] # добавить это 
allow_writeable_chroot = ДА
port_promiscuous=YES # добавить это 
Nikita Kipriyanov avatar
флаг za
Активный FTP создает *обратное* соединение (от сервера к клиенту). Отключите (или иным образом подготовьте) брандмауэр на *обе* машинах, чтобы он работал. Похоже, теперь ваш клиентский компьютер или что-то посередине не готово к подключению сервера с порта, отличного от порта по умолчанию. Попробуйте захватить трафик (например, wireshark, tcpdump) с обеих сторон, чтобы увидеть, что происходит. Также вам было предложено использовать пассивный режим (`PASV`), который не полагается на это поведение, вы пробовали? // Пожалуйста, скопируйте и вставьте текстовую расшифровку в вопрос как *текст*, а не как изображения. И, пожалуйста, пусть это будут полные стенограммы.
Рейтинг:2
флаг za

Недостаточно информации для полного ответа. Но вы всегда должны помнить, что FTP — это не простой протокол. В простейшем случае, активный FTP работает следующим образом:

  1. Вы делаете контрольное подключение к порту 21 (FTP-сервер), через который
  2. Вы аутентифицируете
  3. Вы сообщаете серверу, где сделать соединение (IP и порт)
  4. Вы приказываете серверу начать передачу
  5. сервер делает Другая подключение к IP и порту, который вы ему сказали, и отправляет или получает данные.

Обычно на шаге 3 вы сообщаете серверу свой IP-адрес и порт, который прослушивает ваш FTP-клиент, поэтому выполняется еще одно соединение на шаге 5. в обратном направлении, с сервера к вам.

Что это было бы при наличии брандмауэра между ними? Предположим, вы включили прием пакетов через порт 21 (или любой другой, который вы используете) на сервере. Вы можете установить контрольное соединение. А как насчет обратного подключения к данным, которое устанавливает сервер? Как это включить?

Есть два случая: вы либо статически разрешаете какой-то порт (или диапазон) и настраиваете свой FTP-клиент так, чтобы он всегда использовал этот порт, либо у вас есть очень умный брандмауэр, который активно подслушивает на управляющем соединении извлекает IP-адрес и порт и динамически создает временное правило, разрешающее обратное соединение. Это называется АЛГ что означает Шлюз уровня приложения.

Как брандмауэр узнает, какие соединения нужно прослушивать? Он знает, что FTP работает через TCP/21, поэтому просто ищет любой трафик на этом порту. Что, если вы измените порт управления? Вы, наверное, уже догадались: ALG не сработает.Брандмауэр не добавит дополнительное динамическое правило, поэтому попытка обратного подключения для передачи данных не увенчается успехом.

Есть надежда, что если настроить "ALG" на работу с нестандартным портом, то проблема решится. Тем не менее, это не всегда так. Сначала спроси, который брандмауэр мы говорим? В современном мире широко используются брандмауэры как на обоих концах, так и между ними, а также широко используется NAT (включая CGN, который используется интернет-провайдерами). Любому NAT тоже нужен ALG: ему нужно создать правило динамической трансляции в сторону клиента, который находится за NAT и который инициировал транзакцию. Вы можете добиться успеха только в том случае, если вы смогли настроить каждый ALG на пути так, как вы хотите. Видишь, куда я иду?

Есть два общие решения. Во-первых, просто: полагайтесь на ALG, которые требуют, чтобы вы никогда не меняли порт управления FTP по умолчанию (честно говоря, 20 лет управления серверами, и я до сих пор не понимаю смысла использования портов не по умолчанию. Это создает больше проблем, чем решает) . Во-вторых, тоже просто: используйте пассивный режим FTP.

пассивный FTP работает следующим образом:

  1. Вы подключаетесь к порту 21 (FTP-сервер), через который
  2. Вы аутентифицируете
  3. Вы входите в пассивный режим, и сервер отвечает IP и портом
  4. Вы приказываете серверу начать передачу
  5. Ты выполните еще одно подключение к IP-адресу и порту, которые сообщил вам сервер, и получите или отправьте данные.

Обратите внимание, что изменены только шаги 3 и 5. Они избегают обратных соединений.

Это частично решает проблему с нестандартным портом и неконтролируемыми ALG. Это также позволяет использовать шифрование в управляющем соединении (которое по своей сути нарушает работу ALG).

флаг so
Правильный. Просто обратите внимание, что OP использует командную строку Windows `ftp`, которая не поддерживает пассивный режим. Значит, нужна смена клиента. https://stackoverflow.com/q/18643542/850848

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.