Skip to main content

8.1 Úvod do IPv6

Nedostatky IPv4, ktoré rieši IPv6

IPv4 protokol má obmedzenia a problémy, ktoré rieši protokol IPv6:

  • vyčerpaný rozsah adries - IPv6 má 128-bitové adresy, teda je ich mnohonásobne viac;
  • rozsiahle smerovacie tabuľky - IPv6 je hierarchický, teda v sieťových prefixoch „je systém a prehľadnosť“;
  • absencia priameho spojenia koncových zariadení - v IPv6 nie je potrebný NAT preklad.

Vyplýva z nich, že plné nasadenie IPv6 je len otázkou času - mnohé krajiny už používajú IPv6 väčšinovo, no Slovensko je v nasadzovaní veľmi pozadu. Zatiaľ sa používajú oba protokoly, či už formou „dual stack“ (oba protokoly súčasne), tunelovaním alebo prekladom NAT64.

Overenie dostupnosti IPv6 spojenia s internetom: test-ipv6.com

Adresa IPv6

IPv6 adresa je 128-bitová a zapisuje sa v šestnástkovej sústave, pričom každé 4 číslice (takzvaný hextet) sú oddelené dvojbodkou, napríklad 2001:0470:5a05:0100:0000:0000:0000:0001.

Každý hextet predstavuje 16 bitov (4 číslice v 16-kovej sústave), teda v IPv6 adrese ich je 8.

Skrátenie zápisu IPv6 adresy

  1. Aby sa zbytočne nemuseli písať takéto dlhé adresy, úvodné nuly každého hextetu sa vynechávajú: 2001:470:5a05:100:0:0:0:1
  2. Okrem toho sa jedna (najdlhšia) postupnosť nulových hextetov môže vynechať a namiesto nej sa zapíše „štvorbodka“ :: (dve dvojbodky): 2001:470:5a05:100::1

Štruktúra IPv6 adresy

Prvých 64-bitov IPv6 adresy, teda prvé 4 hextety, sú štandardne prefixom (adresou siete), ďalších 64-bitov označuje ID zariadenia. Tak ako pri IPv4, aj v IPv6 zapisujeme dĺžku prefixu v podobe počtu bitov za lomkou na konci adresy, napríklad adresa 2001:470:5a05:100::1/64 vyjadruje zariadenie „1“ v sieti „2001:470:5a05:100“.

Typy IPv6 adries

IPv6 adresy majú podobné typy ako IPv4 adresy - individuálne (unicast)skupinové (multicast), no nevyskytujú sa tu všesmerové (broadcast) - sú však špeciálnym prípadom skupinových adries. Navyše IPv6 rozlišuje adresy výberové (anycast).

Individuálne (unicast) adresy

Individuálne (unicast) adresy IPv6 sa delia na:

  • globálne unicast (GUA): ako verejné IPv4 adresy,
    • aktuálne rozsah 2000::/3 (teda po 3fff);
  • linkové lokálne (link-local, LLA): čiastočne sa podobá na APIPA v IPv4, teda ide o automatické adresy pre lokálne spojenie v segmente siete, no vygeneruje sa vždy, a to aj v prípade prítomnosti GUA,
    • rezervovaný rozsah fe80::/10 (teda po febf),
    • v praxi sa používa fe80::/64;
  • unikátne lokálne (unique local, ULA): obdoba súkromných IPv4 adries, teda určené len pre LAN, nie sú smerované do internetu,
    • rozsah fc00::/7 (teda po fdff),
    • v praxi sa aktuálne vyžaduje používanie fd00::/8 a ďalších 40 bitov musí byť generovaných náhodne (možno využiť on-line generátor).

Špeciálnymi prípadmi sú:

  • adresa ::1 - lokálna slučka (loopback) „localhost“;
  • prefix 64:ff9 b:ff9b::/96 - určený je pre zápis verejnej IPv4 adresy,
    • napríklad IPv4 adresa 192.0.2.255 by bola zapísaná ako 64:ff9 b:ff9b::c000:2ff
    • alebo aj v zrozumiteľnejšom tvare 64:ff9 b:ff9b::192.0.2.255,
    • tento prefix by sa však nemal používať pre súkromné IPv4 adresy;
  • prefix 2001:db8::/32 - určený pre dokumentáciu a príklady.

Skupinové (multicast) adresy

Skupinové multicast adresy IPv6 sú z rozsahu ff00::/8 (teda po ffff), no využitie ďalších 8 bitov má svoje pravidlá:

  • prvé 4 bity (za ff) rozlišujú rôzne voľby - len pre zaujímavosť, v binárnom zápise 0TPR jednotlivé bity označujú:
    • T označuje adresu dočasnú (inak je trvalá),
    • P označuje adresu odvodenú z lokálneho prefixu,
    • R označuje adresu s existujúcim RP;
  • ďalšie 4 bity vyjadrujú dosah, napríklad:
    • 1 = zariadenie samotné (interface-local) - funguje len interne, nie je možné pingnúť;
    • 2 = pripojené rozhranie (link-local) - vlastná LAN;
    • 5 = celá LAN (site-local) - aj LAN siete za smerovačom, typicky celá organizácia;
    • e = celý internet (global).

Napríklad trvalé adresy nevychádzajúce zo sieťového prefixu, bez RP a s dosahom vo vlastnej LAN majú prefix ff02::/16.

Aby fungovali skupinové adresy aj „cez router“, teda aby pakety boli smerovačom preposlané aj do ďalších sietí, musí byť na zariadení i smerovači zapnutá podpora preposielania multicast, čo je nad rámec tohoto kurzu.

V tomto veľkom rozsahu sú definované aj skupinové adresy špeciálneho významu, napríklad:

  • ff02::1 adresuje všetky zariadenia na pripojenom rozhraní teda je ekvivalentom broadcast v IPv4;
  • ff02::2 adresuje všetky smerovače na pripojenom rozhraní;
  • ff05::2 adresuje všetky smerovače v sieti;
  • ff05::1:3 adresuje všetky DHCPv6 servery v celej LAN;
  • ff02::fb / ff05::fb oslovuje mDNS na pripojenom rozhraní /  v celej LAN;
  • ff02::101 / ff05::101 / ff0e::101 oslovuje NTP na pripojenom rozhraní /  v celej LAN / na celom internete.

Prečo mi nefunguje ping ff02::1 a ani na iné ff02 adresy? Nedostávam žiadnu odpoveď.

VAk OS Windows (a niekedy ajLinux)systéme viaceré sieťové rozhrania, je potrebné špecifikovať sieťové rozhranie,špecifikovať, cez ktoré sa má odoslať ping, inak OS nevie, kam s ním. Identifikátor rozhrania píšeme za IPv6 multicast adresu, oddeľuje sa symbolom %.

  • Vo Windows sa sieťové rozhranie označuje číslom, ich zoznam môžeme získať príkazom netsh interface ipv6 show interfaces - ide o číslo v stĺpci Idx. Teda príkaz bude napríklad: ping ff02::1%12. Windows však po prijatí odpovede nijako nedá najavo, kto vlastne odpovedal a ani koľkí.
  • V Linuxe je sieťové rozhranie nazvané textovým reťazcom, ich zoznam môžeme získať príkazom ip -br a. Teda príkaz bude napríklad: ping ff02::1%enp1s0. Linuxový ping vypíše adresu každého zariadenia, ktoré zareagovalo, aj s časom odozvy.

Otázka je tiež, ktoré zariadenia budú reagovať a odpovedať. Vo Windows firewalli je štandardne zakázané odpovedať na multicast ping a podobne to môže byť aj na zariadení s Linuxom.

Výberové (anycast) adresy

Výberová adresa je podobná individuálnej v tom, že paket bude doručený jedinému zariadeniu. Rozdielom však je, že túto adresu majú nastavené viaceré zariadenia. Paket sa doručí na najbližšie zariadenie s touto adresou.

Spomínali sme si, že celosvetovo využívané DNS servery (napríklad od Google a Cloudflare) sú veľmi rýchle, pretože nás nasmerujú na najbližší uzol. Toto sme konštatovali už pri IPv4, ktorý nemá výberové adresy. V čom sa teda IPv6 líši a ako to, že to funguje aj v IPv4?

Áno, napríklad Google DNS adresa 8.8.8.8, či Cloudflare DNS adresa 1.1.1.1, by teoreticky mali patriť jedinému zariadeniu na svete. Reálne nás však smerovače nasmerujú na najbližší uzol Google / Cloudflare. Nie je to oficiálne riešenie, ale akýsi „špinavý trik“, spočívajúci v drobnej manipulácii internetového smerovacieho protokolu BGP.

Rozdiel je v tom, že keby sme rovnakú IPv4 adresu skúsili nasadiť na viaceré zariadenia v jedinej LAN, teda v tej istej sieti, nefungovalo by to - detegovali by duplicitu adries. V prípade IPv6 je to možné dosiahnuť bez problémov. Keď zariadeniu priradíme výberovú adresu, nebude sa kontrolovať, či nie je duplicitná. A keď odosielateľ (alebo smerovač) hľadá suseda s výberovou adresou, osloví toho, ktorý sa ozve ako prvý.

Výberové adresy nemajú svoj vlastný vyhradený adresný blok (žiadny špeciálny prefix). Ide vlastne o bežné individuálne adresy, avšak pri ich konfigurácii musíme operačnému systému povedať, že sa jedná o anycast, a teda nemá vykonať detekciu duplicity adresy (DAD = Duplicate Address Detection). Napríklad v MikroTik RouterOS pri definovaní adresy začiarkneme voľbu „No DAD“ , v OS Linux pri definovaní adresy pridáme parameter „nodad“. Bežnejšie je však nastaviť anycast adresu loopback rozhraniu a šíriť ju niektorým smerovacím protokolom.

Špeciálnym prípadom výberovej adresy je samotná adresa siete, teda taká IPv6 adresa, ktorá má ID zariadenia rovné 0, napríklad 2001:470:5a05:100::. Na túto adresu je možné dokonca aj pingnúť.

Praktické poznámky

  • Pri testovaní môže prísť vhod asi najkratšia globálna IPv6 adresa s odpoveďou na ping: 2600:: (žiaľ, aktuálne nefunguje cez tunnelbroker.net), prípadne dostupnejšia 2620:fe::fe.
  • Niektoré aplikácie (napríklad webové prehliadače a WinBox) vyžadujú zapisovať IPv6 adresy do hranatých zátvoriek, teda napríklad [2001:470:5a05:100::10].
  • Je treba si uvedomiť, že smerovač má rovnakú sieť s LLA na každom svojom rozhraní. Pokiaľ chceme komunikovať s cudzou LLA adresou (napr. pre zadanie trasy), je nutné za ňu uviesť aj označenie rozhrania. V prípade zariadení MikroTik sa za adresou uvádza znak percento a názov rozhrania, teda adresa môže byť napríklad fe80::1%bridge-wan.