Я настраиваю безопасный FTP-сервер на машине Ubuntu 16.04 в Azure. Это FTP через TLS с отключенным анонимным доступом.
Попытка использовать сервер с помощью Filezilla работает нормально - аутентификация, передача, список каталогов - все ... кроме того, что я получаю следующее предупреждение от Filezilla:
Сервер отправил пассивный ответ с не маршрутизируемым адресом. Вместо этого используется адрес сервера.
Конечно, это имеет смысл - виртуальная машина имеет частный IP-адрес и в пассивном режиме отправляет этот частный IP-адрес клиенту. Решение - добавьте в vsftp.conf следующее (это пример, а не фактическая конфигурация):
pasv_enable=YES
port_enable=YES
#The VM allows connections to ports 12345 & 12346 - remember, this is an example
pasv_min_port=12345
pasv_max_port=12346
#The VM's domain name
pasv_address=myftpservervm.cloudapp.net
#Make vsftp resolve myftpservervm.cloudapp.net and send that IP address to clients
pasv_addr_resolve=YES
Потом перезапускаю vsftp, и ... ничего не происходит. Я до сих пор получаю такие:
Сервер отправил пассивный ответ с не маршрутизируемым адресом. Вместо этого используется адрес сервера.
Я даже пробовал установить pasv_address
на точный (внешний) IP-адрес сервера (с и без pasv_addr_resolve=YES
) и результат тот же.
Я что-то упускаю?
Я использую vsftpd 3.0.3 (из репозитория Ubuntu) с Filezilla 3.24.0 на Ubuntu 16.04 x64
Редактировать:
Очевидно vsftp отправляет IP-адрес 0.0.0.0
при входе в пассивный режим. это вопрос кажется актуальным.
Тестирую в своей лаборатории, сначала столкнулся с такой же проблемой, как и вы. Я проверил следующие шаги:
1.netstat -ant
Я получаю следующий результат
tcp6 0 0 172.17.1.4:21 167.220.255.56:10979 TIME_WAIT
Исходя из моего опыта, ftp должен слушать tcp
не tcp6
на виртуальной машине Azure
2. пытаюсь изменить файл конфигурации /etc/vsftpd.conf
.
listen=yes
listen_ipv6=no
Затем я перезапускаю службу ftp и проверяю, используя netstat -ant
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
Примечания: вы должны открыть порты 20,21,12345-12346 в Azure NSG (правило для входящих подключений).
Вам нужна небольшая модификация. Отредактируйте /etc/vsftpd.conf или любой другой файл конфигурации и сделайте это изменение:
pasv_address=public_ip_of_aws_instance_not_hostname_or_private_ip
Сохраните файл, перезапустите службу vsftpd и проверьте еще раз!
Убедитесь, что пассивные порты шлангов находятся в списке разрешенных tcp в ваших группах безопасности (вы можете настроить их на панели инструментов AWS EC2).