У меня проблемы с сервером ProFTPD, потому что я не могу настроить его для правильной работы, когда активны несколько портов (IP-адрес один и тот же).
В моем файле proftpd.conf я добавил этот раздел:
<VirtualHost 0.0.0.0>
Port 2122
Umask 022
ServerName "Example"
DefaultRoot /home/usr1/www/example1
UserAlias fuser usr1
# Valid LOGINs
<Limit LOGIN>
AllowUser usr1
DenyALL
</Limit>
</VirtualHost>
Итак, когда я пытаюсь установить соединение с портом 21, все в порядке, и я получаю список каталогов. Но когда я пытаюсь установить соединение с портом 2122, он подключается, но я получаю сообщение об ошибке 500 Illegal PORT command в самом конце.
В брандмауэре Linux открыты порты 21 и 2122.
Это то, что я получаю при выполнении netstat -lpn | grep ftp
tcp6 0 0 :::2122 :::* LISTEN 30597/proftpd: (acc
tcp6 0 0 :::21 :::* LISTEN 30597/proftpd: (acc
Теперь я не уверен, где может быть проблема с этим виртуальным сервером и почему я не могу получить список каталогов в самом конце.
Дело в том, что мне нужно два FTP, так как некоторые пользователи должны подключаться к первому, а некоторые - ко второму. У каждого FTP есть собственный домашний каталог.
При необходимости я могу предоставить полный файл proftpd.conf.
В FTP-сервере есть пассивный и активный режимы, для активного режима вам нужно будет открыть диапазон портов. В активном режиме FTP-сервер открывает случайный порт для передачи данных, затем клиент подключается к случайному порту. Если ваш брандмауэр блокирует этот порт, то перечисление каталогов и передача данных не удастся.
В пассивном режиме клиент открывает новый порт, а затем сообщает серверу подключить его для передачи данных. Пассивный режим не будет работать со всеми маршрутизаторами, клиент может не открыть порт для передачи данных.
Решение: Откройте диапазон портов (например, от 1500 до 2000), затем настройте свой FTP-сервер на использование этих портов.