Проблемы с загрузкой по FTP с помощью iptables — подключение к порту 21 разрешено, но «Сеть недоступна»

Проблемы с загрузкой по FTP с помощью iptables — подключение к порту 21 разрешено, но «Сеть недоступна»

Я пытаюсь подключиться к FTP-сайту, но, например, с помощью wget:

Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /gcrypt/gnutls ... done.
==> SIZE v3.2 ... done.
==> PASV ... couldn't connect to 217.69.76.55 port 40258: Network is unreachable

Если я отключаю iptables, то все работает, так что проблема, очевидно, в этом. Но я уверен, что все настроено правильно:

# Accept related, established...
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# ftp/http(s) clients
-A OUTPUT -p tcp -m multiport --dports 21,80,443,8080 -j ACCEPT
-A OUTPUT -p udp --dport 21 -j ACCEPT

В чем дело?

решение1

Iptables требует загрузки некоторых модулей ядра для работы "RELATED, ESTABLISHED". Если ваши HTTP-клиенты в порядке, то, очевидно, у вас есть некоторые из них.

 > lsmod | grep conntrack
 nf_conntrack_ipv4      20258  6 
 nf_defrag_ipv4         12702  1 nf_conntrack_ipv4
 xt_conntrack           12760  6 
 nf_conntrack           99996  2 xt_conntrack,nf_conntrack_ipv4

Однако драйвер для ftp, nf_conntrack_ftpявляется дополнительным и, в отличие от драйвера устройства или файловой системы, не будет автоматически загружен ядром.

 > modprobe nf_conntrack_ftp

Должно подойти. Насколько мне известно, не существует кросс-дистрибутивного метода для автозагрузки модулей при загрузке, но в Fedora вы можете добавить:

IPTABLES_MODULES="nf_conntrack_ftp"

в /etc/sysconfig/iptables-config. В других системах, которые используют, systemdно не имеют этот файл, см man modules-load.d. .

Связанный контент