Доброе утро всем,
Я размещаю FTP-сервер FileZilla (пассивный режим) на сервере WIN 2012 R2, размещенном в MS Azure.
Передача данных по FTP в целом работает нормально. Ежедневно выполняется несколько загрузок и извлечений по FTP.
Я открыл относительно большой диапазон портов (конечных точек) на портале Azure/стороне, чтобы обеспечить пассивный режим.
Время от времени (в среднем раз в два дня) я наблюдаю следующие проблемы с передачей данных по FTP:
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file1
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file2
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file3
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071050
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> CWD dev_updates/Infrastructure/folder
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 250 CWD successful. "dev_updates/Infrastructure/folder" is current directory.
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> PASV
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 227 Entering Passive Mode (104,40,Y,X,234,235)
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 426 Connection closed; aborted transfer of ""
8/8/2016 9:10:01 AM - USER_FILEZILLA (62.154.Y.X)> disconnected.
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> Connected on port 21, sending welcome message...
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-FileZilla Server 0.9.57 beta
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-written by Tim Kosse ([email protected])
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220 Please visit https://filezilla-project.org/
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> USER USER_FILEZILLA
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 331 Password required for
Как уже упоминалось, ежедневно (автоматически) выполняется несколько FTP-передач, охватывающих диапазон портов более 140, назначенных FTP-серверу FileZilla (действующему в пассивном режиме).
У меня есть захват Wireshark, запущенный на виртуальной машине, размещенной в Azure. Из захватов Wireshark я вижу, что события «426 connection closed» на самом деле сопоставляются с RST, полученным от виртуальной машины в Azure и отправленным обратно клиенту, который выдал команду PASV (т. е. в приведенном выше примере FTP-сервер отвечает на команду PASV клиента с портом: 234,235 -> 60139; клиент пытается открыть канал данных на порт 60139, чтобы начать передачу -> FTP-сервер немедленно отвечает (в пределах MS, согласно захвату Wireshark), выдавая RST клиенту).
Я подумал о какой-то проблеме с распределением эфемерных портов на стороне FTP-сервера -> поэтому я уменьшил разрешенный динамический диапазон эфемерных портов ОС, чтобы он не перекрывал диапазон пассивных портов FTP - с помощью
netsh int ipv4 set dynamicport tcp start=49152 num=10000
также я явно добавил резервирование диапазона портов в стек netsh с помощью команды
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
Тем не менее, проблема время от времени возникает.
Я прочитал обширные технические обсуждения на этом веб-сайте, а также на сессии MS Azure technet о том, как Azure отслеживает состояние конечных точек (когда они являются частью набора LB), но это неприменимо в моем случае, поскольку пассивные передачи FTP (извлечение и загрузка) на случайных портах в пределах зарезервированного диапазона пассивных портов FTP, как правило, работают нормально.
При необходимости я могу предоставить дополнительную информацию. В то же время я был бы признателен за дополнительные предложения по устранению неполадок/исследованиям на стороне сервера и клиента (почти уверен, что проблема не связана с сетью или ее конфигурацией).
Я также хотел бы попросить дополнительные предложения по устранению неполадок/исследованию/советы по отладке WinSock для возможных проблем с доступностью сокетов на стороне сервера.