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

FTP-соединение останавливается через 6/8 минут, после этого удаленный IP-адрес недоступен для любого устройства в моей локальной сети

Удаленная машина: VPS под управлением Debian 10; vsftp в качестве ftp-сервера.

Локальный компьютер: рабочий стол Fedora 30 в моей домашней локальной сети. Локальный маршрутизатор: Technicolor AGHP, взятый в аренду у моего оператора связи.

Я пытаюсь загрузить удаленный каталог 1,5 ГБ (~ 21 000 элементов) с помощью

wget -m -c -N -X -v  --debug  -o wgout.txt  ftp://myuser:password@mydomain/html/wp/

Загрузка начинается нормально и продолжается почти 6-8 минут, до ~ 300 МБ, затем останавливается:

250 Directory successfully changed.
done.
conaddr is: ip.ip.ip.ip
==> PASV ... 
--> PASV

227 Entering Passive Mode (ip,ip,ip,ip,234,149).
trying to connect to ip.ip.ip.ip port 60053
Closed fd 4
Closed fd 3
couldn't connect to ip.ip.ip.ip port 60053: Connection timed out
Retrying.

--2020-05-30 21:59:23--  ftp://myuser:*password*@mydomain/html/wp/wp-content/uploads/sites/3/2018/03/
  (try: 2) => ‘mydomain/html/wp/wp-content/uploads/sites/3/2018/03/.listing’
Found mydomain in host_name_addresses_map (0x55ccb875e0e0)
Connecting to mydomain (mydomain)|ip.ip.ip.ip|:21... Closed fd 3
failed: Connection timed out.
Releasing 0x00......0e0 (new refcount 1).
Releasing 0x00......0e0 (new refcount 0).
Deleting unused 0x000055ccb875e0e0.
Resolving mydomain (mydomain)... ip.ip.ip.ip
Caching mydomain => ip.ip.ip.ip
Connecting to mydomain (mydomain)|ip.ip.ip.ip|:21... Closed fd 3
failed: Connection timed out.
Releasing 0x00......10 (new refcount 1).
Retrying.

После этого удаленный IP-адрес недоступен с любого устройства в моей локальной сети (Linux, Win или Android) по любому протоколу (http (s), ssh, ftp), если я не перезагружу маршрутизатор. (удаленный сайт всегда доступен из-за пределов моей локальной сети.)

svftp.conf включает

connect_from_port_20=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=65535  (edited)

Я даже не уверен, где найти проблему: vsftp, маршрутизатор, локальный компьютер.

пс. есть ли способ вызвать openssh-sftp-server, то есть что-то вроде:

    wget  **sftp**://myuser:password@mydomain/html/wp/

Если это проблема слишком большого количества подключений за период времени, вы можете ограничить wget на определенную сумму. Однако, похоже, он не предлагает этой функции. Но вы могли бы использовать --limit-rate чтобы замедлить передачу в целом. Если он будет достаточно медленным, проблема может исчезнуть.

Или вы изменяете загрузку так, чтобы она не создавала большого количества подключений. Один из способов - использовать что-то лучше FTP, как вы это делали с rsync. Вы не указали, есть ли веские причины, по которым вы предпочитаете wget над rsync.

К сожалению wget не поддерживает SFTP, но curl делает (и может быть ближе к тому, что вы хотите, чем rsync.

Если по какой-то причине вы действительно предпочитаете wget поверх чего-либо еще, вы можете создать туннель SSH. Без переадресации портов (так как это не поможет с FTP), но создание виртуальных сетевых интерфейсов с обеих сторон:

ssh -o 'Tunnel point-to-point' ...

wget подключится к удаленному tun Айпи адрес. Для всех промежуточных систем это будет выглядеть как одно длинное соединение. Вы даже можете легко использовать формирование трафика таким образом, чтобы такие передачи не влияли на остальные системы.