
eth0
(IPアドレス192.168.1.16
)とeth2
(IPアドレス10.10.10.73
)の2つのインターフェースを持つコンピュータがあります。また、main
テーブル内のこのPCには、宛先アドレスがインターフェイスを172.16.1.1
使用しているかどうかを示すホストパスがあります。eth0
172.16.1.1
10.10.10.73
(インターフェイス)からICMP "Echo Request"を送信すると、送信元IPeth2
を使用してICMP "Echo Response"が送信されます(RPFは無効になっています)。そのホストルーティングのため、これらはすべて期待どおりに機能します。eth0
192.168.1.16
ただし、ルール番号の後にip rule
セレクタとアクションを追加し、from 10.10.10.73
テーブルにインターフェイスを使用するデフォルトパスのみを含めると、ICMP「エコー応答」がインターフェイスから送信されます。lookup test
0
test
eth2
eth2
このセレクタがどのようにfrom 10.10.10.73
一致するのか混乱しています。 ICMP「エコー応答」メッセージのライフサイクルでソースIP10.10.10.73
マッチングはいつ発生しますか?
答え1
~によるとLinuxを使用したポリシールーティングブック、ローカルコンピュータから外部システムに送信されたパケットは、出力チェーンを通過した後にルーティングポリシーデータベースに入り、セレクタはfrom 10.10.10.73
そこのアウトバウンドエコー応答パケットと一致します。10.10.10.73
172.16.1.1
~からhttp://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH03.web.html:
内部サービスを対象とする外部ソースパケットのパスを検討してください。これはシステムに入り、受信パケットのクリーンアップと表示フェーズPre-Route(1)によって処理されます。このステップでは、fwmark や TOS/QoS 表示、NetFilter NAT などのパケット管理タスクを適用します。その後、パケットはルートを取得するためにRPDBに入り、入力(2)チェーンにルーティングされます。入力チェーンは、ローカルシステムサービスに向けられたパケットにファイアウォール機能を提供します。
逆の場合は、前の段落で説明した応答パケットなど、外部システムに向けられた内部サービスで発生するパケットのパケットパスです。ローカルシステムをシャットダウンし、ファイアウォール機能を提供する出力(4)チェーンに入ります。その後、ルーティング処理のためにRPDBに入り、パケット変更を終了し、Post-Route(5)ステップを表示してシステムをシャットダウンします。
答え2
from 10.10.10.73
エコー応答がこのアドレスから送信されたため、セレクタは一致します。ただし、この場合は続行することはお勧めできません。from 10.10.10.73
eth0以外のインターフェイスには何でも適用される可能性があるため、この場合は間違ったパスが発生します。to 172.16.1.1
IPルールに使用する必要があります。
ip rule
一致する送信元アドレスは、プライベートルックアップテーブルに関連付けられたルーティング決定を使用して、パケットがこのsrc
インターフェイスのルートによって指定されたベースアドレスを無視することを保証するという事実に関連しています。ip route list table local
何が起こるかは、下の図の赤い部分に示されています。カーネルパケット転送図
パケットがip rule
ローカル処理のためにシステムに到達できず、デフォルトパスのため、応答はeth0(明らかにeth0 IPアドレスを持つ)から来ます。ip rule add from 10.10.10.73 table test
ルーティングプロセスはルックアップテーブルを変更し、宛先へのパスを格納したインターフェイスのデフォルトのIPアドレスを使用しないため、応答インターフェイスのIPアドレスが使用されるようになりました。