Die Loopback-Schnittstelle ist eine virtuelle Schnittstelle. Der einzige Zweck der Loopback-Schnittstelle besteht darin, die an sie gesendeten Pakete zurückzusenden, d. h. alles, was Sie an sie senden, wird auf der Schnittstelle empfangen. Es macht wenig Sinn, eine Standardroute auf die Loopback-Schnittstelle zu legen, da der einzige Ort, an den sie Pakete senden kann, das imaginäre Stück Draht ist, das vom Ausgang der Schnittstelle zum Eingang geschleift wird. Es gibt nichts, was dieses Verhalten der Loopback-Schnittstelle ändern kann, dafür ist es codiert.
Wenn Sie 10.0.3.2 anpingen, kommt die Antwort nicht von einem externen Gerät, sondern von der Loopback-Schnittstelle selbst. Wenn Sie eine Adresse auf der Loopback-Schnittstelle mit z. B.
hinzufügensudo ip addr add 10.0.3.1/24 dev lo
eine Route zu 10.0.3.0/24
hinzugefügt. Sie können dies mit
ip route show table local
So etwas wie
local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
sollte sich zeigen. Dieser Routing-Tabelleneintrag gibt an, dass ein Paket an eine beliebige Adresse zwischen 10.0.3.1
gesendet wird und 10.0.3.254
wird über die lo
gesendet Schnittstelle, von der es sofort zurückgegeben wird.
EDIT:Klarstellung als Antwort auf den Kommentar unten.
Folgendes passiert, wenn Sie 10.0.3.2 pingen:Der Kernel erhält ein IP-Paket zur Zustellung mit der Zieladresse 10.0.3.2. Wie bei jedem zuzustellenden Paket konsultiert der Kernel die Routing-Tabelle. In diesem Fall lautet der passende Eintrag:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
, was besagt, dass das Paket über lo
zugestellt werden soll Schnittstelle mit der Quelladresse 10.0.3.1.
Nun, weil das Paket an lo
übergeben wurde -Schnittstelle, macht die Loopback-Schnittstelle das, was sie normalerweise tut:Sie nimmt das Paket aus der Sendewarteschlange und stellt es in die Empfangswarteschlange. Aus der Sicht des Kernels haben wir nun ein eingehendes Paket erhalten, das bereit ist, von einem Serverprozess verarbeitet zu werden, der auf einem Socket lauscht. (Im Fall von Ping verarbeitet der Kernel es intern.) Wir haben jetzt ein "entferntes" ICMP-Paket mit einer Zieladresse von 10.0.3.2 erhalten, was wohl keine unserer lokalen Adressen ist, aber es wurde an den Loopback geliefert Schnittstelle dennoch.
Als nächstes sendet der Kernel eine Antwort auf den Ping:ein ICMP-Antwortpaket mit vertauschten Adressen:10.0.3.2 als Quelladresse und 10.0.3.1 als Ziel. Dies wird über die Loopback-Schnittstelle zurück an das Ping-Programm geliefert, was zeigt, dass wir eine Antwort von 10.0.3.2 erhalten haben.