Linux TCPスタックの処理は、netfilterの前後に発生しますか?

Linux TCPスタックの処理は、netfilterの前後に発生しますか?

Linux netfilterには、さまざまなOSIモデル層に複数のフックがあります。これビデオ。しかしながら、TCPなどのトランスポート層プロトコルは、再送または輻輳制御などのさらなる処理を必要とする。 netfilterフレームワークや特定のフックの前または後にこのようなことが起こりますか?そしてなぜこのように設計されたのか。ソースコードの説明をご覧ください。

答え1

ソースコードを注意深く読まなくても、テストはかなり簡単です。

特定のIPの特定のポートのみを許可するファイアウォールルールセットを実行しているコンピュータで、問題のポートのtcpdumpを構築し、コンピュータからそのIP:ポートに接続しようとします。いいえ許可される。

着信要求が表示されます。

答え2

わかりました。この動画Devconf 2018では、Jiri BencとLinuxネットワークパイプについて話します。 TCPはトランスポート層プロトコルです。パケットがそれを使用するには、ネットワークスタックが最初にデータリンクとネットワーク層ヘッダーを解析する必要があります。次に、dst_inputパケットがローカル処理用か転送用かを確認します。スライド62で、彼はパケットがローカルで処理されるべきであるならば、TCPステートマシンはINPUTネットフィルタのフックの後にそれを処理するだろうと述べました。具体的な実装については、tcp_v4_rcvの機能を参照してくださいlinux/net/ipv4/tcp_ipv4.c

関連情報