
Как запустить пассивный FTP-сервер на виртуальной машине Azure Linux?
Настроить конечные точки на брандмауэре Azure и портах PASV недостаточно, поскольку клиент зависает на «Переходе в пассивный режим»
решение1
В настоящее время запуск пассивного FTP так же гладко, как на выделенном сервере, невозможен по двум причинам: во-первых, Azure в настоящее время позволяет открывать только 25 конечных точек (поправьте меня, если я ошибаюсь) для каждого сервера, а во-вторых, это соединение LAN<->Virtual IP, которое использует Azure. Давайте рассмотрим проблемы по одной.
В настоящее время Azure реализует NAT/брандмауэр/балансировщик нагрузки, который перенаправляет трафик с внешнего виртуального IP на внутренний сетевой адрес ( 10.0.0.0/8
класс). Если вы запустите ifconfig
на своей виртуальной машине, вы поймете, о чем я говорю. Одна конечная точка зарезервирована для SSH, и я не думаю, что вы действительно хотите ее отключить. Поэтому, если другая конечная точка зарезервирована для порта 21, вы можете использовать только 23 порта PASV (если только вы не размещаете никакую другую службу), строго ограничивая количество клиентов, которые могут подключаться одновременно. Как только вы это примете, давайте продолжим.
Если вы открыли порты 25003-25006 (по одному), вы можете использовать следующую конфигурацию, чтобы включить их
pasv_enable=YES
pasv_min_port=25003
pasv_max_port=25006
vsftpd
и любой другой FTP-сервер выдает PASV
команду, которая по сути говорит "подключиться к XYWZ на порту AA". Любой FTP-сервер должен прочитать конфигурацию машины, чтобы получить сетевой адрес: вот почему vsftp по сути говорит "подключиться к 10.XYZ на порту 25003" и, затем, почему клиент зависает!!!
Используйте следующее, чтобы указать vsftpd использовать другой внешний адрес
pasv_addr_resolve=YES
pasv_address=dom.cloudapp.net
Протестировано, отработано и представлено сообществу!
Примечания: Активный FTP работает, если клиент не находится за брандмауэром или Great Wall, а SFTP является лучшей альтернативой FTP, но, к сожалению, многие устаревшие приложения его не поддерживают.