В настоящее время я пытаюсь понять, как работают адреса IPv6. Существуют локальные и локальные адреса сайта, используемые для небольших и организационных сетей, соответственно. Но если один из этих клиентов также имеет доступ в Интернет, ему нужны два IP-адреса, правильно? Один URL-адрес/сайт-локальный и один глобальный адрес. Как это управляется интерфейсом и маршрутизаторами? Для одного интерфейса потребуется два IP-адреса, поскольку в IPv6 нет NAT.Локальные и глобальные IP-адреса на интерфейсах IPv6
ответ
В общем, интерфейсы имеют один адрес локальной адресной области одноадресной рассылки и нулевые или более глобальные одноадресные адреса глобальной области. (Они могут также быть членами некоторого конечного числа групп многоадресной рассылки.) Адреса могут назначаться вручную или DHCPv6, как в IPv4, но они могут также иногда (не всегда) автоматически генерироваться, когда разрешают рекламу роутера. Некоторые реализации хоста автоматически генерируют постоянный глобальный адрес для каждого префикса, который рекламирует роутер, и вспомогательный адрес конфиденциальности, чтобы идти вместе с ним, c.f. RFC 4191. Если DHCPv6 используется для назначения адресов, хосты могут запрашивать один или несколько временных адресов вместо адресов конфиденциальности.
Не используйте локальные адреса сайта. Они устарели от RFC 3879, главным образом потому, что поле sin6_scope_id
не определено для локально-локальных адресов. Приложения, которые видят их в списке, возвращаемом с getifaddrs()
, должны, вероятно, отбросить их с помощью диагностического сообщения в стандартный поток ошибок. Приложения должны ожидать, что сетевые администраторы будут использовать уникальные локальные адреса (ULA) вместо локальных адресов сайта, c.f. RFC 4941.
Досягаемость адресов ULA обычно не разрешима прикладным программным обеспечением. Единственное, что вам известно о них, это то, что они недоступны по любому пути, который проходит через глобальную зону, свободную от общего доступа. Они могут быть доступны из любого места в Интернете, где маршруты к префиксу ULA обмениваются в двусторонних соглашениях между автономными системами. С другой стороны, они часто будут рекламироваться домашними шлюзами IPv6 только для местного использования абонента и не будут доступны нигде вне дома, c.f. I-D.ietf-v6ops-ipv6-cpe-router.
Каждый интерфейс имеет локальный адрес связи и необязательно один или несколько общих или локальных адресов. Похоже, это:
$ ip -o -6 addr show dev eth0
eth0 inet6 2001:abcd:ef::1/64 scope global (..)
eth0 inet6 fe80::1234:5678:2/64 scope link (...)
При отправке что-то, все отправляется на локальный адрес (т.е. fe80::/64
) посылается от локального адреса, все остальное от глобальной.
(Выбор не всегда возможно:., Например, если отвечать на пинг, источник IP ответа не будет адресом IP запроса, независимо от того, какой адрес)
Недопустимо, потому что локальные адреса сайта устарели [RFC 3879] (http://tools.ietf.org/html/rfc3879) и не должны использоваться. Большинство реализаций хоста IPv6 не обрабатывают их должным образом. –
Я не согласен с тем, что это должно быть опущено, @phihag ссылается на локальные локальные ссылки, а не на сайт-локальные. Другими словами, если я отправляю на другой 'fe80 ::/64', это действительно. – mateuscb
Это скорее принадлежит http://serverfault.com/; возможно, модераторы передадут этот вопрос, или вы можете попросить его там. – 9000
Есть вопросы, связанные с программированием. Некоторым приложениям может потребоваться свернуть список адресов интерфейсов в некоторый алгоритм, и это поможет узнать, с какими адресами вы работаете, когда возвращаете их из 'getifaddrs()'. –
link-local предназначены не для небольших сетей, а для неконфигурированных сетей. Важным недостатком является невозможность использования локальных адресов ссылок в DNS. –