iptables: テーブルとチェーンの背後にある原理を理解する

iptables: テーブルとチェーンの背後にある原理を理解する

私はiptables チュートリアルそして現在は第6章 テーブルとチェーンの走査

理解に苦しんでいますなぜ上記章に記載されている表6-1、6-2、6-3の背後にあります。

質問:

  1. より良い説明が見つかる、より良い本やオンライン リソースはありますか?

  2. これらの表に記載されているさまざまな手順を暗記/記憶する必要がありますか?

  3. 上記のチュートリアルは何年も前のもののようです。iptablesそこに書かれていることはすべて 100% 有効でしょうか。iptables私のシステムにあるバージョンは です1.4.14

これらすべての疑問は、主に私がこれまでのところ「感じている」ことから生じており、おそらく、iptables私たちに提供すべきだったのは、最低フックポイントのセット(例えば、ルーティング前とルーティング後のフックなど)と、任意上記の表のように詳細な手順の順序を規定するのではなく、パケット処理 (適切と思われる任意の順序で任意の回数 - カスタム ステート マシン) を実行します。たとえば、表 6-3 に続く図では、「filter input」手順が「mangle input」の後にのみ実行され、その前に実行されないのはなぜでしょうか。また、前と後の両方に実行されないのはなぜでしょうか。などなど。

答え1

もっと良い本やオンラインリソースはありますか?

可能でしょうか?おそらく?Linuxとiptablesを学ぶためのオンラインとオフラインのリソースは山ほどあります。ウィキ素晴らしい概要があります。別の使用方法と管理ガイド。こちら別のFrozenTux と同じ情報を含むガイドですが、若干書き直されています。

さまざまな手順を暗記する必要があるのでしょうか

それは状況によります。そもそもなぜ勉強しているのですか?

あなたは必要iptablesを使うためにすべてを記憶する必要があるでしょうか?いいえ。フィルター他のテーブルを定義しない場合はデフォルトになります。iptables を最大限に活用したい場合に役立ちますか? もちろんです。

まだ有効?

はい。

なぜ「入力のフィルタリング」ステップは「入力のマングル」の後にのみ実行され、その前に実行されないのでしょうか? また、なぜ前後両方に実行されないのでしょうか?

鍵となるのは、表 6.1 の 8 行目と 9 行目の記述です。本質的には、実際にパケットをフィルタリングする前に、パケットを変更する (つまり、マングリングする) かどうかを決定する必要があります。

そのため、マングル入力チェーンが最初にヒットし、次にフィルター入力チェーンがヒットします。

同様に、パケットはマシン (iptables を実行しているマシン) に着信するため、手順の順序が重要です。パケットがすでにルーティングされて送信中になった後は、パケットに対して「入力」または着信の決定を行うことはできません。

表 6.3 は表 6.2 の続きではないことに気づくでしょう。代わりに、7 行目 (ルーティングの決定) までは似ていますが、8 行目は異なるパスまたは分岐です。表 6.2 は、同じネットワーク内のパケット用です。表 6.3 は、ネットワーク外のパケット用です。

7 層の OSI モデルを覚えておくことが重要です。データのすべてのビットは、さまざまなセグメント、パケット、およびフレームにパッケージ化され、再パッケージ化されます。ネットワークの「ホップ」ごとに、特定のセグメント、パケット、またはフレームが操作され、書き換えられる機会が生まれます。

iptables は、その再パッケージ化を非常に細かく制御できます。着信パケット、発信パケット、自分のネットワーク専用で他のネットワークには適用しないパケット、またはその逆、自分のデバイス専用、自分のデバイス以外など、ルールを記述できます。また、これらすべてのフレームのさまざまなヘッダーを変更できます。**

** 私は「フレーム」、「セグメント」、「パケット」を自由に混ぜ合わせていることに気づいています。申し訳ありませんが、そうすべきではありません。主張したい場合や特定のネットワーク分析を行う場合を除いて、私は常にそうしています。

関連情報