Какое отношение имеет значение «fe80 :: 1% lo0 localhost» в / etc / hosts?


35

Ниже приведены записи в моем /etc/hosts.

Мне было интересно, для чего последняя запись ( fe80::1%lo0 localhost).

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost

3
% Lo0 является идентификатором зоны IPv6, большинство систем не поддерживают это в службах имен.
Steve-o

3
Какие приложения будут использовать эту информацию? Другими словами, если бы кто-то отредактировал эту строку, что бы она сломала?

Ответы:


25

Это адрес IPv6. Блок fe80 :: зарезервирован для локальных адресов. Локальные адреса связи используются для пакетов, отправляемых только напрямую подключенным устройствам (не маршрутизируются). Протокол обнаружения сети (NDP) является крупнейшим пользователем локальных адресов каналов (сортировка NDP заменяет ARP и DHCP в IPv6).

Каждый из ваших интерфейсов будет иметь свой локальный адрес ссылки, начиная с fe80 :: и (обычно) заканчивая модифицированной версией MAC-адреса интерфейса (формат EUI-64), чтобы обеспечить наличие уникального адреса в вашем сегменте. В случае вашего петлевого интерфейса к нему больше ничего не подключено, поэтому он может использовать адрес fe80 :: 1, не опасаясь конфликта, поэтому fe80 :: 1 обычно используется в качестве адреса «localhost». - эквивалент IPv6 127.0.0.1.


4
Я должен также упомянуть, что часть «% lo0» необходима, потому что любой локальный адрес ссылки будет неоднозначным, если он не был явно привязан к интерфейсу.
едок

1
Нет никакого NDP на внутрикадровом интерфейсе и ::1используется как эквивалент IPv6 127.0.0.1, нет fe80::1%lo0.
Цитрин

Что если мое реальное имя интерфейса обратной связи (как сообщает ifconfig) просто loи нет lo0? Также зачем включать 2 записи хостов IPv6 для localhost?
Иван

5

Отличный ответ выше от едока. IPv6 ссылка локального адреса, как было сказано выше, в виде fe80:*фактически fe80::/10означает верхнюю десять битов только сопоставляются fe8*:*поэтому диапазон fe80 :: 0 .. febf:*. Проверь мою арифметику.

Эти адреса эквивалентны 169.254.\*.\*адресам в IPv4, хотя аналоги IPv4 используются гораздо менее эффективно.

Очень распространено иметь несколько адресов в ipv6, но только один в IPv4. Наличие как fe80::адреса, так и глобально значимого маршрутизируемого IPv6-адреса (например, 2001:*например) является правилом, а не исключением. К сожалению, приложения и операционные системы не склонны делать то же самое в IPv4, то есть интерфейсы, как правило, не имеют нескольких адресов IPv4, и я не видел случая, когда интерфейс имел бы 169.254.\*.\*адрес и другой тип адреса одновременно.

Одновременное использование двух типов в IPv4 предотвратит много боли и страданий, когда, например, набор включается в неправильном порядке, устройства включаются до того, как маршрутизаторы или серверы и ПК назначают себе 169.254.\*.\*адрес и придерживаются только этого, вместо добавления секунды. глобально значимый, маршрутизируемый адрес, когда они позже узнают от своего маршрутизатора или сервера, где они должны находиться в Интернете.


2
 fe80::.....        a link local address

Локальные IPv6-адреса каналов, обозначенные префиксом fe80:, действительны только для непосредственного сетевого канала, к которому подключен этот хост-интерфейс.


Вводит в заблуждение - это fe80 / 10, то есть не префикс "fe80:". Есть 64 префикса.
Ондра Жижка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.