私はLinuxに以下のようにそれぞれ独自のチェーンを持つ3つの組み込みテーブルがあることを知っています。
フィルター:事前配線、配送、事後配線
ネットワークアドレス変換:配線前、入力、出力、配線後
マンレ:事前配線、入力、伝達、出力、事後配線
しかし、私は彼らがどのように通過するのか、どの順序でいるのか理解していません。たとえば、次のような場合、これを繰り返す方法は次のとおりです。
- 同じローカルネットワーク上のコンピュータにパケットを送信します。
- 別のネットワーク上のコンピュータにパケットを送信するとき
- ゲートウェイがパケットを受信してそれを転送する必要がある場合
- 私に送ったパッケージを受け取ったとき
- その他の状況(該当する場合)
答え1
ウィキペディアには一つあります。素晴らしいチャート処理の順序を表示します。
詳細については、iptablesのマニュアルを参照してください。時計チェーンがチャプターを横断する。ここでもフローチャート。
順序は、netfilterの使用方法(ブリッジまたはネットワークフィルタおよびアプリケーション層と対話するかどうか)によって異なります。
一般的に言えば(上記にリンクされている章に詳細がありますが)、チェーンは次のように処理されます。
- INPUTチェーンを「外部からの着信トラフィック」と考えてください。到着このホスト。」
- FORWARDチェーンを「このホストをルーターとして使用するトラフィック」(ソースと宛先いいえこのホスト)。
- OUTPUTチェーンを「トラフィック」と考えてください。これ主人様がお送りします。」
- PREROUTING/POSTROUTING は、表タイプごとに異なる用途に使用されます。たとえば、natテーブルの場合、PREROUTINGはインバウンド(ルーティング/転送)SNATトラフィックに使用され、POSTROUTINGはアウトバウンド(ルーティング/転送)DNATトラフィックに使用されます。詳細については、次を参照してください。特定の詳細に関する文書。
さまざまなテーブルは次のとおりです。
- Mangleは、巡回しながらパケット(サービスタイプ、TTL(Time to Live)など)を変更することです。
- NatはNATルールを置くことです。
- Raw はマークアップと接続の追跡に使用されます。
- フィルタは、データパケットをフィルタリングするために使用される。
したがって、5つのシナリオの場合:
- 送信ホストがiptablesを持つホストの場合
- 同じ上記と
- FORWARDチェーン(ゲートウェイがiptablesを持つホストの場合)
- 「私」がiptablesを持つホストの場合はINPUT
- 上記のチェーンルール(一般的な経験則)とフローチャート(これも場合によって異なります)を見てください。何これを達成するためにIPTablesを使用しようとしています)
答え2
まあ、慣れてた。Phil Hagenのフローチャート(前の回答で述べた@slmのように)以下のASCIIフローチャートです。
network -> PREROUTING -> routing -> INPUT -------> process
raw decision mangle
(conntrack) | filter
mangle | security
nat(*) | nat
V
FORWARD ----\
mangle |
filter |
security |
V
process -> OUTPUT ------------------> POSTROUTING -> network
(routing decision??) mangle
raw nat(*)
(conntrack)
mangle
nat
(output interface assigned here?)
filter
security
(*) Certain localhost packets skip the PREROUTING and POSTROUTING nat
chains. See the post and diagram by Phil Hagen for details.
iptables
私はNetfilterの専門家ではないので、コメント、提案、修正を歓迎します。