iptablesのテーブルとチェーンの走査方法


22

Linuxには3つの組み込みテーブルがあり、それぞれに次のような独自のチェーンがあります。

フィルター:事前、事前、事後

NAT:事前ルーティング、入力、出力、ポストルーティング

MANGLE:事前ルーティング、入力、転送、出力、ポストルーティング

しかし、もしあれば、どの順序でどのようにトラバースされるのか理解できません。たとえば、次の場合にどのようにトラバースされますか?

  1. 同じローカルネットワークのPCにパケットを送信します
  2. 別のネットワークのPCにパケットを送信するとき
  3. ゲートウェイがパケットを受信し、それを転送する必要がある場合
  4. 自分宛のパケットを受け取ったとき
  5. その他の場合(ある場合)

回答:


28

ウィキペディアには、処理順序を示す優れた図があります。

詳細については、iptablesのドキュメント、特にテーブルとチェーンのトラバースの章を参照してください。また、フロー図が含まれています

順序は、netfilterの使用方法(ブリッジまたはネットワークフィルターとして、およびアプリケーションレイヤーとの相互作用があるかどうか)によって異なります。

一般に(上記のリンクの章の詳細にはさらに悪魔がありますが)チェーンは次のように処理されます:

  • INPUTチェーンを「外部からこのホストへのトラフィックインバウンド」として参照してください。
  • 「このホストをルーターとして使用するトラフィック」としてFORWARDチェーンを参照してください(ソースと宛先はこのホストではありません)。
  • このホストが送信したいトラフィック」として出力チェーンを参照してください。
  • PREROUTING / POSTROUTINGには、テーブルタイプごとに異なる用途があります(たとえば、natテーブルの場合、PRERROUTINGはインバウンド(ルーティング/転送)SNATトラフィック用、POSTROUTINGはアウトバウンド(ルーティング/転送)DNATトラフィック用です。詳細。

さまざまなテーブルは次のとおりです。

  • Mangleは、トラバース時にパケット(サービスの種類、生存期間など)を変更することです。
  • NatはNATルールを設定します。
  • Rawは、マーキングと接続追跡に使用されます。
  • フィルタは、パケットをフィルタリングするためのものです。

5つのシナリオの場合:

  1. 送信ホストがiptablesを使用するホストの場合、OUTPUT
  2. 上記と同じ
  3. FORWARDチェーン(ゲートウェイがiptablesを持つホストである場合)
  4. 「me」がiptablesを持つホストの場合、INPUT
  5. 上記のチェーンルール(一般的な経験則)とフロー図を見てください(これはIPTableで達成しようとしているものによって異なります)。

最近、このリンクに出会いました-stuffphilwrites.com/2014/09/iptables-processing-flowchart。Phil Hagenによる素晴らしいフローチャートがあります。
slm

1
別の優れたリソース-digitalocean.com/community/tutorials/…
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.