Входът в FTP работи, но списъкът на папката зацикля: защо
Влизането в FTP и списъците на папки използват две различни връзки. Когато списъкът зацикли, проверете адреса на пасивните данни и диапазона от портове, а не паролата.
Потребителското име работи, паролата работи и клиентът казва, че е свързан. След това чака вечно за списък на папка или за първото прехвърляне на файл и нищо в данните за вход не обяснява това. FTP отваря втора връзка за всеки списък и всеки файл и именно тази втора връзка се проваля. Влизането доказва само, че първият разговор работи.
Изпълнете проверките по ред. Всяка изключва различен слой, затова спрете на първата, която даде аномалия.
Първо разделете двете връзки
Управляващата връзка носи командите и отговорите на порта за слушане на сървъра. Връзката за данни носи списъка на папката или тялото на файла, а в пасивен режим сървърът избира своята крайна точка и я обявява в отговора PASV или EPSV. Разрешаването на порт 21 не ви казва нищо за това дали портът за данни е достъпен и точно затова влизането успява, докато всеки списък изтича. Ръководството на WinSCP за FTP режимите обяснява разделянето и неговите мрежови изисквания.
Ако клиентът е зад VPN, пътят на данните минава през същия тунел, но не непременно през същата политика.
Прочетете адреса в отговора PASV
Стартирайте подробен клиент и прочетете отговора, вместо да гадаете. curl -v ftp://user@host/ отпечатва реда PASV с адреса и порта, които сървърът иска, и точно този адрес е мястото, където клиентът се свързва след това. Ако това е частен адрес, който не значи нищо от страната на клиента в тунела, връзката за данни отива наникъде, докато управляващият канал остава здрав.
Сравнете този адрес с адреса, който клиентът действително е достигнал. Несъответствието е отговорът и обикновено идва от NAT или от сървър, конфигуриран с вътрешен адрес.
Проверете диапазона от портове и политиката на тунела
Пасивните сървъри отделят портове за данни от конфигуриран диапазон и този диапазон трябва да бъде разрешен през VPN и всяка защитна стена по пътя. Политика, която разрешава 21 и нищо друго, е политика само за вход. Потвърдете диапазона с този, който администрира сървъра, след което тествайте един порт от него, вместо да предполагате, че целият диапазон се държи еднакво.
Криптираните управляващи канали правят това по-трудно, защото междинно устройство вече не може да презапише обявения адрес в движение.
Знайте кога помага EPSV или резервен вариант
EPSV връща порт без отделен адрес, което премахва отказа заради грешен адрес, когато и двете страни го поддържат. На някои клиенти може да се нареди да игнорират обявения адрес и да използват повторно дестинацията на управляващата връзка. И двете са законни инструменти за конкретна топология, а не универсално решение.
Не изключвайте TLS само за да позволите на помощник да инспектира сесията. Това разменя работещ протокол за счупен модел на заплахи.
Потвърдете със списък и прехвърляне
След като политиката за адреса или порта се промени, отворете нова сесия по същия VPN път и изброете папка. След това прехвърлете малък файл, защото списъкът и прехвърлянето могат да минат по различни кодови пътища на някои сървъри. Проверете журнала на клиента за връзка за данни към очаквания адрес и порт и потвърдете, че байтовете са пристигнали.
Държте FTP, FTPS и SFTP отделно в главата си, докато правите това. Промяната на пасивен порт не е настройка на SFTP и поправката не се пренася между протоколите.