IPv6 – DHCP-server, DHCP-client, SLAAC

Internet Protocol (IP) е основния протокол за комуникация в Интернет

Предназначението на IP протокола е да позволи адресация на информацията, която се изпраща по мрежата. На всеки хост в мрежата се дава уникален адрес (наречен IP адрес). В момента се използва версия 4 на протокола, при която IP адресите са 32-битови цели числа и изглеждат така: 93.155.130.14. Недостатък на версия 4 на протокола е, че броят на адресите не достига в световен мащаб. През последните години версия 6 на протокола започва да влиза в масова употреба. IP адресите от версия 6 са 128 битови числа и изглеждат така: 2001:470:20f1:2:48ee:bc44:1df5:b914.

Интернет протокол версия 4 (IPv4)

Интернет протокола – версия 4 (IPv4), предоставя приблизително адресно пространство малко над 4 милиарда IP адреса. В началото, изчерпването на адресите в IPv4 не стояло като проблем на дневен ред, тъй като се е предполагало, че тази версия не била предназначена за обществено ползване.

Интернет протокол версия 6 (IPv6)

Основното предимство на IPv6 пред IPv4 е, че поддържа огромно адресно пространство. Дължината на един IPv6 адрес е 128 бита в сравнение тази при IPv4, която е едва 32 бита. При IPv6 има около 340 трилиона IP адреси общо.

Какво е положението в момента

Очаква се в следващите няколко години броят на устройствата, свързани към Интернет, изискващи уникален IP адрес да расте лавинообразно. Главната причина за това е интензивното предлагане на пазара на битова електроника на устройства, чиито функционалност е базирана на Интернет комуникационните технологии. Типични представители на тези иновативни потребителски продукти са интелигентните електрически уреди, системните за отдалечено поддържане на дома, системи за контрол на достъпа, системи за видеонаблюдение, системи за мониторинг и много други. Всички изброени могат да се намират в един дом. Масовото използване на тези устроиства ще засилят търсенето на все по-големи количества уникални IP адреси, което, от своя страна, ще направи внедряването на новия адресен протокол — IPv6, неизбежен процес.

Съвместимост на IPv4 с IPv6

Важно е да се знае, че двете версии на IP протокола са несъвместими което пък не пречи те да работят в една и съща физическа среда. Когато даден Интернет сайт поддържа само IPv4, клиент конфигуриран само с IPv6 адрес няма да го достъпи и обратното. Съвремените рутери и клиентски операциони системи обаче поддържат едновременно и двете версии на IP протокола, механизъм който се нарича dual-stack. При едновремено конфигуриране и на двата протокола с предимство се избира достъпът до услугата по IPv6, това приоритизиране става посредствон DNS (системата за имена в Интернет) Ако определена услуга на сървър в интернет е описана в DNS с IPv6 адрес то клиента с dual-stack конфигурация избира нея, ако няма такава – преминава към IPv4 адресация.

Внедряване на IPv6

Тъй като IPv6 има непреодолими разлики с IPv4, функционирането на двата протокола едновременно обикновенно се осъществява по два начина – чиста Ethernet свързаност или с тунелен протокол, носещ в него IPv6 пакети ползващ за транспорт IPv4 маршрут (6to4 tunnel). Всички съвремени рутери с изключение на ниския клас поддържат 6to4 tunnel така, че вероятноста да се предостави такава свързаност е практически почти навсякъде затова тук няма да обърнем внимание на тази конфигурация.

Синтаксис на IPv6 адреси

IPv6 адресите са 128 битови и се записват с осем 4-цифрени (16-битови) шестнадесетични числа, разделени с двоеточия. Когато има поредни нули, те могат да не се записват, така че 2001:0470:20f1:0002:0000:0000:0000:0001/64 който е адрес в домашния ми рутер, съм го вдигнал като 2001:470:20f1:2::1/64. Обърнете внимание на двете двоеточия едно до друго. Този начин на съкращаване е доста удобен в случай, че трябва да си запишете или издиктувате IP адреса, както и размера който изглежда е по четим и по малко плашещ.

Глобални IPv6 адреси в Интернет

Глобалните уникални IPv6 адреси се състоят от две части: 64-битова маршрутизираща част [2001:0470:20f1:0002], следвана от 64-битов идентификатор на хоста [0000:0000:0000:0001] респективно маска /64. Прието е, че в Интернет не може да се обявява мрежа с по голяма маска от :/64 (по малък стек от адреси), както е прието също, че е съвсем нормално краен клиент да получи такава мрежа в която на практика има 18446744073709551616 броя IPv6 адреса. Нека се опитам да поясня по добре маршрутизацията на IPv6, като доставчик на Интернет Core Router-а ни обявява IPv6 мрежа 2001:470:20f1::/48 в която има 65536 броя IPv6 мрежи с префикс :/64 като на домашния ми рутер предназначени за клиенти.

Локални IPv6 адреси у дома

На практика, ако на рутера или хоста ви е активиран IPv6 протокола без да сте конфигурирали нищо, на всеки мрежов интерефейс автоматично ще получите локален IPv6 адрес подобен на този fe80::4e5e:cff:fe46:b9fd/64 като в повечето случай последните символи са подобни на MAC адреса на интерфейса. Тези локални адреси винаги започват с fe80, като всъщност fe80::/64 е мрежа от локални адреси, еквивалентна на 169.254.0.0/16 от IPv4. Маршрутизаторите не рутират тези адреси в Интернет, защото те са уникални само в рамките на локалната мрежа.

IPv6 addressPrefix length (bits)DescriptionNotes
::128unspecifiedUsed for default route and router solicitations. cf. 0.0.0.0 in IPv4
::1128loopback addresscf. 127.0.0.1 in IPv4
::ffff:a.b.c.d96IPv4 mapped IPv6 addressThe lower 32 bits are the IPv4 address. Used in socket API’s to represent IPv4 hosts.
fe80::10link-localUnroutable autoconfigured addresses used on a LAN, e.g. for DHCPv6
fc00::7unique localAddresses used only within an autonomous system, unroutable globally. Cf. RFC 1918 addresses such as used in NAT.
ff00::8multicastmulticast
2000::3global unicastAll global unicast addresses currently begin with 2.

Кофигурация на доставчика на Интернет IPv6 DHCP-server в MikroTik

Така, като доставчик на Интернет аз рекламирам префикс 2001:678:904::/48 в глобалната мрежа което е равно на 65536 IPv6 мрежи с префикс /64 за клиенти. От него ще си заделя два pool-a за DHCP-server: един с маска /49 който ще раздава на клиентите мрежи с префикс /64 (тоест една IPv6 мрежа) и друг pool с маска /52 който ще раздава префикси на клиент с маска /62 което ще рече до четири IPv6 мрежи. Последното се прави за корпоративни клиент които имат повече от един интерфейс в LAN мрежата си.

/ipv6 pool
add name=pool64 prefix=2001:678:904:8000::/49 prefix-length=64
add name=pool62 prefix=2001:678:904:7000::/52 prefix-length=62

След “пуловете” трябва да опиша интерфейсите на които DHCP-server-а ще слуша за DHCP-client-ти на които да раздаде мрежи.

/ipv6 dhcp-server
add allow-dual-stack-queue=no interface=vlan50 lease-time=1d name=vlan_50
add allow-dual-stack-queue=no interface=vlan60 lease-time=1d name=vlan_60
add allow-dual-stack-queue=no interface=vlan61 lease-time=1d name=vlan_61
add allow-dual-stack-queue=no interface=vlan65 lease-time=1d name=vlan_65
add allow-dual-stack-queue=no interface=vlan66 lease-time=1d name=vlan_66
add allow-dual-stack-queue=no interface=vlan68 lease-time=1d name=vlan_68
add allow-dual-stack-queue=no interface=vlan69 lease-time=1d name=vlan_69

И накрая асоциирането кой клиент какво ще получи.

/ipv6 dhcp-server binding
add address=2001:678:904:8001::/64 allow-dual-stack-queue=no comment=Obshtina duid=0xd4ca6d79b994 iaid=11 life-time=1d prefix-pool=pool64 server=vlan_50
add address=2001:678:904:7000::/62 allow-dual-stack-queue=no comment=Firewall duid=0xb869f491c4f6 iaid=1 life-time=1d prefix-pool=pool62 server=vlan_50
add address=2001:678:904:8000::/64 allow-dual-stack-queue=no comment=Vazov50 duid=0xdc2c6e17addb iaid=6 life-time=1d prefix-pool=pool64 server=vlan_61
add address=2001:678:904:7018::/62 allow-dual-stack-queue=no comment=Stoyan_Zaimov duid=0xb869f46a0470 iaid=1 life-time=1d prefix-pool=pool62 server=vlan_65
add address=2001:678:904:7004::/62 allow-dual-stack-queue=no comment=Gradska_mobilnost duid=0xb869f48d3c99 iaid=1 life-time=1d prefix-pool=pool62 server=vlan_68
add address=2001:678:904:8007::/64 allow-dual-stack-queue=no comment=Fantazia_Shipka duid=0xb869f48d56a2 iaid=1 life-time=1d prefix-pool=pool64 server=vlan_69

Забележете параметъра DUID, който е оцветен в червено и зелено (по надолу ще го видите в конфигурацията на DHCP-client на потребителите), той се използва за идентификация на клиент и сървър, а параметъра IAID е съответстващия им интерфейс. Обвързването на клиента създава динамичен пул с време за изчакване, зададено на времето на изтичане на обвързването (имайте предвид, че сега динамичните пулове могат да имат изчакване), което ще се актуализира всеки път, когато обвързването се подновява. Когато клиентът е обвързан с префикс, DHCP сървърът добавя информация за маршрутизиране, за да знае как да достигне присвоения префикс, тоест DHCP-server подава на DHCP-client мрежа а не адрес !!! Клиентските обвързвания в сървъра вече не показват MAC адреса както е във IPv4, вместо това казахме се използват DUID (шестнадесетичен) и IAID. Принципно MAC адресите се конвертират в DUID автоматично ако е зададен DHCP-server да раздава на всички потребители мрежи, но в моя случай DUID и IAID ги конфигурирам ръчно за да получават мрежи само потребители които аз искам.

Client 1 MikroTik Office Router

Сега преминаваме към конфигурацията на DHCP-client в офиса на една фирма. Тук ether1 е WAN а vlan250 е LAN. Това е стандартна конфигурация офис/домашен рутер: нарича се SLAAC. Тук имаме реален DHCP-client на ether1 който получава мрежа но нямаме реален DHCP-server на vlan250. На практика имаме механизъм който предава получения префикс от WAN към LAN за да достигне той до клиентите. За да сме още по точни SLAAC рекламира получената нрежа от WAN на LAN клиентите без да има никаква конфигурация на LAN интерфейса, трябва само да активирана опцията advertise.

/ipv6 dhcp-client
add add-default-route=yes interface=ether1 pool-name=pool1 request=prefix

В LAN конфигурацията много е важен параметъра add address=::1, с “::1” казваме на рутера, че каквато и мрежа да получи от DHCP-clienta той ще я вдигне на LAN интерфейса като Default Gateway тоест мрежата ще стане адрес който ще завършва на 1 и ще е шлюз по подразбиране на клиентите в LAN интерфейса.

/ipv6 address
add address=::1 from-pool=pool1 interface=vlan250

С nd указваме на рутера, че каквото получи от протокола IPv6 като услуги, например DNS сървъри нека ги предава и на клинетите на vlan250

/ipv6 nd
add hop-limit=64 interface=vlan250

Нека разгледаме офис рутера каква конфигурация получава и каква предава:

С командата ipv6 dhcp-client print detail разбираме какво получава нашият офисен рутер.

Параметъра G показва, че този префикс (забележете цифрата 1 накрая) се получава от pool1 и се рекламира на vlan250ADV yes.

Тук има един много тънък момент който често обърква хората дошли от IPv4 света в IPv6. При така автоматично получената конфигурация достъпа до Интернет ::0 се получава от шлюза по подразбиране който започва с fe:80:xx:xx. Как е възможно това след като вече написах, че всички адреси започващи с fe:80 са локални, нещо като 192.168.0.0/16 в IPv4. Не се притеснявайте, няма никакъв проблем. Това е още един плюс в IPv6, че е възможно да не се използват така наречените транспортни мрежи с които се губеха IP адреси и се смяташе с IP калкулатор.

Нека тестваме първо WAN пингваме ли google по IPv6

Също и дали го “трейсваме” 🙂

И накрая пускаме пинг до един десктоп комютър в офиса.

Тест от компютър с браузер в сайта https://whatismyipaddress.com/

Client 2 MikroTik Company Router four /64 networks

/ipv6 dhcp-client
add add-default-route=yes interface=ether1 pool-name=pool1 request=prefix
/ipv6 address
add address=::1 from-pool=pool1 interface=vlan10
add address=::1 from-pool=pool1 interface=vlan20
add address=::1 from-pool=pool1 interface=vlan30
add address=::1 from-pool=pool1 interface=vlan40
/ipv6 nd
add interface=vlan10
add interface=vlan20
add interface=vlan30
add interface=vlan40

OpenWRT

Някои рутери са конфигурирани с IPv6 по подразбиране. Един пример ще дам със свободния firmware OpenWrt. От страна на клиента няма нужда от никаква конфигурация, ако доставчика рекламира IPv6 то рутера я маршрутизира автоматинчо.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.