Возможный дубликат:
Разрешение FTP с IPTables
У меня довольно ограниченный набор правил iptables со следующим правилом, которое позволяет мне подключаться по ftp
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
Клиенты могут подключаться нормально, но это все, может помочь следующий вывод ftp-клиента непосредственно перед тем, как что-то упадет:
Command: MLSD
Error: Connection timed out
Error: Failed to retrieve directory listing
Когда я останавливаю IP-таблицы, все работает, как ожидалось
Релиз CentOS 5.5 (окончательный)
proftpd-1.3.3c-3
Вам понадобится дополнительное правило, чтобы разрешить «связанные» соединения. Это связано с тем, что протокол FTP использует один порт для команд, а другой - для данных.
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Кроме того, вам потребуется загрузить модуль ядра для отслеживания связанных подключений. Он называется ip_conntrack_ftp, но то, как вы его загружаете, зависит от вашего дистрибутива.
На хедратных системах внимательно следите за /etc/sysconfig/iptables-config
Просто чтобы понять разницу:
Активный FTP: Клиент подключается к порту 21 на сервере. Это канал управления. Получение файлов или списков каталогов - это передача данных, и затем сервер пытается подключиться обратно к клиенту, чтобы отправить их. В наши дни это почти никогда не работает, учитывая, что большинство клиентов подключены к NAT и защищены межсетевым экраном.
Пассивный FTP: Должен быть канал данных, но на этот раз сервер отправляет номер порта обратно клиенту, и клиент инициирует другой подключение обратно к серверу через этот порт.
Причина, по которой у вас истекает время ожидания подключения для передачи данных в пассивном режиме, заключается в том, что порт данных все еще заблокирован. В зависимости от программного обеспечения вашего FTP-сервера вы обычно можете указать диапазон портов, которые сервер отправляет (например: 50000-50010). Затем вам также необходимо принять входящие соединения на этом диапазоне портов. (Убедитесь, что вы также ограничили количество одновременных подключений равным количеству доступных портов.)
Я не знаком с proftpd, но думаю, что он позволяет вам делать то, что вам нужно.
редактировать Ответ Нудла - лучший вариант для разрешения подключений к данным, хотя вы все равно можете указать диапазон портов для простоты отслеживания.
Попробуйте настроить свой клиент на использование пассивного FTP, при условии, что вы используете NAT, это должно работать.
В filezilla он находится в настройках подключения, в командной строке я думаю, что "пассивный" должен включить его, сделайте это перед командой ls / dir.
Вы можете использовать модуль netfilter conntrack:
modprobe nf_conntrack_ftp
И для загрузки при запуске в / etc / sysconfig / iptables-config:
IPTABLES_MODULES="nf_conntrack_ftp"