web-dev-qa-db-ja.com

Netfilterは、パケットが関連していることをどのように理解しますか?

conntrackマッチモジュール--ctstate引数はRELATEDパケット状態をサポートします。 Netfilterは、たとえばアクティブなFTPの場合、FTPサーバーのデータポート(TCPポート20)からクライアントが以前に指定した非特権データポートへの接続がRELATED接続であることをどのように認識しますか? Netfilterには、RELATEDでサポートされている各プロトコルが記述されているモジュールがいくつかありますか?最後になりましたが、このRELATED状態でサポートされているプロトコルのリストはありますか?

2
Martin

さまざまなインターネット制御メッセージプロトコル(ICMP)パケットは、一部のプロトコルの接続(またはその試み)に「関連」している可能性がありますが、これらのICMPパケットは、それらを引き起こしたプロトコルとは異なるため、「関連」の概念です。これは、ホストまたはファイアウォールが宛先到達不能ICMPパケットとのTCPまたはUDP接続の試行を拒否した場合に発生する可能性があります。RELATEDを許可すると、関連するICMPパケットが通過します(TCPにはRSTなので、関連するICMP応答を発行する場合としない場合があり、ファイアウォール管理者はICMP応答を許可する場合と許可しない場合があります...)

アプリケーションレベルのプロトコル(FTPなど)には、それぞれカスタムモジュールが必要です。これは、パケットを掘り下げて、netfilterが認識している他のものとどのように関連しているかを把握するために、カスタムコードが必要だからです。これらのモジュールは、どのアプリケーションでも誰でも作成できますが、使用可能なnf_conntrack_*ファイルを調べることは、リストを開始するのに適した場所です。

% print -l /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/net/netfilter/nf_conntrack_*(:t)
nf_conntrack_amanda.ko
nf_conntrack_broadcast.ko
nf_conntrack_ftp.ko
...
2
thrig