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が正しく機能するためには、「関連、設定」のいくつかのカーネルモジュールをロードする必要があります。 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
。