Jakie znaczenie ma „fe80 :: 1% lo0 localhost” w / etc / hosts?

35

Poniżej znajdują się wpisy w moim /etc/hosts.

Zastanawiałem się, po co jest ostatni wpis ( fe80::1%lo0 localhost).

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
Kenster
źródło
3
% Lo0 jest identyfikatorem strefy IPv6, większość systemów nie obsługuje tego w usługach nazw.
Steve-o
3
Jakie aplikacje wykorzystałyby te informacje? Innymi słowy, gdyby edytować tę linię, co by się zepsuło?

Odpowiedzi:

25

To adres IPv6. Blok fe80 :: jest zarezerwowany dla adresów lokalnych. Łącza lokalne adresy są używane dla pakietów wysyłanych tylko do bezpośrednio podłączonych urządzeń (nie trasowanych). Protokół wykrywania sieci (NDP) jest największym użytkownikiem adresów lokalnych dla łącza (NDP sorta zastępuje ARP i DHCP w IPv6).

Każdy z interfejsów będzie miał inny adres lokalny dla łącza, zaczynający się od fe80 :: i (zazwyczaj) kończący się na zmodyfikowanej wersji adres MAC interfejsu (format EUI-64), aby zapewnić unikalny adres w segmencie. W przypadku interfejsu sprzężenia zwrotnego nie ma z nim nic innego, więc może on używać adresu fe80 :: 1 bez obawy o konflikt, dlatego fe80 :: 1 jest zwykle używany jako adres „localhost” - ekwiwalent IPv6 127.0.0.1.

zjadacz
źródło
4
Powinienem również wspomnieć, że część „% lo0” jest konieczna, ponieważ każdy adres lokalny dla łącza byłby niejednoznaczny, gdyby nie był jawnie powiązany z interfejsem.
zjadacz
1
Nie ma NDP na sprzężeniu zwrotnym i jest ::1używany jako równoważny IPv6 127.0.0.1, nie fe80::1%lo0.
citrin
Co się stanie, jeśli moja rzeczywista nazwa interfejsu sprzężenia zwrotnego jest (jak podaje ifconfig) po prostu, loa nie lo0? Dlaczego także dołączyć 2 rekordy hostów IPv6 dla hosta lokalnego?
Ivan
5

Doskonała odpowiedź powyżej zjadacza. Adresy IPv6 Link-local, jak wspomniano powyżej, od postaci fe80:*w rzeczywistości fe80::/10oznaczającego szczyt tylko dziesięć bitów są dopasowywane fe8*:*tak zakres jest FE80 :: 0 .. febf:*. Sprawdź moją arytmetykę.

Te adresy są równoważne 169.254.\*.\*adresom w IPv4, chociaż odpowiedniki IPv4 są znacznie mniej dobrze używane.

Bardzo często jest kilka adresów w ipv6, ale tylko jeden w IPv4. Posiadanie zarówno fe80::adresu, jak i globalnego, możliwego do routingu adresu IPv6 (takiego jak 2001:*na przykład) nie jest regułą. Niestety aplikacje i systemy operacyjne nie robią tego samego w IPv4, to znaczy interfejsy zwykle nie mają kilku adresów IPv4, i nie widziałem przypadku, w którym interfejs podaje jednocześnie 169.254.\*.\*adres i inny typ adresu.

Jednoczesne użycie tych dwóch typów w IPv4 zapobiegłoby wielu bólom i cierpieniom, gdy na przykład zestaw włącza się w niewłaściwej kolejności, komputery włączają się przed routerami lub serwerami, a komputery przypisują sobie 169.254.\*.\*adres i trzymają się go, zamiast dodawać drugi globalnie znaczący, możliwy do routingu adres, gdy później dowiedzą się ze swojego routera lub serwera, gdzie powinni być w Internecie.

Totem Cecila
źródło