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::/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::c000:2ff
    • alebo aj v zrozumiteľnejšom tvare 64:ff9 b::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 4 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ď.

V OS Windows (a niekedy aj v Linux) je potrebné špecifikovať sieťové rozhranie, 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.