Автоматична конфігурація IPv6 без збереження даних (SLAAC)
Автоматична конфігурація IPv6 без збереження даних (SLAAC)
Кожен вузол IPv6 у мережі потребує глобальної унікальної адреси для зв’язку за межами свого локального сегмента. Але звідки вузол бере таку адресу? Є кілька варіантів:
- Призначення вручну . Для кожного вузла адміністратор може вручну налаштувати адресу IPv6. Це не масштабований підхід і схильний до помилок людини.
- DHCPv6 (протокол динамічної конфігурації хосту версії 6) – найпоширеніший протокол для динамічного призначення адрес хостам. Потрібен сервер DHCP у мережі та додаткова конфігурація.
- SLAAC (автоконфігурація адреси без збереження стану) — розроблено як простіший і зрозуміліший підхід до автоматичної адресації IPv6. У своїй поточній реалізації, як визначено в RFC 4862 , SLAAC не надає хостам адреси DNS-серверів, і тому на даний момент він не широко поширений.
У цьому уроці ми дізнаємося, як працює SLAAC і які плюси та мінуси його використання порівняно з DHCPv6.
Що таке SLAAC?
SLAAC розшифровується як Stateless Address Autoconfiguration, і назва майже пояснює, що вона робить. Це механізм, який дозволяє кожному хосту в мережі автоматично налаштовувати унікальну адресу IPv6 без жодного пристрою, який відстежує, яка адреса призначена якому вузлу.
Без громадянства та із збереженням стану в контексті призначення адреси означають наступне:
- Призначення адреси з відстеженням стану включає сервер або інший пристрій, який відстежує стан кожного призначення. Він відстежує доступність пулу адрес і вирішує повторювані конфлікти адрес. Він також реєструє кожне призначення та відстежує час закінчення терміну дії.
- Призначення адреси без стану означає, що жоден сервер не відстежує , які адреси було призначено та які адреси ще доступні для призначення. Також у сценарії призначення без збереження стану вузли відповідають за вирішення будь-яких конфліктів повторюваних адрес, дотримуючись логіки: генеруйте адресу IPv6, запустіть виявлення дублікатів адрес (DAD), якщо адреса виявиться використаною, згенеруйте іншу та знову запустіть DAD і т.д.
Як працює SLAAC?
Щоб повністю зрозуміти, як працює автоматична адресація IPv6, давайте виконаємо кроки, які виконує вузол IPv6 від моменту підключення до мережі до моменту отримання унікальної глобальної одноадресної адреси.
Крок 1: вузол налаштовує себе за допомогою локальної адреси посилання
Коли вузол IPv6 підключено до мережі з підтримкою IPv6, перше, що він зазвичай робить, це автоматично налаштувати себе за допомогою локальної адреси посилання. Призначення цієї локальної адреси — дозволити вузлу спілкуватися на рівні 3 з іншими пристроями IPv6 у локальному сегменті. Найпоширеніший спосіб автоматичної конфігурації локальної адреси каналу — це комбінування локального префікса каналу FE80::/64 та ідентифікатора інтерфейсу EUI-64, створеного з MAC-адреси інтерфейсу.
На малюнку 1 показано покроковий приклад того, як генерується локальна адреса з MAC-адреси 7007.1234.5678.
Після виконання вищезазначених кроків вузол матиме повнофункціональну локальну адресу посилання у форматі EUI-64, як показано нижче:
C:\>ipconfig /all
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix..:
Physical Address................: 7007.1234.5678
Link-local IPv6 Address.........: FE80::7207:12FF:FE34:5678
IP Address......................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: 0.0.0.0
DNS Servers.....................: 0.0.0.0
DHCP Servers....................: 0.0.0.0
DHCPv6 Client DUID..............: 00-01-00-01-C4-35-08-8E-70-07-12-34-56-78
Крок 2: вузол виконує виявлення дублікатів адрес (DAD)
Після того, як хост IPv6 автоматично налаштує свою локальну адресу посилання, він повинен переконатися, що адреса насправді унікальна в локальному сегменті. Незважаючи на те, що ймовірність того, що інший вузол має таку ж точну адресу, дуже мала. Він має виконати процес, який називається виявлення дублікатів адрес (DAD).
DAD — це механізм, який включає особливий тип адреси, який називається груповою розсилкою запрошеного вузла . Після налаштування адреси IPv6 кожен вузол приєднується до групи багатоадресної адреси, ідентифікованої за адресою FF02::1:FFxx:xxxx, де xx:xxxx — останні 6 шістнадцяткових значень в одноадресній адресі IPv6. Таким чином, для кожної налаштованої адреси одноадресної адреси, незалежно від того, є вона локальною чи глобальною, хост приєднується до відповідної автоматично створеної групи групової розсилки запитуваних вузлів .
У нашому прикладі останні 6 шістнадцяткових значень локальної адреси посилання становлять 34:5678, тому вузол приєднується до групи багатоадресної розсилки FF02::1:FF 34:5678 . Оскільки ПК1 працює під керуванням операційної системи Windows 10, ми можемо перевірити це за допомогою такої команди:
C:\>netsh interface ipv6 show joins
Interface 8: Ethernet0
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 0 Yes ff01::1
0 0 Yes ff02::1
0 1 Yes ff02::c
0 2 Yes ff02::fb
0 1 Yes ff02::1:3
0 2 Yes ff02::1:ff34:5678
Маючи на увазі цю логіку, ми знаємо, що якщо інший хост має таку саму точну локальну адресу посилання, він також буде прослуховувати повідомлення в групі багатоадресної розсилки запрошеного вузла, автоматично створеної з цієї адреси - FF02::1:FF34:5678 . Щоб ПК1 перевірив це, він надсилає повідомлення ICMPv6 із адресою призначення, встановленою для цієї групи, і адресою джерела, встановленою на невизначену адресу IPv6. У частині пакету ICMPv6 PC1 розміщує повну адресу в полі Target Address. Малюнок 2 ілюструє цей процес. Потім PC1 надсилає пакет у мережу. Лише вузли, які прослуховують саме цю автоматично згенеровану багатоадресну групу, відкриють пакет, усі інші вузли відкинуть його. Якщо будь-який вузол має адресу IPv6, яка має однакові останні 6 шістнадцяткових цифр, він перегляне частину ICMPv6 і перевірить, чи цільова адреса збігається з будь-якою з його власних адрес. Якщо збіг знайдеться, хост відповість, що ця IPv6-адреса вже використовується. Якщо ніхто не відповість, PC1 визначить, що ця адреса унікальна та доступна для використання, і призначить її.
Цей процес називається виявлення дублікатів адрес (DAD) і виконується після кожного нового призначення адреси. У нашому прикладі PC1 надсилає повідомлення ICMPv6 Neighbor Solicitation, як показано на малюнку 2, і ніхто не відповідає. Тоді PC1 точно знатиме, що ця локальна адреса зв’язку є унікальною в цьому локальному сегменті.
Крок 3: Вузол надсилає повідомлення Router Solicitation
Кроки 1 і 2 у цьому прикладі зображують процес генерації та призначення унікальної локальної адреси посилання. Цей процес не зовсім є частиною функції автоконфігурації без збереження стану, але без локальної адреси посилання PC1 не зможе спілкуватися на рівні 3 з будь-яким іншим вузлом IPv6. Таким чином, це обов’язкова умова для роботи SLAAC, і тому ми включили його в наш приклад.
Після того, як PC1 отримає локальну адресу зв’язку, він може розпочати процес автоматичного налаштування глобальної одноадресної адреси за допомогою SLAAC. Першим кроком цього процесу є надсилання повідомлення ICMPv6 під назвою Router Solicitation (RS) . Мета цього повідомлення — « запитати » всі IPv6-маршрутизатори, підключені до цього сегмента, про глобальний одноадресний префікс, який використовується. Адреса призначення — це багатоадресна адреса всіх маршрутизаторів FF02::2, а для джерела PC1 використовує свою локальну адресу посилання. Зауважте, що лише маршрутизатори підписані на групу багатоадресної розсилки FF02::2, що означає, що лише маршрутизатор 1 обробить це повідомлення, а всі інші вузли в локальному сегменті відхилять його.
Після того як маршрутизатор 1 отримує повідомлення Router Solicitation, він відповідає повідомленням ICMPv6 під назвою Router Advertisement (RA). Повідомлення RA містить глобальний префікс IPv6 у посиланні та довжину префікса. У нашому прикладі це буде префікс 2001:1234:A:b:: і довжина префікса /64. Як джерело цього пакету RA маршрутизатор 1 використовує власну локальну адресу каналу зв’язку, а адресатом є адреса групової розсилки всіх вузлів FF02::1. Процес зображено на малюнку 3.
Крок 4: Вузол налаштовує свою глобальну одноадресну адресу
Коли PC1 повертає оголошення маршрутизатора від маршрутизатора 1, він поєднує префікс 2001:1234:A:B::/64 зі своїм ідентифікатором інтерфейсу EUI-64 (7207:12FF:FE34:5678), що призводить до глобальної одноадресної адреси 2001: 1234:A:B:7207:12FF:FE34:5678/64. Оскільки оголошення маршрутизатора надійшло від маршрутизатора 1, ПК1 встановлює свій шлюз IPv6 за замовчуванням на локальну адресу посилання R1.
Тепер PC1 має глобальну одноадресну адресу та шлюз за замовчуванням. Але процес SLAAC не завершено. PC1 повинен точно знати, що ця автоматично згенерована адреса унікальна в локальному сегменті. Таким чином, PC1 виконує процес виявлення дублікатів адрес (DAD).
Крок 5: вузол виконує виявлення дублікатів адрес (DAD)
Ми вже детально пояснювали процес DAD на кроці 2. Коли PC1 автоматично генерує свою глобальну одноадресну адресу, він негайно приєднується до автоматично створеної групи багатоадресної розсилки запрошених вузлів FF02::1:FF34:5678. Щоб бути впевненим, що ніхто інший не використовує цю адресу, PC1 надсилає повідомлення ICMPv6 під назвою Neighbor Solicitation на адресу запитуваного вузла FF02::1:FF34:5678 і чекає, чи відповість вузол. Якщо відповідь не отримана, PC1 знає, що ця адреса унікальна, і може почати використовувати її для зв’язку за межами свого локального сегмента, включно з Інтернетом.
Проблема з SLAAC
Все йде нормально. Ми побачили, як вузол може автоматично налаштувати глобально унікальну адресу IPv6 і шлюз за замовчуванням.
Однак SLAAC не надає інформацію DNS , а без DNS багато послуг, наприклад перегляд Інтернету, неможливі.
У заголовку Router Advertisement є поле, призначене для вирішення цієї проблеми.
Маршрутизатор рекламних прапорів
Як ми сказали вище, за замовчуванням SLAAC не надає DNS. А без DNS багато служб, які вимагають розділення URL-адрес на IP, не працюватимуть. У повідомленні RA є поле, яке допомагає вузлам зрозуміти, звідки отримати адресу IPv6 і інформацію DNS.
Якщо для прапора M встановлено значення 1, це означає, що адреси доступні через DHCPv6. Маршрутизатор в основному повідомляє вузлам запитувати у сервера DHCP адреси та інформацію DNS. Якщо встановлено прапор M, прапор O можна ігнорувати, оскільки DHCPv6 повертатиме всю доступну інформацію.
Якщо для позначки O встановлено значення 1, це означає, що інформація DNS доступна через DHCPv6. По суті, маршрутизатор повідомляє вузлам автоматично налаштувати адресу через SLAAC і запитати у сервера DHCP інформацію DNS.
Якщо ані прапорці M, ані O не встановлено, це означає, що в сегменті недоступний сервер DHCPv6.
Прапорець Prf (Налаштування маршрутизатора за замовчуванням) можна встановити на низький (1), середній (0) або високий (3). Коли вузол отримує повідомлення Router Advertisement від кількох маршрутизаторів, Default Router Preference (DRP) використовується для визначення того, який маршрутизатор віддати перевагу як шлюз за замовчуванням.
Налаштування SLAAC на маршрутизаторах Cisco
Як правило, коли на маршрутизаторі Cisco увімкнено одноадресну маршрутизацію IPv6, він починає надсилати повідомлення RA через усі інтерфейси, які мають налаштовану глобальну одноадресну адресу IPv6.
Router1(config)#ipv6 unicast-routing
У нашому прикладі, коли інтерфейс GigabitEthernet 0/0 налаштовано з глобальною одноадресною адресою IPv6, він негайно починає надсилати повідомлення RA у локальному сегменті.
Router1(config)#interface GigabitEthernet 0/0
Router1(config-if)#ipv6 enable
Router1(config-if)#ipv6 address 2001:1234:A:B::1/64
Більшість параметрів можна перевірити за допомогою команди show ipv6 interface
Router1#show ipv6 interface GigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::2D0:97FF:FE49:C501
No Virtual link-local address(es):
Global unicast address(es):
2001:1234:A:B::1, subnet is 2001:1234:A:B::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF49:C501
MTU is 1500 bytes
ICMP error messages limited to one every 100 milliseconds
ICMP redirects are enabled
ICMP unreachables are sent
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND advertised reachable time is 0 (unspecified)
ND advertised retransmit interval is 0 (unspecified)
ND router advertisements are sent every 200 seconds
ND router advertisements live for 1800 seconds
ND advertised default router preference is Medium
Hosts use stateless autoconfig for addresses.
Якщо в сегменті доступний сервер DHCPv6, ми можемо встановити позначку M або позначку O в повідомленнях RA, використовуючи такі параметри.
Router1(config-if)#ipv6 nd ?
advertisement-interval Send an advertisement interval option in RA's
autoconfig Automatic Configuration
cache Cache entry
dad Duplicate Address Detection
destination-guard Query destination-guard switch table
managed-config-flag Hosts should use DHCP for address config
na Neighbor Advertisement control
ns-interval Set advertised NS retransmission interval
nud Neighbor Unreachability Detection
other-config-flag Hosts should use DHCP for non-address config
prefix Configure IPv6 Routing Prefix Advertisement
ra Router Advertisement control
reachable-time Set advertised reachability time
router-preference Set default router preference value
secured Configure SEND
Якщо ви хочете вимкнути функцію SLAAC у цьому інтерфейсі, ви можете скористатися командою suppress у параметрах інтерфейсу ipv6
Router1(config-if)#ipv6 nd ra ?
dns DNS
hop-limit IPv6 RA hop-limit value
interval Set IPv6 Router Advertisement Interval
lifetime Set IPv6 Router Advertisement Lifetime
mtu IPv6 RA MTU Option
solicited Set solicited Router Advertisement response method
suppress Suppress IPv6 Router Advertisements
Коментарі
Дописати коментар
Олег Мічман в X: «Donations and support for media resources, bloggers, projects, and individuals. https://t.co/HPKsNRd4Uo https://t.co/R6NXVPK62M» / X
https://twitter.com/olukawy/status/1703876551505309973