Ruby Net::FTP через SOCKS: вход работает, загрузки зависают
Проследите управляющее и информационное соединения Ruby FTP по одному и тому же предполагаемому маршруту прокси.
Вход в FTP использует управляющее соединение. Затем для списка каталога или загрузки нужно соединение данных, которое может не установиться, хотя вход через SOCKS прошёл успешно.
Сначала определите пассивный или активный режим. В пассивном режиме клиент открывает новое соединение на адрес и порт, которые сообщает FTP-сервер. Этому соединению тоже нужен предполагаемый маршрут прокси.
Интеграция сокетов в Ruby
Net::FTP API в Ruby документирует поведение соединения и пассивного режима. Интеграция SOCKS должна охватывать создание сокета, которое используют и управляющий, и информационный путь; настройка прокси HTTP-клиента в другом месте их не настраивает.
Если интеграция меняет поведение сокета глобально, проверьте её область по потокам. Блок вокруг одной передачи не может изолировать другие потоки от изменений общего состояния.
Провайдер может предложить статическую точку входа, но это функция сервиса, а не общее требование SOCKS. Там, где отдельные соединения могут использовать разные выходы, проверьте, как FTP-сервер связывает своё соединение данных с аутентифицированным управляющим соединением.
Запишите достигнутый этап, режим и конечную точку данных, убрав учётные данные. Это отличает заблокированный путь данных от неудачного входа в прокси.