Welche Bedeutung hat "fe80 :: 1% lo0 localhost" in / etc / hosts?

35

Im Folgenden sind die Einträge in meinem /etc/hosts.

Ich habe mich gefragt, wofür der letzte Eintrag ( fe80::1%lo0 localhost) ist.

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
Kenster
quelle
3
% Lo0 ist eine IPv6-Zonen-ID. Die meisten Systeme unterstützen dies bei Namensdiensten nicht.
Steve-o
3
Welche Anwendungen würden diese Informationen verwenden? Mit anderen Worten, wenn man diese Zeile herausarbeiten würde, was würde sie brechen?

Antworten:

25

Es ist eine IPv6-Adresse. Der fe80 :: -Block ist für verbindungslokale Adressen reserviert. Lokale Linkadressen werden für Pakete verwendet, die nur an direkt angeschlossene Geräte gesendet werden (nicht geroutet). Das Network Discovery Protocol (NDP) ist der größte Benutzer von verbindungslokalen Adressen (NDP ersetzt ARP und DHCP in IPv6).

Jede Ihrer Schnittstellen hat eine andere verbindungslokale Adresse, die mit fe80 :: beginnt und (normalerweise) mit einer geänderten Version der MAC-Adresse der Schnittstelle (EUI-64-Format) endet, um sicherzustellen, dass Sie eine eindeutige Adresse in Ihrem Segment haben. Im Falle Ihres Loopback-Interfaces ist nichts anderes damit verbunden, so dass es die Adresse von fe80 :: 1 ohne Angst vor Konflikten verwenden kann, weshalb fe80 :: 1 normalerweise als "localhost" -Adresse verwendet wird - das IPv6-Äquivalent von 127.0.0.1.

Esser
quelle
4
Ich sollte auch erwähnen, dass der Teil "% lo0" notwendig ist, da jede verbindungslokale Adresse mehrdeutig wäre, wenn sie nicht explizit an eine Schnittstelle gebunden wäre.
Esser
1
Es gibt keine NDP auf Loopback interfase und ::1verwendet als IPv6 equivavelent von 127.0.0.1, nicht fe80::1%lo0.
Citrin
Was ist, wenn mein tatsächlicher Loopback-Schnittstellenname (wie von ifconfig gemeldet) einfach lound nicht ist lo0? Warum sollten auch 2 IPv6-Hosts für localhost aufgenommen werden?
Ivan
5

Ausgezeichnete Antwort oben vom Esser. IPv6-Link-Local-Adressen, wie oben erwähnt, in der Form fe80:*, fe80::/10dass nur die Top-Ten-Bits abgeglichen werden, fe8*:*sodass der Bereich fe80 :: 0 .. ist febf:*. Überprüfen Sie meine Arithmetik.

Diese Adressen entsprechen den 169.254.\*.\*Adressen in IPv4, obwohl die IPv4-Gegenstücke viel weniger häufig verwendet werden.

Es ist sehr üblich, in IPv6 mehrere Adressen zu haben, in IPv4 jedoch nur eine. Die Regel ist nicht die Ausnahme, fe80::wenn Sie sowohl eine Adresse als auch eine global sinnvolle routbare IPv6-Adresse haben (wie 2001:*zum Beispiel). Leider tun Anwendungen und Betriebssysteme in IPv4 nicht das Gleiche, dh Schnittstellen haben in der Regel nicht mehrere IPv4-Adressen, und ich habe den Fall nicht gesehen, dass eine Schnittstelle eine 169.254.\*.\*Adresse und einen anderen Adresstyp gleichzeitig enthält.

Die gleichzeitige Verwendung der beiden Typen in IPv4 würde viel Schmerz und Leid vermeiden, wenn beispielsweise das Kit in der falschen Reihenfolge hochgefahren wird, die PCs hochgefahren werden, bevor Router oder Server und die PCs sich selbst eine 169.254.\*.\*Adresse zuweisen und sich nur an diese halten, anstatt eine Sekunde hinzuzufügen global bedeutsame, routingfähige Adresse, wenn sie später von ihrem Router oder Server erfahren, wo sie sich im Internet befinden sollen.

Cecil Ward
quelle