3

По какой-то причине, независимо от того, сколько раз я пытаюсь, после того, как клиент отправит команду PASV (которая правильно получена сервером), ответ сервера (227 Вход в пассивный режим) не возвращается клиенту. Я дошел до анализа трафика клиентов и серверов с помощью Wireshark, чтобы понять это. Что особенно странно, это то, что последний пакет, отправленный сервером, имеет те же настройки TCP, что и все остальные пакеты, которые он успешно отправил до сих пор. Все идет к одному и тому же клиенту, к одному и тому же порту, и все же по какой-то причине этот ответ 227 никогда не проходит. Я полностью поражен тем, почему.

Вот скриншоты взаимодействия клиента и сервера:

Захват клиента Захват клиента

Как вы можете видеть, он никогда не получает ACK для своей команды PASV. Он пытается еще раз, а затем сдается.

Захват сервера Захват сервера

Как вы можете видеть, он получает команду PASV и отправляет ответ, но никогда не достигает клиента. Позже он получает повторную передачу и отправляет ответ еще 3 раза, но опять-таки не проходит. Затем он отключается.

Я не могу представить, как возможно, что все другие TCP-пакеты без проблем попадают с сервера на клиент, но этот конкретный TCP-пакет не делает. Заголовки TCP одинаковы для всех пакетов, поступающих на сервер и с сервера, соответственно, поэтому, насколько я понимаю, все маршрутизаторы, брандмауэры, интернет-провайдеры и т.д. Должны относиться к ним одинаково, если только они не перехватывают пакеты.

4 ответа4

3

Я только что столкнулся с той же проблемой и нашел этот вопрос, когда искал решение. В моем случае проблема была вызвана брандмауэром (Sonic Wall), который определил ответ сервера как возможную атаку FTP и сбросил соединение. Решением было изменить пассивный параметр на FTP-сервере и ввести внутренний IP-адрес в качестве ответа на PASV. Затем брандмауэр обнаружил его как правильный ответ и преобразовал ответ во внешний адрес, прежде чем передать его клиенту. Это очень неправильно, так как это работает в сочетании с этим брандмауэром.

1

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

Для будущих читателей мой модем / маршрутизатор - это Motorola SBG6580 SurfBoard. Стандартная проблема для моего провайдера EastLink. Он был предварительно настроен со многими такими "функциями", и некоторые из них, по-видимому, приводили к повреждению исходящих пакетов на уровне кадра Ethernet II.

0

Я встретил точно такую же проблему на моем сервере Windows 7. Клиент не смог получить пакет «227, входящий в пассивный режим». Проблема должна быть на стороне сервера. Я отключил все брандмауэры, но все равно получил тот же результат. Наконец я нашел причину. В Центре управления сетями и общим доступом вы не можете установить для своего сетевого расположения значение "Публичная сеть". Потому что окна рассматривают Общедоступную сеть как ненадежную. Любые попытки подключить ваш компьютер будут расценены как риски и заблокированы. Просто установите "Рабочая сеть", и сервер будет работать нормально.

0

Я думаю, что это известная проблема с версией FileZilla <3.6.0.2, вы случайно не используете старую версию?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .