Wie ist das Loopback-Gerät implementiert?

8

Die Loopback-Netzwerkschnittstelle

ist ein virtuelles Netzwerkgerät, das vollständig in Software implementiert ist.

Aber wie wird diese Implementierung tatsächlich durchgeführt und wie manipulieren Sie sie?

Soweit ich weiß, werden IPs in der lokalen Routing-Tabelle als lokal markiert:

ip route show table local  

Das Senden an eine als lokal gekennzeichnete IP-Adresse löst das Loopback-Gerät aus. Aber wird diese Erkennung nur durch Routing-Tabellen oder auch durch andere Kernel-Operationen durchgeführt?

Bearbeiten: Mein oberstes Ziel ist es, die Konfiguration des Loop-Geräts so zu manipulieren, dass das Senden von Datagrammen zwischen meinen Schnittstellen (zwei WLAN-Adaptern) auf meinem Laptop zu echtem Datenverkehr / Datagrammen im Netzwerk und nicht zu lokalen Loops führt. Schnittstelle 1 -> WLAN -> Schnittstelle 2 und NICHT: Schnittstelle 1 -> LOOP -> Schnittstelle 2

Skyo Livede
quelle

Antworten:

5

Es wird vollständig über die Routing-Tabellen abgewickelt.

Es ist ziemlich einfach, es in einer virtuellen Maschine auszuprobieren, wenn Sie Spaß haben möchten. Ich übernehme keine Verantwortung für irgendetwas, das auf der Maschine passieren könnte, auf der Sie dies versuchen.

Lassen Sie uns zuerst die Netzmaske von lo255.255.0.0 ändern :

sudo ip addr del 127.0.0.1/8 dev lo; sudo ip addr add 127.0.0.1/16 dev lo

Schauen wir uns jetzt unsere an lo:

$ ip -4 addr show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    inet 127.0.0.1/16 scope host lo

Wohin würden Pakete zu 127.1.1.1 gehen?

$ sudo ip route get 127.1.1.1
127.1.1.1 via 172.16.22.2 dev eth0  src 172.16.22.130 
    cache  mtu 1500 advmss 1460 hoplimit 64

Wir fangen an, in einem anderen Terminal zu pingen:

$ ping 127.1.1.1

Lassen Sie uns den ICMP-Verkehr auf eth0 überwachen:

$ sudo tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
07:28:42.060077 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 4, length 64
07:28:43.059920 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 5, length 64

Ich überlasse Ihnen die Übung, die Netzmaske loeines Remotecomputers auf 255.255.0.0 zu ändern und die IP-Adresse 127.1.1.1 zu deren Netzwerkschnittstelle hinzuzufügen. Sie können sehen, dass ICMP-Antworten zurückkommen. Beachten Sie, dass Router möglicherweise nicht gut funktionieren.

Pierre Carrier
quelle