1

CentOS6 に ProFTPD サーバーをインストールしました。ftp localhost にすれば正しく接続できるのですが、外部から接続しようとすると「no route to host」というメッセージが出てしまいます。しかし、私はSSH経由で接続しているため、ホストへのルートがあります。

次のiptableルールを追加してみました:

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

proftpd と iptables サービスの両方を再起動しました。この問題をトラブルシューティングするにはどうすればよいですか?

4

1 に答える 1

4

FTP を許可するには、サーバーで次のルールが必要です。

  1. 次のように、クライアントによって開始されたポート 21 への制御接続を許可します。

    iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
    iptables -A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
    
  2. アクティブ モードの場合、次のように、ポート 20 からサーバーによって開始されるデータ接続を許可します。

    iptables -A OUTPUT -p tcp -m tcp --sport 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
    iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
    
  3. パッシブ モードの場合、特権のないポートでクライアントによって開始されたデータ接続を許可します。

    iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
    iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
    

通常のconntrackモジュールは、データ接続がアクティブ モードで確立されたときに正しく追跡する必要がありますが、そのような接続がパッシブ モードで確立されたときに正しく追跡するには、モジュールRELATEDをロードする必要がある場合があります。nf_conntrack_ftp

  • がロードされているかどうかを確認しlsmod | grep nf_conntrack_ftpます。
  • でロードしmodprobe nf_conntrack_ftpます。

RELATEDまたは、状態を状態に置き換えることもできますNEW。これは安全性は低くなりますが、確実に仕事を完了できます。

このリンクは、上記のルールの論理的根拠の簡潔な要約を提供します。

于 2014-10-30T19:10:08.823 に答える