
eth0
2 つのインターフェース(IP アドレス192.168.1.16
) とeth2
(IP アドレス)を持つ PC があります10.10.10.73
。さらに、この PC の表には、宛先アドレスが の場合はインターフェースを使用するmain
というホスト ルートがあります。172.16.1.1
eth0
172.16.1.1
ここで、ICMP「エコー要求」をから10.10.10.73
(インターフェイス) に送信すると、ソース IP として使用して (RPF は無効になっています)eth2
から ICMP「エコー応答」が送信されます。これはすべて、このホスト ルートによる予想どおりの結果です。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「エコー応答」メッセージの送信元 IP が一致したのはいつ10.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 に入り、ルーティングを取得し、Input(2) チェーンにルーティングされます。Input チェーンは、ローカル マシン サービス宛てのパケットのファイアウォール機能を提供します。
逆のシナリオは、前の段落で説明した応答パケットなど、外部システム宛ての内部サービスソースパケットのパケットパスです。ローカルマシンから出て、ファイアウォール機能を提供する出力(4)チェーンに入ります。次に、ルート処理のためにRPDBに入り、終了パケットのマングリングとタグ付け段階であるPost-Route(5)を経てシステムから出ます。
答え2
from 10.10.10.73
エコー応答はこのアドレスから発行されるため、セレクターは一致します。ただし、その場合、これは推奨される方法ではありません。from 10.10.10.73
その場合、eth0 以外のインターフェイスに送信されるものすべてに適用され、不正なルートが作成される可能性があるためです。代わりに、IP ルールで使用する必要がありますto 172.16.1.1
。
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 アドレスが使用されるようになります。