Назад | Перейти на главную страницу

почему тайм-аут wget в PASV на ftp-сайтах с облачной оболочкой Google?

вот три очень простых команды оболочки:

wget 'ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Dataset_Documentation/NHIS/2016/samadult_layout.pdf'

и

wget 'ftp://ftp.ibge.gov.br/Censos/Censo_Demografico_2010/Resultados_Gerais_da_Amostra/Microdados/1_Atualizacoes_20160311.txt'

и

wget ftp://ftp.cs.ru.nl/pub/robots.txt

которые пытаются получить данные с государственных ftp-сайтов. они добираются до PASV потом повесьте. скриншоты ниже .. мне нужно изменить какие-то настройки или что-то в этом роде? Спасибо!

и

Похоже, Google Cloud Shell разрешает только исходящие порты 80 (HTTP), 443 (HTTPS), 8080 (иногда используется для HTTP-прокси), 22 (SSH) и 21 год (Канал управления FTP). Возможно, некоторые другие порты тоже, но определенно это не неограниченный открытый исходящий доступ.

К сожалению, этого недостаточно для успешного FTP-соединения - FTP передает данные по отдельному TCP-соединению, инициированному клиентом (пассивный режим) или сервером (активный режим). Ни один из этих двух методов, похоже, не работает.

Один из способов обойти это - загрузить файлы через HTTP или HTTPS. Если, конечно, они доступны по этим протоколам. Например, файл в вашем последнем примере можно получить как https://ftp.cs.ru.nl/robots.txt из Google Cloud Shell.

Другой способ - настроить прокси HTTP / FTP на порт 8080, например при установке небольшого вычислительного экземпляра squid пакет и используйте этот прокси для загрузки файлов. Что-то вроде этого:

export ftp_proxy=http://your-instance:8080/
wget ftp://ftp.cs.ru.nl/pub/robots.txt

Третий вариант - это, очевидно, загрузить файлы FTP на локальный компьютер и сделать их доступными через службу хранения файлов по HTTPS.

К сожалению, похоже, что FTP не будет работать из облачной оболочки ни в активном, ни в пассивном режиме. Вам придется обойти это одним из способов, описанных выше.

Удачи с этим :)

Из-за плохой природы протокола FTP и того, как он нарушает TCP: http://slacksite.com/other/ftp.html

попробуйте добавить --no-passive-ftp опция wget, если серверы настроены на работу с активным FTP - это может помочь.

Я подозреваю, что некоторые из этих серверов не настроены для приема пассивного FTP или маршрутизаторов между отслеживанием TCP-соединений, но не идентифицируют и не отслеживают FTP-соединения должным образом. Фактически, я смог использовать для них пассивный ftp со своего сайта, так что проблема где-то между GC и этими сайтами.

РЕДАКТИРОВАТЬ: я не видел «Cloud Shell» в заголовке вопроса, и быстрый тест показывает, что Cloud Shell действительно не работает. Ответ ниже относится к обычным случаям, в которых нет никаких проблем.


Собственно, это работает.

Вышеупомянутое взято из законного экземпляра GC, в данном случае неограниченного бесплатного использования Google для каждой учетной записи Google.

Сначала я подумал, может быть, вы редактировали настройки сети. Вероятно, нет.

И тогда я понял ... подождите, если вы этого не сделали, ваш экземпляр, вероятно, все еще находится на динамическом IP, что может быть причиной! Имеет смысл, что если ваш IP-адрес динамический, Google может немного CGNAT в теме. Хотя не уверен.

Мой экземпляр, конечно, находится на статическом IP, которые бесплатны. Войти в Сеть VPC, создайте новый IP-адрес, вернитесь к экземплярам, ​​щелкните экземпляр (вам нужно будет остановить его) и в разделе Сетевые интерфейсы настроить новый IP. То есть IIRC, что я сделал.

ПРЕДУПРЕЖДЕНИЕ. Google взимает 10 центов за час за неиспользованные статические IP-адреса. Вам нужно сразу связать его с экземпляром.

Информация об IP-адресе: https://cloud.google.com/compute/docs/ip-addresses/

Информация о ценах: https://cloud.google.com/compute/pricing