Всякий раз, когда я устанавливаю vsftpd
на centos
, я настраиваю только среду jail для пользователей, а остальное — это конфигурация по умолчанию vsftpd
. Я создаю пользователя и пытаюсь подключиться с помощью filezila
ftp-клиента, но не могу подключиться в пассивном режиме. Я всегда меняю transfer settings
на активный режим, чтобы успешно подключиться к , ftp server
иначе я получаю
Error: Failed to retrieve directory listing
Так есть ли способ изменить любую директиву в vsftp.conf
файле и подключиться к серверу в пассивном режиме?
решение1
Чтобы настроить пассивный режим для vsftpd, вам необходимо задать некоторые параметры в vsftpd.conf.
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
Это включает пассивный режим и ограничивает его до использования одиннадцати портов для подключений к данным. Это полезно, поскольку вам нужно открыть эти порты на вашем брандмауэре.
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
Если после проверки все заработало, сохраните состояние вашего брандмауэра с помощью
service iptables save
что обновит /etc/sysconfig/iptables
файл.
Чтобы сделать это в CentOS 7, вам придется использовать новый firewalld, а не iptables:
Найдите свою зону:
# firewall-cmd --get-active-zones
public
interfaces: eth0
Моя зона — «публичная», поэтому я устанавливаю ее как публичную, добавляю диапазон портов, и после этого перезагружаюсь:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
Что происходит, когда вы устанавливаете связь
Ваш клиент подключается к серверу vsftpd через порт 21.
Сервер отвечает клиенту, сообщая ему, к какому порту из указанного выше диапазона подключиться.
Клиент устанавливает соединение для передачи данных через указанный порт, и сеанс продолжается.
Есть отличное объяснение различных ftpрежимыздесь.
решение2
Чтобы включить пассивный режим, задайте следующие параметры конфигурации в файле vsftp.conf:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
Конечно, вы можете изменить начальный и конечный порт, а вместо xxx следует указать публичный IP-адрес вашего сервера.
Кроме того, вам следует открыть диапазон портов пассивного режима в вашем брандмауэре. На CentOS вы можете загрузить модуль ip_conntrack_ftp
для обработки ftp-подключений в вашем брандмауэре. Отредактируйте /etc/sysconfig/iptables-config
и добавьте ip_conntrack_ftp в параметр IPTABLES_MODULES. После этого перезапустите iptables:
/sbin/service iptables restart
решение3
Рядом с pasv_enable=YES
укажите диапазон портов, в котором VSFTP будет работать в режиме PASV:
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
Не забудьте настроить iptables так, чтобы он разрешал передачу пакетов на этих портах:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
решение4
Обычно не FTP-сервер, vsftpd, а брандмауэр, такой как iptable, препятствует использованию пассивного режима (блокируя TCP-соединение, необходимое для передачи данных).