iptables FTP 下載問題 -- 允許連接埠 21 連接,但“網路無法存取”

iptables FTP 下載問題 -- 允許連接埠 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

應該做。 AFAIK 沒有用於在啟動時自動載入模組的跨發行版方法,但在 Fedora 上您可以新增:

IPTABLES_MODULES="nf_conntrack_ftp"

/etc/sysconfig/iptables-config。在使用systemd但沒有此文件的其他系統上,請參閱man modules-load.d

相關內容