ループバック インターフェイスは仮想インターフェイスです。ループバック インターフェイスの唯一の目的は、送信されたパケットを返すことです。つまり、送信したものはすべてインターフェイスで受信されます。ループバック インターフェースにデフォルト ルートを配置することはほとんど意味がありません。これがパケットを送信できる唯一の場所は、インターフェースの出力から入力にループされる架空のワイヤ部分だからです。ループバック インターフェイスのこの動作を変更できるものは何もありません。それがコード化されていることです。
10.0.3.2 に ping を実行すると、外部デバイスからではなく、ループバック インターフェイス自体から応答が返されます。たとえば、ループバック インターフェイスにアドレスを追加すると、
sudo ip addr add 10.0.3.1/24 dev lo
10.0.3.0/24
へのルート が追加されます。これは
ip route show table local
のようなもの
local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
現れるはずです。このルーティング テーブル エントリは、パケットが 10.0.3.1
の間の任意のアドレスに送信されたことを示します。 そして 10.0.3.254
lo
経由で送信されます そこからすぐに返されます。
編集:以下のコメントへの応答としての説明。
10.0.3.2 に ping を実行すると、次のようになります。カーネルは、宛先アドレスが 10.0.3.2 の配信用 IP パケットを取得します。配信されるパケットと同様に、カーネルはルーティング テーブルを参照します。この場合、一致するエントリは次のとおりです:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
、これは、パケットが lo
経由で配信される必要があることを示しています 送信元アドレス 10.0.3.1 とのインターフェース。
ここで、パケットが lo
に渡されたため インターフェイスでは、ループバック インターフェイスは通常の動作を行います。つまり、パケットを送信キューから取り出し、受信キューに置きます。カーネルの観点からは、ソケットをリッスンしているサーバー プロセスが消費する準備が整った着信パケットを受信しました。 (ping の場合、カーネルはそれを内部で処理します。)宛先アドレスが 10.0.3.2 の「リモート」ICMP パケットを受信しました。これはおそらくローカル アドレスの 1 つではありませんが、ループバックに配信されました。
次に、カーネルは ping への応答を送信します。アドレスが反転された ICMP 応答パケット (送信元アドレスとして 10.0.3.2、宛先として 10.0.3.1) が送信されます。これは、ループバック インターフェイスを介して ping プログラムに返されます。これは、10.0.3.2 から応答があったことを示しています。