Чтобы настроить пассивный режим для 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
Моя зона 'public', поэтому я установил свою зону на public, добавил диапазон портов, и после этого мы перезагрузили:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
Что происходит, когда вы делаете соединение
Ваш клиент устанавливает соединение с сервером vsftpd через порт 21.
Сервер отвечает клиенту, сообщая ему, к какому порту подключаться из диапазона, указанного выше.
Клиент устанавливает соединение для передачи данных на указанном порту, и сеанс продолжается.
Здесь есть отличное объяснение различных режимов ftp .
max
порт послеmin
... но что более важно, если вы открываете порты с 10090 по 10100, это 11 портов, а не 10, как вы говорите.