Ruby Net::FTP через SOCKS: вхід працює, завантаження зависають
Простежте керуюче та інформаційне з'єднання Ruby FTP одним і тим самим передбаченим маршрутом проксі.
Вхід у FTP використовує керуюче з'єднання. Далі список каталогу або завантаження потребує з'єднання даних, яке може не встановитися, хоча вхід через SOCKS пройшов успішно.
Спочатку визначте пасивний або активний режим. У пасивному режимі клієнт відкриває нове з'єднання на адресу й порт, які повідомляє FTP-сервер. Цьому з'єднанню теж потрібен передбачений маршрут проксі.
Інтеграція сокетів у Ruby
Net::FTP API у Ruby документує поведінку з'єднання й пасивного режиму. Інтеграція SOCKS має охоплювати створення сокета, яке використовують і керуючий, і інформаційний шлях; налаштування проксі HTTP-клієнта в іншому місці їх не налаштовує.
Якщо інтеграція змінює поведінку сокета глобально, перегляньте її межі щодо потоків. Блок навколо однієї передачі не може ізолювати інші потоки від змін спільного стану.
Постачальник може запропонувати статичну кінцеву точку, але це властивість сервісу, а не загальна вимога SOCKS. Там, де окремі з'єднання можуть використовувати різні виходи, перевірте, як FTP-сервер пов'язує своє з'єднання даних із автентифікованим керуючим з'єднанням.
Запишіть досягнутий етап, режим і кінцеву точку даних, прибравши облікові дані. Це відрізняє заблокований шлях даних від невдалого входу в проксі.