Назад | Перейти на главную страницу

iptables позволяет мне подключаться по FTP, но я не могу получить список каталогов

Возможный дубликат:
Разрешение 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"