Link local address windows

A link-local address is an Internet Protocol address that is intended only for communications within the segment of a local network (a link) or a point-to-point connection that a host is connected to. These activities will show you how to view and test IPv4 link-local addresses in Windows.

To prepare for this activity:

  1. Start Windows.
  2. Log in if necessary.
  1. Open a command prompt.
  2. Use ipconfig /all to verify that you have a DHCP-assigned IP address. You should see DHCP Enabled Yes and a DHCP Server IP address. If not, just read along with the following activities rather than completing them.
  1. Use ping 8.8.8.8 to ping an Internet host by IP address.
  2. Observe the results. The ping request should be successful, indicating Internet connectivity.

To obtain a link-local address:

  1. Type ipconfig /release and press Enter to release any DHCP-assigned IP addresses.
  2. Observe that no IPv4 address is assigned.
  3. Wait ten seconds and then type ipconfig and press Enter again. Repeat if necessary. After ten seconds, your computer should obtain a link local IP address in the range 169.254.0.0 — 169.254.255.255 (169.254.0.0/16).
  4. If IPv6 is configured, you should also see a link local IPv6 address starting with fe80::/64.

To test the link-local address:

  1. Use ping 8.8.8.8 to ping an Internet host by IP address.
  2. Observe the results. The ping request should fail, because link-local addresses do not have a default gateway assigned and are not routable to the Internet.

To restore a DHCP-assigned address:

  1. Type ipconfig /renew and press Enter.
  2. Observe the results. An IP address should be assigned from the DHCP server.
  1. Use ping 8.8.8.8 to ping an Internet host by IP address.
  2. Observe the results. The ping request should be successful, indicating Internet connectivity.
  3. Close the command prompt to complete this activity.
  • Internet Protocol Analysis — Address Assignment
  • Microsoft TechNet: Ipconfig

Link Local Address in IPv6

An IPv6 link-local address is a type of unicast address that is locally unique within a link and is always present on an IPv6 interface. It plays a critical role in IPv6 operation and can therefore be a good starting point to learn IPv6 addressing.

The format of an IPv6 link-local address begins with the prefix FE80::/10. A subset of this prefix „FE80::/64“ is usually used for link local address prefix. . Following this prefix, the next 64 bits are reserved for the interface identifier. Interface identifier is typically generated based on the MAC address of the interface using EUI-64 mechanism in many systems, or it may be randomly generated, which is the default behavior in Windows operating system.

IPv6 link local address format

IPv6 link local address format

EUI-64 to generate automatic interface identifier

The EUI-64 mechanism is used to automatically generate the 64-bit interface identifier part of an IPv6 address from a interface MAC address.

To generate 64-bit interface identifier we Insert FF:FE in the middle of the MAC address and then we modify the 7th bit of the first byte of the MAC address to 1 to indicate a locally administered address If the bit is 0 (indicating a globally unique address).

IPv6 EUI-64 Mechanism

IPv6 EUI-64 Mechanism

To demonstrate a real example, I added a new router with IOS version 15.4(1)T in GNS3. After enabling the Ethernet 0/0 interface with the no
shutdown
command, I activated IPv6 on the interface using the „ipv6
enable“
command.

By running „show
int ethernet 0/0“
, we can view the MAC address of the interface. Additionally, using the „show
ipv6 interface brief
command, we can observe the IPv6 link-local address that has been automatically generated using the EUI-64 mechanism and assigned to the interface.

If you examine the IPv6 address, you’ll notice that the interface identifier was generated by insertingFF:FE in the middle of the MAC address and inverting the 7th bit of the MAC address from the left.

IOU1#show version
Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.4(1)T, DEVELOPMENT TEST SOFTWARE
!
interface Ethernet0/0
 no shutdown
 ipv6 enable
!
IOU1#show int ethernet 0/0
Ethernet0/0 is up, line protocol is up
  Hardware is AmdP2, address is aabb.cc00.0100 (bia aabb.cc00.0100)
!
IOU1#show ipv6 interface brief
Ethernet0/0            [up/up]
    FE80::A8BB:CCFF:FE00:100

random interface identifier in ipv6 link local address

When I check the IPv6 link-local address on a Windows system using the „ipconfig command, you’ll notice that there is no „FF:FE“ in the interface identifier. This is because, by default, Windows generates the interface identifier randomly rather than using the EUI-64 method. However, you do have the option to change this default behavior in Windows to use EUI-64.

The „%2 at the end of the link-local address represents the interface number in the Windows environment, which we won’t discuss further at this point.

You may also observe that the gateway address is „fe80::1. This illustrates two important points. First, the default gateway connected to the local link is using a link-local address, even though it may have a global unicast address. This shows the significance of link-local addresses in IPv6. By default, all routing protocols use the link-local address of the next-hop as the next-hop address, even if the next-hop router has other IP address types.

Second point is that The ipv6 link local address in the gateway is assigned manually and bacause of that you see a very simple address „fe80::1“ as the gateway addresss.

ipv6 link local address example in windows

ipv6 link local address example in windows

configure ipv6 link local address manually

For clients, manually configuring a link-local address is uncommon, but it is a common practice for routers. This is particularly important because a router’s link-local address is often used as the next-hop or gateway address. Using a simple and consistent link-local address can make it easier to identify routers and simplify troubleshooting. Therefore, it’s recommended to manually configure the link-local address on routers.

Since IPv6 link-local addresses are locally significant, meaning they are unique only within their specific link, all different links share the same subnet (fe80::/64) and can potentially have the same IPv6 address. This concept can be leveraged when manually configuring the IPv6 link-local addresses of routers. By assigning the same link-local address to all interfaces on a router, you can more easily identify the router across different links, which also simplifies troubleshooting.

To better understand, let’s demonstrate a real example. I’ll connect two routers, IOU1 and IOU2, to each other through interfaces eth0/0 and eth0/1. I will then manually assign the IPv6 link-local addresses to eth0/0 and eth0/1.

IPv6 Link Local Manual Cofiguration

IPv6 Link Local Manual Cofiguration

The key point here is that I will assign exact the same IPv6 link-local address to both interfaces. This is perfectly fine because link-local addresses are locally significant, meaning it doesn’t matter if two interfaces on different links have the same IPv6 link-local address.

For this example, I’ll assign fe80::1 as the link-local address for all interfaces on router IOU1 and fe80::2 for all interfaces on router IOU2. There will be no overlapping or conflict errors because the link-local addresses are unique to each link.

connectivity with link local address

When pinging a link-local address, you must specify the outgoing interface; otherwise, communication with the link-local address will not be possible. This is because all outgoing interfaces share the same subnet, fe80::/64, making it necessary to indicate which interface should be used.

To better understand, let’s ping the link-local address of IOU2 from IOU1. As you’ll see, the system will prompt you to specify the outgoing interface because it cannot automatically determine which interface to use for the communication.

Output Interface: Ethernet0/1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FE80::2, timeout is 2 seconds:
Packet sent with a source address of FE80::1%Ethernet0/1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/8/25 ms

This is also true when using a link-local address as the next-hop in static or dynamic routing. A link-local address without specifying the outgoing interface is meaningless. Therefore, it is essential to always provide the outgoing interface along with the link-local address when configuring a static route. In dynamic routing, the routing protocol automatically includes the outgoing interface alongside the link-local address in the routing table.

This is an example of an IPv6 static default route that includes a link-local address along with the outgoing interface on IOS routers. We will explore routing in more detail in the following sections.

IOU1(config)#ipv6 route ::/0 Ethernet0/1 fe80::2

As a final point, it’s important to emphasize that link-local addresses in IPv6 have numerous applications especially within the Neighbor Discovery Protocol (NDP), which is crucial for the proper functioning of IPv6 networks. We will explore the details of the NDP protocol iin the upcoming lessons.

В 2023 году люди боятся многих новых для них вещей, например, systemd, SELinux, IPv6 и др. От этих вещей люди стараются избавиться, отключить, удалить. Об этом написано во множестве любительских мануалов в интернете, коим может являться и этот. Далее речь пойдёт о протоколе интернета IP версии 6, для краткости — IPv6.

Целью данной заметки показать, что IPv6 не намного страшней того IPv4, который вы сейчас используете. Он способен решить все те же ваши задачи, что вы решали с помощью старого протокола, а также упростить себе жизнь за счёт более простой настройки сети. Кроме того, возможно, даже сейчас используете новый протокол даже не подозревая об этом.

Текст я попытался написать максимально доступным языком. Это не технические руководство. Воспринимайте эту заметку как отправную точку, просто чтобы перестать бояться использовать IPv6 и познакомиться с его основными особенностями, которые отличают его от IPv4, но при этом дают заметные преимущества.

Как появился IPv6 и почему он именно такой

История протокола начинается в 1990-х годах. Предпосылкой появления нового протокола являлись проблемы, которые накопились при использовании IP протокола, который в дальнейшем я буду называть IPv4 (из-за версии 4 в заголовке IP пакета).

Первоочередной проблемой оказался размер адресного пространства. Во-первых, он не позволял дать отдельный адрес каждому устройству в сети, что хоронило изначальный принцип сети интернет — «сквозную прозрачность». Этот принцип гарантирует нам то, что для доставки информацию от одного узла сети к другому нам никак не нужно будет модифицировать пакет с данными. В настоящее время ограничение адресного пространства вообще привело к тому, что даже провайдеры стали выдавать пользователям серые адреса и использовать NAT.

Чтобы увеличить размер адреса необходимо увеличить количество используемых бит. В ходе обсуждения вопроса места размещения дополнительных бит адреса инженеры пришли к выводу, что текущим форматом заголовка IPv4 придётся пожертвовать, т.е. новый протокол не будет иметь обратной совместимости, а, значит, его можно радикально переделать так, чтобы исправить в нём существующие недостатки и добавить новые возможности. Именно поэтому он так заметно отличается от IPv4, а не продолжает тянуть всего его недостатки за собой.

Единственное, что осталось общим в пакете IP — поле версии протокола. Старый протокол имеет номер «4». Значение «5» уже было зарезервировано для «Internet Stream Protocol Version 2», который так и не стал общедоступным, поэтому для нового протокола использовали следующее значение — «6».

Одна из идей расширения адресного пространства — использование переменной длины адреса. В этом направлении также были разработки, например, «IP нового поколения» — TUBA. Она описана в RFC 1347. В качестве основы в ней используется протокол ISO CLNP. Однако, даже сами авторы выражали опасение, что гибкость адресации будет в ущерб производительности. За TUBA зарезервирована «9» версия IP. Если бы разработка была признана перспективной, то вполне возможно, что сейчас внедряли бы IPv9, а не IPv6.

Обо всех зарезервированных версиях IP можно узнать на сайте IANA.

В результате был выбран компромиссный вариант — 128 бит на адрес. Этого достаточно, чтобы не испытывать долгое время нехватку адресов, при этом адрес остаётся достаточно коротким, чтобы даже самые простые устройства нормально могли работать с подобными адресами. Конечно, если бы протокол IPv6 разрабатывался, например, в 2010-х годах или сейчас, то, вполне вероятно, что вместо 128 бит адреса могли бы использовать 256, т.к. возможности даже самых компактных устройств значительно выросли по сравнению с 1990-ми годами, когда протокол IPv6 только начал разрабатываться.

Если вы представляете себе, что такое IP адрес, но, при этом, вы не специалист, то большинство адресов, которые вы знаете — это индивидуальные IPv4 адреса. Кроме этого, часто можно встретить адреса из диапазона 224.0.0.0/4. Это адреса для многоадресной рассылки. Также существуют адреса для широковещательных запросов. В IPv6 тоже существуют индивидуальные адреса, также известные как unicast адреса. А вот работу группового вещания в IPv6 переделали полностью. Это очень большая тема, которая явно не для первого знакомства с протоколом, поэтому подробно все остальные типы адресов, кроме индивидуальных, далее не будут рассматриваться, а только иногда упоминаться, поскольку они важны для нормального функционирования IPv6.

Адреса IPv6

Прежде чем продолжить, нужно познакомиться с тем, как записывать IPv6 адреса. Постараюсь объяснить максимально кратко. Если вы не поняли или возникли вопросы, всегда можете воспользоваться поиском в интернете. Этой теме посвящено немало заметок и статей.

Для записи адреса выбрана шестнадцатеричная система счисления. Несмотря на то, что она менее понятна многим людям, но она имеет несколько преимуществ, перед привычной десятичной, которая использовалась для записи IPv4 адресов. Например, она облегчает работу с префиксами, а также IP адреса отлично видны прямо в дампе пакетов при анализе сети.

Поскольку адрес имеет большую длину, то его поделили на 8 групп по 16 бит. Каждую из групп записывают в виде шестнадцатеричного числа от 0000 до FFFF. Группы разделяют между собой знаком «:». Для уменьшения длины адреса, в каждой из групп опускают ведущие нули, например, также вы делаете в десятичной системе счисления: вы можете записать число 10 в таком виде 0010, однако ведущие нули легко можно опустить и оставить только 10.

Кроме этого, ввиду специфики распределения IPv6 адресов, адреса могут содержать повторяющиеся нулевые разряды, например, 2001:DB8:0:0:0:0:0:1. В таком случае самую большую последовательность нулей (и только одну!!!) можно заменить на ::. Тогда адрес может быть записан как 2001:DB8::1. По сути, то, что расположено до знака двойного двоеточия — это старшая часть адреса, а то, что справа — младшая. Количество нулевых разрядов всегда легко восстановить, т.к. общее количество разрядов всегда равно 8.

В паре с адресом обычно используется маска сети, чтобы обозначить какие адреса будут соответствовать заданной сети, а какие нет. Если записывать маску сети аналогично тому, как это делается в IPv4, то это будет очень громоздко. При этом, обычно, почти нигде не используются маски с разрывами. Поэтому в IPv6 принято обозначать не маску сети, а префикс. Префикс указывает какое количество бит в левой части маски будет заполнено единицами, вся остальная часть будет наполнена нулями. Возможно вы сталкивались с подобной записью в IPv4, например, 192.168.1.0/24, то эквивалентно маске 255.255.255.0. Аналогично запишется и IPv6, адрес, например, 2001:DB8::1/64.

В IPv6 приняли стандартный размер префикса для канала. Чтобы все механизмы IPv6 работали необходимо использовать префикс /64. Если в IPv4 вы выбирали себе маску и могли использовать как 255.255.0.0, так и 255.255.255.0, или даже 255.255.255.192, то для сетей IPv6 смело выбирайте /64. Если вы где-то встречаете варианты использования маски /65 или ещё больше, вплоть до /128, то явно что-то не так. Однако, в некоторых случаях, вы не можете повлиять на распределение адресов выше, возможно для вас это будет являться единственным выходом, например, хостинг провайдер выдаёт вам только сеть /64, а вы хотите организовать VPN сервер с поддержкой IPv6. Провайдер нарушает рекомендации, а вы вынуждены использовать данные префиксы. Готовьтесь к другим подводным камням! А лучше решите проблему и вернитесь к стандартной сети /64.

Первое, что нужно понять, что отличает IPv6 от IPv4 — это то, что ваше устройство теперь может иметь не один IP адрес, а сразу несколько. В IPv4 подобная ситуация тоже возможна, но это не имеет большого смысла. Да, вы можете создать две сети с разными диапазонами в одном сегменте сети, но какой-то практической пользы на постоянной основе это не несёт. Иметь множество IPv6 адресов на одном сетевом адаптере — это нормально. Более того, для нормальной работы обычной сети вы не можете отказаться от link-local адреса.

Link-local адреса или подключаемся к сети IPv6

В IPv4 существует такое понятие, как канальные IP адреса. Это специально выделенный диапазон 169.254.0.0/16, который используют ваши устройства, если на интерфейсе не задан IP адрес или его не удалось получить. Так, например, поступают все версии Windows начиная… как минимум с Windows 95. Диапазон не очень популярен, поскольку может быть использован только в изолированной сети, который также можно назвать каналом. Канал — это пространство, где узлы сети могут обмениваться между собой любыми пакетами данных без использования промежуточных узлов.

В IPv6 для link-local выделен специальный диапазон fe80::/10. Не смотря на такой широкий префикс, реально в сетях используется стандартный /64. И это не простая сеть, а очень важная. Любой узел при подключении к сети IPv6 обязан взять себе адрес из этого диапазона. Даже если есть несколько сетевых адаптеров, то на каждом должен быть адрес из этого диапазона. Более того, эти адреса могут пересекаться на одном устройстве. Благодаря тому, что в таблицах маршрутизации всегда указан сетевой интерфейс, устройство может легко иметь 2 и более одинаковых адреса. Подобного механизма в протоколе IPv4 не было. Возникает логический вопрос: а как тогда работать с этими адресами? Логический ответ: как пользователю вам эти адреса вряд ли понадобятся, просто не обращайте на них внимание. Но если вы хотите их использовать, то кроме адреса нужно указать сетевой интерфейс, который, скорее всего связан с одним каналом. Как будет сетевой интерфейс называться зависит от реализации. Например, в linux это выглядит так: fe80::1%ens3, где ens3 — имя сетевого интерфейса. В Windows используется число, которое указывает на конкретный сетевой интерфейс: fe80::1%3.

Первое, что вы увидите при включении IPv6 протокола на сетевом интерфейсе — это link-local адрес. Например, если вы подключите к сети компьютер под управлением ОС Windows, то он автоматически выберет себе адреса из указанного диапазона. Если в вашей сети не будет DHCPv4 сервера, то компьютер также получит IPv4 адрес из диапазона 169.254.0.0/16. В данном случае IPv4 и IPv6 работают примерно одинаково. При этом IPv4 адрес изменится, если в сети появится DHCP сервер, а IPv6 адрес останется и продолжит работать не зависимо от настроек сети.

Link-local адрес всегда выбирается по определённому алгоритму, благодаря чему этот адрес для интерфейса всегда одинаковый и не меняется со временем.

Link-local адресации вполне достаточно, чтобы, например, открыть для сети папку или принтер в Windows для других машин, которые подключены к вашему каналу. Для примера рассмотрим две системы с Windows 7. После запуска этих операционных систем в одной локальной сети сети, машины прекрасно видят себя через сетевое окружение. Более того, можно даже отключить IPv4 протокол и убедиться, что всё работает именно через IPv6.

Если на вашей машине активирован протокол IPv6, то даже если вы не настраивали IPv6 сети и используете Windows, то вполне вероятно, что большая часть трафика в внутри сети между устройствами через стандартные механизмы Windows ходит именно по IPv6. Например, протокол LLMNR (Link-Local Multicast Name Resolution) позволяет найти IPv6 адреса устройств с использованием запросов на групповые адреса. Именно поэтому, когда вы обращаетесь к соседнему устройству по имени, то вы с большой долей вероятности с помощью LLMNR получите его link-local адрес и обратитесь к его сетевым ресурсам именно по сети IPv6. Это просто магия IPv6!!! Вы ничего не настраивали, но уже всё работает. И это не сломается, даже если добавите вашей сети новые возможности, например, выход в сеть интернет, просто потому, что link-local адреса с вами всегда.

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

Рассмотрим два узла ALPHA и BETA на Windows 7 которые были объединены в сеть без каких либо других устройств. Windows 7 была выбрана как достаточно старая, к тому же её поддержка закончилась. Сразу после настройки узлы получили link-local адреса IPv6 и канальные адреса IPv4.

Настройка сети узла ALPHA

Настройка сети узла ALPHA
Настройка сети узла BETA

Настройка сети узла BETA

Даже если отключить IPv4 протокол, узлы прекрасно продолжают видеть друг друга.

Доступность общих папок при отключении IPv4

Доступность общих папок при отключении IPv4

Даже Windows 7 имеет полноценную поддержку протокола IPv6.

Любопытный факт. В сети IPv6 маршрутизатор может вообще не иметь никаких других адресов, кроме link-local, но при этом успешно маршрутизировать пакеты. А всё потому, что в его таблице маршрутизации могут быть быть указаны link-local адреса соседних маршрутизаторов.

Частные индивидуальные адреса (ULA)

Представьте себе ситуацию, что вы решили объединить две сети. Если у вас сеть IPv4, то вы начинаете использовать стандартные выделенные диапазоны: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Благодаря использованию этих адресов, в дальнейшем, вы легко сможете подключиться к сети интернет, поскольку данные адреса используются только в частных сетях и не будет конфликта адресов. Разве что придётся применить специальный костыль (NAT), который будет подменять адрес из этого диапазона на тот, который способен маршрутизироваться в интернете.

В IPv6 тоже есть свой аналог. Это тоже специально выделенный диапазон fd00::/8. За этими адресами закрепилось наименование ULA — Unique local address. С ним рядом присутствует смежный блок fc00::/8, а вместе они представляют префикс fc00::/7. Однако окончательного решения по блоку fc00::/8 от IETF не было. Поэтому в большинстве случаев используется диапазон fd00::/8. Большинство маршрутизаторов с поддержкой IPv6 по умолчанию автоматически генерирует сеть fdXX:XXXX:XXXX::/48, которую в дальнейшем будет использовать в качестве ULA адресов. При использовании прошивки OpenWRT на вашем маршрутизаторе вы легко сможете изменить адресацию этой сети. А вот некоторые устройства, например, GPON маршрутизаторы от Ростелеком имеют крайне скудные настройки для IPv6 и не позволяют изменить адресацию этой сети.

Немаловажная деталь о которой говорилось ранее. В отличие от IPv4, использование ULA не означает, что ваш сетевой адаптер перестаёт пользоваться link-local адресом. Он по прежнему остаётся доступен и ваше устройство может общаться с соседями используя только его.

Как использовать эти адреса? Также, как вы используете аналогичную адресацию в IPv4. Можете просто назначить вручную каждому хосту свой IPv6 адрес. При этом, благодаря тому, что запись IPv6 адреса можно сократить, можно добиться ещё более лаконичной записи адреса, чем в IPv4, например, fd12::1. Первая часть адреса fd12:0:0:0: — это выбранная вами сеть (идентификатор сети), 0:0:0:1 — адрес узла внутри сети /64 (идентификатор интерфейса).

Прописывать адреса вручную обычно не очень хорошая идея. Для IPv4 чтобы получить адрес у нас есть единственный способ — спросить у сети, а не может ли она предоставить мне IPv4 адрес. Этот механизм называется DHCP. В IPv6 пошли дальше. Если ваша сеть нуждается в ULA адресах, то она, вероятно, будет использовать маршрутизатор для связи с другими сетями. Во время своей работы маршрутизатор рассылает уведомления рабочим станциям с какими сетями он работает, а также дополнительную информацию, например, адреса DNS серверов. Также маршрутизатор может отправить эти данные по запросу клиентов. Таким образом, как только в сети появляется маршрутизатор, он рассылает всем клиентам всю необходимую информацию. Устройства, получив анонс, могут автоматически сформировать свой уникальный адрес по определённым алгоритмам и настроить свои сетевые интерфейсы. Этот механизм называется SLAAC.

DHCP в IPv6 тоже не обошли стороной, поскольку это очень полезный инструмент. Маршрутизатор в анонсе может выставить два флага о необходимости обратиться к DHCP серверу:

  • за IPv6 адресом;

  • за дополнительными параметрами.

DHCP теперь не обязан предоставлять вам адрес, хотя может это делать, но всё также может подсказать вам где искать те или иные сервисы в сети. DHCPv6 становится опциональным, потому что без него сеть IPv6 способна работать просто при наличии маршрутизатора.

Снова посмотрите на адреса на вашем сетевом адаптере. Если там присутствуют адреса из диапазона fdXX:, то ваше устройство может общаться по сети не только с соседями, но ещё и через маршрутизаторы вашей локальной сети. Эти адреса могут появляются автоматически, если ваш маршрутизатор поддерживает IPv6. Этих адресов ещё недостаточно, чтобы получить полноценный доступ к интернет, но, как и в IPv4, вы уже можете воспользоваться прокси-сервером или даже NAT. Однако использование NAT не приветствуется в IPv6, и ваше устройство, скорее всего, предпочтёт использовать IPv4 адрес вместо ULA, если, конечно, такая возможность имеется.

Глобальные индивидуальные адреса IPv6 (GUA)

Самый востребованный тип Unicast адресов в интернет — Global Unique Address. Только адреса из этой группы могут маршрутизироваться в интернете. Если вы собираетесь использовать интернет, то вам нужен адрес именно из этого диапазона.

По своей сути эти адреса для пользователя ничем не отличаются от ULA, за одним главным исключением — пакеты с адресами GUA маршрутизируются в интернете. Из этого вытекает, что назначить себе любой GUA адрес, как это делали с ULA, просто так нельзя. Адреса GUA выделяются блоками поэтапно и, в конечном итоге, вы получаете свой блок от вашего провайдера. В рекомендациях IANA для абонента рекомендуется выделять сеть не менее /56 (т.е. вы получаете 256 сетей /64), что несколько меньше первой рекомендации /48 (65536 сетей /64). Особо жадные провайдеры могут выделять только одну сеть /64. Но есть и те, кто щедро выделяет максимально сеть /48.

Таким образом, GUA — это уже третий адрес, который может быть присвоен вашему сетевому интерфейсу наряду с link-local и ULA.

В настоящее время IANA выделяет адреса, в основном, из пула 2000::/3, (2XXX:... и 3XXX:...). Если подобных адресов нет на вашем сетевом интерфейсе, то и в интернет вы выйти с использованием IPv6, вероятно, не сможете.

Откуда у меня столько IPv6 адресов?

Пользователи Windows могут открыть свойства сетевого интерфейса и ужаснуться количеству IPv6 адесов. Пользователи Linux тоже могут выполнить команду ip a увидеть подобное:

2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 20:23:0d:db:09:10 brd ff:ff:ff:ff:ff:ff
    inet6 2001:0db8:2023:0910:60e1:76bd:601e:fa2f/64 scope global temporary dynamic
       valid_lft 85496sec preferred_lft 2696sec
    inet6 fd23:f1a9:d8a2::cea9:b317:45a2:eb90/64 scope global temporary dynamic
       valid_lft 528157sec preferred_lft 9546sec
    inet6 fd23:f1a9::12/128 scope global dynamic noprefixroute
       valid_lft 42598sec preferred_lft 2696sec
    inet6 2001:0db8:2023:0910::12/128 scope global dynamic noprefixroute
       valid_lft 42598sec preferred_lft 2696sec
    inet6 2001:0db8:2023:0910:36e1:7563:52e3:9043/64 scope global temporary deprecated dynamic
       valid_lft 85496sec preferred_lft 0sec
    inet6 2001:0db8:2023:0910:baa2:45c8:8915:6d10/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 85496sec preferred_lft 2696sec
    inet6 fd23:f1a9::cfab:64da:1f13:f335/64 scope global temporary deprecated dynamic
       valid_lft 441971sec preferred_lft 0sec
    inet6 fd23:f1a9::90e:a9d9:2a14:1a03/64 scope global mngtmpaddr noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::a33a:1d30:af11:d339/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Из результатов видно, что устройство получило 9 адресов IPv6:

  1. fe80::a33a:1d30:af11:d339/64 scope link noprefixroute

  2. fd23:f1a9::90e:a9d9:2a14:1a03/64 scope global mngtmpaddr noprefixroute

  3. fd23:f1a9::12/128 scope global dynamic noprefixroute

  4. fd23:f1a9::cea9:b317:45a2:eb90/64 scope global temporary dynamic

  5. fd23:f1a9::cfab:64da:1f13:f335/64 scope global temporary deprecated dynamic

  6. 2001:0db8:2023:0910:baa2:45c8:8915:6d10/64 scope global dynamic mngtmpaddr noprefixroute

  7. 2001:0db8:2023:0910::12/128 scope global dynamic noprefixroute

  8. 2001:0db8:2023:0910:60e1:76bd:601e:fa2f/64 scope global temporary dynamic

  9. 2001:0db8:2023:0910:36e1:7563:52e3:9043/64 scope global temporary deprecated dynamic

Как уже описывалось выше, можно заметить, что первый адрес относится к link-local адресам. со второго по пятый относятся к ULA и с шестого по девятый к GUA. Как уже вам известно, адрес link-local был присвоен автоматически при включении протокола IPv6. А вот полученные адреса ULA и GUA можно разделить на 3 группы:

  1. автоматически сформированный адрес с помощью SLAAC;

  2. адрес, полученный от DHCPv6-сервера;

  3. автоматически сформированные адреса, которые обеспечивают приватность.

Автоматически настроенный IPv6 адрес

Как уже отмечалось ранее, при подключении к сети маршрутизатора, он начинает рассылать свои анонсы со всеми необходимыми для настройки сети параметрами. Одним из ключевых параметров, которые передают маршрутизаторы — это префиксы сетей, которые они обслуживают. Префикс сети, это ничто иное, как первые 64 бита адреса IPv6. Получив его, каждый узел сможет сформировать свой уникальный IPv6 адрес. Именно такими адресами являются №2 и №6 из нашего списка. Алгоритм формирования этого адреса может зависеть от операционной системы на устройстве, а также от его настроек, в том числе может быть привязан к MAC-адресу сетевого адаптера. Как вы понимаете, это не очень безопасно в интернете.

Одним из первых алгоритмов был модифицированный EUI-64. Что это такое? Это просто обычный MAC-адрес, который преобразовали из 48 до 64 бит. А модификация — это изменение бита, говорящего о том, что MAC-адрес назначен вручную. Зачем эта модификация. Да просто потому, что простые адреса вроде ::1, ::2 и прочие могли бы случайно совпасть с MAC-адресом, который был присвоен какому-либо устройству легально. Благодаря модификации MAC-адрес, соответствующий этим адресам однозначно говорит о ручном назначении MAC-адреса. Инженеры просто перестраховались.

EUI-64 вполне хороший вариант для link-local адресов, потому что он обеспечивает гарантированно уникальный адрес в сети, потому что MAC-адреса уникальны в каждом канале. Если адрес не уникален, то будет проблема с передачей Ethernet кадров и это, в любом случае, придётся исправлять.

Светить MAC-адресом в составе публичных IP не очень хорошая идея. Поэтому большинство операционных систем теперь используют случайную генерацию IPv6 адреса по определённому алгоритму. Этим они гарантируют постоянство IPv6 адреса внутри выданного префикса IPv6, но при этом из этого адреса невозможно извлечь MAC-адрес устройства и он не повторяется при изменении префикса.

Таким образом, получив от маршрутизатора анонс, устройство автоматически присвоило себе по одному адресу ULA и GUA. Эти два адреса выглядят совершенно различно. Один из адресов позволяет маршрутизировать пакеты внутри вашей сети, как это ранее вы делали в сетях, например, 10.0.0.0/8 или 192.168.0.0/16, а второй позволяет вашему устройству пользоваться сетью интернет.

В анонсах маршрутизатора даже можно передать адреса DNS серверов, которые обслуживают вашу сеть, в том числе, указать адреса публичных DNS, которыми должны пользоваться клиенты. К сожалению, не все клиенты способны принять данный тип данных, например, подобная проблема присуща ОС Windows. Решается она с помощью DHCPv6 сервера.

Даже если у вас пропадёт соединение с интернетом, ваш маршрутизатор оповестит все устройства о том, что GUA больше недоступен и ваши устройства продолжат общаться используя ULA адреса или даже link-local.

Адрес, присвоенный DHCPv6 сервером

О том, что DHCPv6 сервер доступен в вашей сети вы можете узнать из анонса маршрутизатора. Маршрутизатор может сообщить узлам, что IPv6 адрес нужно получать от DHCPv6-сервера.

Если ваш узел обратился к DHCP-серверу, то он вполне мог получить адреса №3 и №7 из нашего списка (fd23:f1a9::12 и 2001:0db8:2023:0910::12). Это означает, что вам в сети /64 был выдан адрес 12.

К сожалению, большинство узлов предпочитают адрес с наименьшим адресом. Т.е. если вы выходите в интернет, то вас легко идентифицировать по адресу 2001:0db8:2023:0910::12. Если вас это устраивает, то вы легко можете пользоваться интернетом и дальше.

Конфиденциальный IPv6 адрес

Если предыдущие IP адреса могли предоставить вам какие-то постоянные IPv6 адреса, хоть и случайные, но вы вполне могли их использовать для своих целей. Но если при их использовании у вас возникает ощущение дискомфорта, потому что вы считаете, что за вами могут следить, то для вас создан третий тип адресов. Не зависимо от того, какие постоянные адреса выданы вашему устройству, вы всегда можете получить случайный временный IPv6 адрес из доступных вам префиксов и использовать именно его.

Описание алгоритма приведено в RFC 4941 «Privacy Extensions for Stateless Address Autoconfiguration in IPv6». Если описать кратко, то ваш узел динамически формирует случайный IPv6 адрес из выданного маршрутизатором диапазона и пользуется им для всех исходящих соединений. Но тут есть одна проблема. Ваше устройство может соединиться и постоянно использовать соединение. При этом оно имеет право изменить свой IPv6 адрес. Для этого старые IPv6 адреса оно помечает как deprecated. Когда все соединения с использованием этого адреса будут закрыты, адрес может быть удалён с сетевого интерфейса.

В приведённом варианте механизмы конфиденциальных IPv6 адресов были использованы для 4 адресов: двух ULA (№4 и №5) и двух GUA (№8 и №9). Эти адреса помечаются как temporary.

Когда вы получаете конфиденциальные адреса, то ранее полученные вами адреса также продолжают работать. С их помощью вы можете предоставлять другим узлам свои услуги, например, общие папки, принтеры или даже веб-сервер. Постоянные IP адреса удобны тем, что их легко можно прописать в правилах вашего брандмауэра и, например, разрешить доступ к нужным сервисам, например, из интернет. А конфиденциальные адреса обеспечивают вашу приватность при работе с сетью интернет.

Немного про безопасность IPv6

Очень часто в интернет одним из аргументов против IPv6 является то, что, якобы, в IPv4 трансляция адресов (NAT) обеспечивает защиту сети. Якобы, благодаря ему устройства внутри сети недоступны извне. Отчасти это так. Внутренняя адресация не может быть доступна из интернета напрямую. Однако исследователями найдено множество способов обойти ограничения NAT. Самым простым является заражение машины внутри сети, которая уже сама будет связываться с удалённым центром управления. Есть способы проброса пакетов на нужный узел внутри сети даже при наличии NAT. Защититься от этого метода можно только используя брандмауэр, который как раз и предназначен для защиты! Таким образом мы приходим к выводу, для того, чтобы обеспечить защиту вашей локальной сети от атак из интернет — использовать брандмауэр.

Для примера, рассмотрим настройки по умолчанию на маршрутизаторе с OpenWRT. Правила брандмауэра (межсетевого экрана) запрещают входящие пакеты из сети интернет и разрешают исходящие. При этом именно брандмауэр обеспечивает защиту вашей сети, а не NAT! NAT мы вынуждены применять по причине того, что мы не можем обеспечить нашу сеть достаточным количеством публичных IP адресов и нам необходимо на границе модифицировать адрес источника, записывать то, что мы сделали в специальную таблицу, чтобы при ответе отправить его на нужный узел сети, тоже модифицировав его соответствующим образом. Это сильно усложняет обработку транзитных пакетов, при этом нам не нужно забывать о правилах брандмауэра, который и защищает нашу сеть от вторжения!

А что нужно будет сделать, чтобы обеспечить доступ к сервису на одной из наших машин по IPv6? Достаточно создать правило для трафика, где указать адрес нашего сервиса и необходимые порты. После этого всё начинает работать. А что нужно сделать для IPv4? Во-первых, озадачиться выбором порта для сервиса, который будет перенаправлен на один из портов на внутреннем адресе, а также создать правило для трафика, как это было для IPv6. Если вы захотите вывести в интернет два веб-сервера, то у вас не получится этого сделать, поскольку порты 80 и 443 у вас в одном экземпляре на один IPv4 адрес. Направив трафик веб на одну из машин, вторую вы уже не сможете открыть не меняя номеров портов. Можно, конечно, получить ещё один внешний IPv4 адрес и перенаправлять соединения с одного адреса на одну машину, а с другого на другую. Но, согласитесь, схема очень уж сильно усложняется, если сравнивать с тем, что нужно было сделать при использовании IPv6.

Что нам даёт IPv6

Даже не смотря на то, что размер заголовков пакетов вырос, но он вырос не так значительно. При росте размеров адреса источника и получателя в 4 раза сам заголовок вырос только в 2 раза. При этом его размер стал фиксированным, что упрощает его обработку. Кроме этого, теперь заголовок не имеет контрольной суммы, что позволяет избавиться от необходимость её пересчёта на каждом промежуточном узле. Целостность самих данных контролируются на вышележащих уровнях (например, TCP и UDP). Надёжность передачи данных в сети возросла, а эти особенности протокола могут обеспечить более высокую скорость обработки на промежуточных узлах.

Администраторы получают гораздо более простые для понимания человеком правила управления трафиком. Теперь не нужно заботиться о том, что пакеты приходят на ваш узел с одним адресом, уходят с другим. Вы просто создаёте правила что можно, а что нельзя.

Пользователь же получает то, что он теперь может обмениваться данными с другими напрямую, минуя промежуточные серверы, которые перенаправляют трафик. Это особенно критично, если вы общаетесь через видео. Ваш трафик пересылается изначально на промежуточный сервер, который может пересылать сотни подобных звонков и уже потом передаёт адресату. Теперь у вас появляется возможность обмениваться этим трафиком напрямую и качество видеосвязи будет зависеть только от пропускной способности ваших каналов.

Распределение адресов IPv6 иерархично и маршруты легко агрегируются. Изначально в IPv4 это было так, но, позже, из-за нехватки адресов, адресное пространство сильно сегментировалось, в результате значительно выросла глобальная таблица маршрутизации, что не добавляет скорости, а просто дополнительно загружает сетевое оборудование.

IPv4 ценный ресурс сети и их аренда стоит денег. Эта цена закладывается в стоимость вашего интернета, стоимость ваших серверов, которые вы арендуете.

В современном мире нет необходимости использовать IPv4 адреса. ОС Windows научилась их использовать полноценно как минимум с Windows 7. Другие системы умеют использовать их, также, с незапамятных времён. Самые беспроблемные устройства — современные смартфоны. Они просто появились практически одновременно со всемирным запуском IPv6. В конце концов, если вас так устраивают IPv4 адреса внутри вашей сети, используйте их. Но их использование в глобальной сети замедляет её и заставляет решать проблемы, которых просто нет в IPv6.

А можно полностью избавиться от IPv4 сейчас?

Да, но есть нюансы. Вы можете отключить IPv4 адрес на своей машине, но при этом потеряете доступ к сети IPv4. Доступ можно восстановить с помощью NAT64 и DNS64. NAT64 можно установить на ваш маршрутизатор, либо использовать сторонний сервис, поскольку вся адресация IPv4 легко вписывается в стандартную сеть IPv6. DNS64 обеспечивает преобразование IPv4 адресов в IPv6, которые будут указывать на ваш NAT64. Можно использовать для NAT64 стандартный диапазон 64:ff9b::/96, тогда вы даже можете использовать публичные сервисы DNS64, напрмиер, от Google и Cloudflare.

Адреса серверов Google DNS64:

  • 2001:4860:4860::6464

  • 2001:4860:4860::64

Адреса серверов Cloudflare DNS64:

  • 2606:4700:4700::64

  • 2606:4700:4700::6400

В качестве NAT вы можете использовать jool и tayga. Например, автор этой заметки использует jool на своём маршрутизаторе с прошивкой OpenWRT.

Что такое NAT64? Чтобы стало понятней, то ваш домашний маршрутизатор выполняет ту же функцию NAT, но он преобразует ваш внутренний адрес IPv4 в другой внешний адрес IPv4. Таким образом ваш NAT можно обозначить как NAT44. Соответственно NAT64 преобразует ваш IPv6 адрес в IPv4. Возможно, с точки зрения ресурсов, операция более затратная, чем NAT44, но она нужна только на время перехода от IPv4 к IPv6 для ресурсов, которые не работают с IPv6. Т.е. чем меньше IPv4, тем меньше нагрузка на NAT64. В перспективе он вообще становится ненужным.

Увы, но NAT64 с DNS64 не поможет вам, если ваше приложение использует IPv4 адреса напрямую. Из часто встречающихся ситуаций — торренты. Но и для этого есть отдельное решение — CLAT (Customer-side transLATor). По сути это NAT46, когда обращение к IPv4 преобразуется в обращение к NAT64, который произведёт обратное преобразование. Однако это решение необходимо устанавливать на каждое ваше устройство. Но есть вариант переноса его на ваш маршрутизатор. По сложности работы этой схемы это сопоставимо с тем, когда вы от провайдера получаете не публичный IPv4 адрес. Именно эти преобразования происходят на вашем маршрутизаторе и на сервере провайдера. Кстати, Европейские провайдеры успешно используют схему, при которой сервис CLAT переносится на маршрутизатор, который провайдер выдаёт пользователю (привет Ростелекому с его кривыми CPE, спасибо они хотя бы базовые возможности дают для IPv6). При этом его сеть полностью построена на IPv6, а доступ в IPv4 сеть он предоставляет через свои серверы равномерно распределяя ресурсы IPv4 между пользователями.

Заключение

IPv6 только на первый взгляд выглядит страшным и непонятным. На самом деле его разработка велась ещё 90-х годов прошлого тысячелетия. Инженеры, проектировавшие протокол, учли все те недостатки, которые были выявлены при использовании IPv4 и избавили от них новый протокол. Все изменения в нём логичны и удобны. Если вы раньше настраивали сети IPv4, то теперь это сделать намного проще. Увы, но вопросы безопасности придётся изучать заново. Но если вы пользовались настройками по умолчанию, то для вас что-то вряд-ли изменится, скорее даже безопасность вашей сети вырастет.

Всемирный запуск состоялся 6 июня 2012 года, которому, почти год назад, предшествовал «Международный день IPv6» 8 июня 2011 года, когда производилось всемирное тестирование нового протокола. Уже в это время протокол был достаточно зрелым. Большинство оборудования с этого времени выпускалось и выпускается с поддержкой IPv6.

Уже сегодня можно полностью перейти на новый протокол IPv6 и сделать свою жизнь легче (для администраторов сетей), но, единственным сдерживающим фактором является сеть IPv4. Давайте уже все вместе начнём использовать IPv6 и забудем об IPv4 как ночном кошмаре.

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

Windows and EUI-64

Prior to Windows Vista and Windows Server 2008, Windows hosts used only MAC addresses to create Interface Identifiers (EUI-64). Globally unique addresses and Link-local ones were created using the segment’s prefix plus the EUI-64 identifier which is generated from the physical address of the host. With the rise of network security, this was found to be a security vulnerability because an IPv6 address can be easily tied to a MAC address, which uniquely identifies physical equipment.

For example, imagine a user with a laptop connecting to an IPv6 network with global prefix X:X:X:X::/64. Via SLAAC, the user’s laptop will generate a globally unique address X:X:X:X:EUI-64. Let’s say the user goes to another place and connects to another IPv6 network with a global prefix Y:Y:Y:Y::/64. Well, the user’s laptop will generate a global unicast address Y:Y:Y:Y:EUI-64, if the user connects to a network Z:Z:Z:Z::/64 it will get IPv6 address Z:Z:Z:Z::EUI-64 and so on. You can clearly see that this creates an opportunity to track the user, because wherever he goes and to whichever network he connects, the second half of the globally unique IPv6 address his laptop generates is always the same. The user can not connect anonymously to any network if someone knows the EUI-64 interface identifier of his laptop. This can be easily exploited in many different ways, for example, websites and apps associating different IPv6 addresses to a particular device or user.

Companies realized that and introduced two concepts that help to improve user’s privacy — Random Interface Identifiers and Temporary IPv6 addresses. Let’s start by looking at what the first term is.

Randomize Identifiers

Randomize Identifiers feature has been introduced as a part of the privacy extension for SLAAC (Stateless Address Auto-configuration). After Windows Vista, this feature is enabled by default, so wherever a Windows host generates an IPv6 address with SLAAC, it always uses a Random Interface ID.

How Windows 10 creates a link-local address

Figure 1. How Windows 10 creates a link-local address

Let’s look at part of the output of ipconfig /all command that displays the Physical address and the Link-local address of a Windows 10 host. You can see that the MAC address is 00-0A-12-34-56-78 and therefore if PC1 uses EUI-64 to generate a link-local address, it should have been fe80::20a:12ff:fe34:5678. 

PS C:\Users\Administrator> ipconfig /all

Ethernet adapter Eth0:
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   Physical Address. . . . . . . . . : 00-0A-12-34-56-78
   Link-local IPv6 Address . . . . . : fe80::ec94:3519:1f19:711f%8(Preferred)

Well, obviously the current link-local address is not created using the MAC address but rather a Random Interface Identifier. This is because the Randomize Identifiers feature is enabled by default. We can check this using the PowerShell command get-netipv6protocol or using netsh interface ipv6 show global in the Windows Command Prompt

PS C:\Users\Administrator> get-netipv6protocol

DefaultHopLimit               : 128
NeighborCacheLimit(Entries)   : 256
RouteCacheLimit(Entries)      : 4096
ReassemblyLimit(Bytes)        : 67105632
IcmpRedirects                 : Enabled
SourceRoutingBehavior         : DontForward
DhcpMediaSense                : Enabled
MediaSenseEventLog            : Disabled
MldLevel                      : All
MldVersion                    : Version2
MulticastForwarding           : Disabled
GroupForwardedFragments       : Disabled
RandomizeIdentifiers          : Enabled
AddressMaskReply              : Disabled
UseTemporaryAddresses         : Enabled
MaxTemporaryDadAttempts       : 3
MaxTemporaryValidLifetime     : 7.00:00:00
MaxTemporaryPreferredLifetime : 1.00:00:00
TemporaryRegenerateTime       : 00:00:05
MaxTemporaryDesyncTime        : 00:10:00
DeadGatewayDetection          : Enabled

We can use the following command in PowerShell to change the default behavior of a Windows host and disable the Randomize Identifiers. Disabling this feature forces Windows to use EUI-64 for Interface ID as you can see in the following example.

PS C:\Users\Administrator> set-netipv6protocol -RandomizeIdentifiers Disabled
PS C:\Users\Administrator>
PS C:\Users\Administrator> ipconfig /all

   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   Physical Address. . . . . . . . . : 00-0A-12-34-56-78
   Link-local IPv6 Address . . . . . : fe80::20a:12ff:fe34:5678%8(Preferred)

Note that now the link-local address is generated from the MAC address and is exactly the value we expected.


Temporary IPv6 addresses

Another important concept, part of the Privacy Extension for SLAAC, is the use of Temporary IPv6 addresses. The idea behind temporary addresses is to have a public randomized IPv6 address that has a relatively short lifetime and can be used for anonymous outgoing connections. At every reboot, or IPv6 stack on/off, or when the Preferred-Lifetime expires this temporary address is re-generated using a Random Interface Identifier. Therefore, different outgoing connections can be initiated from different Temporary IPv6 addresses which minimize the risk of someone tracking the user by associating the global IPv6 address to physical equipment/user.

Windows 10 usage of Temporary IPv6 addresses

Figure 2. Windows 10 usage of Temporary IPv6 addresses

Of course, the incoming connections are made to the real Public IPv6 address that doesn’t change. However, in a typical Internet user scenario, all connections are initiated by the user’s machine towards an Internet service (client-server communication).

PS C:\Users\Administrator> get-netipv6protocol

DefaultHopLimit               : 128
NeighborCacheLimit(Entries)   : 256
RouteCacheLimit(Entries)      : 4096
ReassemblyLimit(Bytes)        : 67105632
IcmpRedirects                 : Enabled
SourceRoutingBehavior         : DontForward
DhcpMediaSense                : Enabled
MediaSenseEventLog            : Disabled
MldLevel                      : All
MldVersion                    : Version2
MulticastForwarding           : Disabled
GroupForwardedFragments       : Disabled
RandomizeIdentifiers          : Enabled
AddressMaskReply              : Disabled
UseTemporaryAddresses         : Enabled
MaxTemporaryDadAttempts       : 3
MaxTemporaryValidLifetime     : 7.00:00:00
MaxTemporaryPreferredLifetime : 1.00:00:00
TemporaryRegenerateTime       : 00:00:05
MaxTemporaryDesyncTime        : 00:10:00
DeadGatewayDetection          : Enabled

You can verify that this feature is enabled by default using either PowerShell’s command get-netipv6protocol or Command Prompt netsh interface ipv6 show privacy command.

C:\Users\Administrator>netsh interface ipv6 show privacy
Querying active state...

Temporary Address Parameters
---------------------------------------------
Use Temporary Addresses             : enabled
Duplicate Address Detection Attempts: 3
Maximum Valid Lifetime              : 7d
Maximum Preferred Lifetime          : 1d
Regenerate Time                     : 5s
Maximum Random Time                 : 10m
Random Time                         : 6s

In some cases, you will see multiple Temporary IPv6 Addresses at a time (could be hundreds). This happens when the Maximum Preferred Lifetime of an address expires but there is a connection still opened using this particular address. In this case, another Temporary IPv6 address is created but the old one is not deleted until all opened connections are closed. More information on what the different lifetimes means can be seen in figure 3.

An IPv6 address States and Lifetimes

Figure 3. An IPv6 address States and Lifetimes

Configuring Global IPv6 Address on Windows 10

There are three methods to configure a Windows 10 hosts with an IPv6 address:

  • Method 1: Configure the host manually.
  • Method 2: Using SLAAC and a Stateless DHCPv6 server.
  • Method 3: Using a Stateful DHCPv6 server.

Manual Address Assignment

The manual configuration is pretty straightforward. We go to Network Adapters Setting and under Internet Protocol Version 6 Properties we configure everything as shown in Figure 4. This approach is applicable for SOHO networks but it is not a scalable solution for large network environments.

Configuring IPv6 addressing on Windows 10

Figure 4. Configuring IPv6 addressing on Windows 10

Dynamic Addressing

To enable Windows to automatically decide how to configure its IPv6 settings, we just leave it on default settings «Obtain an IPv6 address automatically«. When using this approach, the type of dynamic addressing is decided by the Router Advertisements sent by the Default Router on the segment. Depending on the Autoconfig Flags, the host knows whether to use SLAAC plus Stateless DHCPv6 or to use Stateful DHCPv6.

Configuring Windows 10 to use auto-addressing

Figure 5. Configuring Windows 10 to use auto-addressing

Keep in mind that, it is up to the network administrators and the company’s policy to decide which addressing method t use. From a Windows perspective, it can generate an IPv6 address using SLAAC and obtain another address using DHCPv6 at the same time. This means that the host will have at least to global unicast addresses. Such an example is shown in figure 6. 

Windows 10 Network Connection Details

Figure 6. Windows 10 Network Connection Details

The first GUA address is generated via SLAAC and the second one has been obtained from a DHCPv6 server.

If you type ipconfig on a IPv6-capable Windows system, you’ll probably see a few different IPv6 addresses, such as an IPv6 address, a temporary IPv6 address, and a link-local IPv6 address. What are these? Why so many? I’m here to answer that question and continue from where I left off in my last post about IPv6 addresses.

The IPv6 address notation uses 128-bit hexedecimal addresses with 8 groups or “quarters” or “hextets” separated by colons (:). Each quarter has 4 hexadecimal characters representing 16 bits. If we have 8 of these 16-bit quarters, that totals to 128-bits in length. An example would be 2001:db8:3c4d:0015:000C:29FF:FE53:45CA.

IPv6 Link-Local Address

The “IPv6 Link-Local address” can be thought of as the equivalent to IPv4’s Automatic Private IP Address (APIPA), which is between 169.254.0.1 to 169.254.255.254. The APIPA address is created by a client who cannot receive an IPv4 address from a DHCP server. That way, the client can still manage to connect to the network to communicate on the subnet, but won’t be able to communicate outside the subnet without a DHCP server providing it with DNS and gateway settings.

The IPv6 link-local address kind of has the same purpose, except it’s always created whether DHCP is present or not. In order to generate the link-local address, the first half of the address (the first 64-bits) will always be FE80:0000:0000:0000. With the 0s compressed, that would be Fe80::/10. The last 64-bits of the link-local address are usually just randomly generated. Older systems use the device’s EUI-64. It’s very unlikely two systems on the same subnet will have the same IPv6 link-local address.

The link-local address is NOT a globally routable address.

IPv6 Global Unicast Address

To surf the Web via IPv6, your system needs its own “IPv6 global Unicast Address.” To generate this unique address, your system sends out a router solicitation on the multicast address FF02::2. If you write it out, that would be  FF02:0000:0000:0000:0000:0000:0000:0002. There are other IPv6  multicast addresses, but we don’t have to worry about that right now. All routers configured to respond to this multicast will hand out a 48-bit prefix of the network in which your system resides. The prefix is defined by your ISP.

The site prefix of an IPv6 address occupies 48 of the leftmost bits of the IPv6 address. For example, the site prefix of your upstream router’s IPv6 address 2001:db8:3c4d:0015:0000:0000:1a2f:1a2b/48 is contained in the leftmost 48 bits, which is the first 2 quarters of the address. That would be 2001:db8:3c4d. With zeros compressed, the 48-bit site prefix would be 2001:db8:3c4d::/48. The router also sends a 16-bit subnet prefix to the computer, which defines the internal topology of the network to a router. The last example IPv6 address we used has the following subnet prefix 0015. Thus, all together, the router is sending 2001:db8:3c4d:15::/64 to your computer. This will be the first 64-bit half of your IPv6 global unicast address.

What about the last 64-bit half? Your computer takes its 48-bit MAC address (also called a EUI-48) and splits it in half. Let’s say, for example, that your MAC address is 00-0C-29-53-45-CA. Your computer adds a “FFFE” right smack dab in the middle of the MAC address. When it does that, we get 000C:29FF:FE53:45CA. This is called the EUI-64 address and it adds this onto the prefix. Voila, we now have the last half of our unique IPv6 global unicast address.  When we add it all together, your computer’s new  global IPv6 address is now 2001:db8:3c4d:0015:000C:29FF:FE53:45CA.

References

Meyers, M. (2015). All in One CompTIA Network+ Certification Exam N10-006. McGraw-Hill Education: New York, NY.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как очистить кэш на компьютере windows 10 pro
  • Пропал язык с панели задач windows 10 как его вернуть
  • Spss 18 for windows
  • Сколько нужно памяти на флешки для windows 10
  • Отображение процента заряда батареи windows 10