Základy nasazení IPv6: od získání adres až po síť pro hosty

25. 10. 2023
Doba čtení: 10 minut

Sdílet

 Autor: Depositphotos
Ať chcete nebo ne, časem se šestce nevyhnete. Internet ji potřebuje pro další rozvoj a po celém světě ji už využívá téměř polovina uživatelů, aniž to tuší. Není to složité, ukážeme si pár příkladů.

Pod minulým článkem o IPv6 se objevila větší diskuze, v které si člověk mohl přečíst dost rozdílné názory od zastánců, tak i odpůrců. Vlastně jako vždy, když se o šestce mluví. Bylo tam i dost zažitých názorů, že je šestka zbytečně složitá. Rovnou napíšu, že osobně jsem měl před mnoha lety podobný názor.

Ve skutečnosti není složitější, jen je prostě jiná a dost správců se k IPv6 snaží přistupovat jako k IPv4, což je chyba. Zkuste na chvíli zapomenout na to, co tu s námi je už několik desetiletí a podívat se na to jinak. Pojďte to prostě zkusit.

V dnešním článku nechci zabřednout do jednotlivých RFC ani se zabývat detaily. Na dvou praktických příkladech chci ukázat základ konfigurace, kterou nastavíte doslova během pár minut. V diskuzi zaznělo i několik zajímavých věcí, zkusím se na ně taky podívat.

Začneme tím nejjednodušším – klienty. Je první věcí, co děláte po instalaci OS, že vypínáte IPv6? Ok, tak teď šestku zapněte. Tím máme klienty vyřešené. Podpora IPv6 na klientech je dnes naprosto bezproblémová. Pokud máte v síti správně nakonfigurovaný směrovač, případně DHCPv6, tak opravdu nemusíte nic dalšího řešit.

Jednoduchá konfigurace na MikroTiku

Nejprve chci ukázat asi nejsnadnější konfiguraci – pomocí prefix delegation získáme prefix od poskytovatele, ten budeme oznamovat do LAN, klienti si prostřednictvím autokonfigurace SLAAC sami zvolí unikátní IPv6 adresy a použijeme i DNS, které nám oznámil poskytovatel. Je to opravdu jednoduché. Pro tuhle ukázku mám MikroTik, jednu malou L2 síť a poskytovatel podporuje DHCPv6 Prefix delegation. Ukážeme si to v terminálu, naklikat v GUI je to ještě snadnější.

Mikrotik má ve výchozí konfiguraci IPv6 vypnutou, začneme zapnutím, restart je nutný:

system package enable ipv6
system reboot

Pak záleží na konfiguraci vašeho firewallu, možná budete muset přidat pravidlo, aby se k vám informace o prefixu dostaly. Prefix delegation je součást DHPCv6. Zdrojový port DHCP je 547, cílový klienta je 546. Pravidlo může vypadat třeba takhle:

/ipv6 firewall filter add action=accept chain=input comment="Povoleni DHCPv6 client" dst-port=546 protocol=udp src-address=fe80::/10

Povolíme přijímání ohlášení směrovače.

/ipv6 settings set accept-router-advertisements=yes

Už jen potřebujeme požádat vašeho poskytovatele. V našem případě žádáme o dvě věci – adresu pro rozhraní WAN (v našem případě ether1) a prefix. Přidělený prefix bude v IPv6 poolu s názvem test_ipv6. Jak bylo zmíněno, PD je součást DHCPv6, takže nakonfigurujeme DHCP klient:

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

Výsledek by měl vypadat nějak takhle, máme IPv6 adresu na rozhraní ether1 (WAN) i prefix:

/ipv6 dhcp-client> print

Flags: D - dynamic, X - disabled, I - invalid
#    INTERFACE                           STATUS REQUEST PREFIX ADDRESS
0    ether1                              bound address 2a02:7168:2303:81ee::/64, 58w6d17h13m35s 2a02:7168:2300:1e1:0:ffff:a0b:81ee, 58w6d17h13m35s
                                         prefix

Je zde mnohem více parametrů, odkážu vás na oficiální dokumentaci k MikroTiku.

Dokonce ani nemusíme žádat o adresu, můžeme fungovat bez ní, jen s prefixem. Ke komunikaci směrovače se zbytkem internetu se pak použije vhodná adresa z jiného rozhraní, která byla přidělena jako součást prefixu.

Takovou adresu přidělíme na bridge (vnitřní rozhraní) jako IP adresu z přiděleného prefixu.

/ipv6 address
add address=::1 from-pool=test_ipv6 interface=bridge

Snadno jde ale nastavit jiná, někdo preferuje slovní pojmenování, třeba cafe, face a podobně. Můžete si vybrat, stačí upravit parametr  address.

Jak vidíte, povedlo se to:

/ipv6 address> print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
#    ADDRESS                                     FROM-POOL INTERFACE ADVERTISE
0 DL fe80::6e3b:6bff:febf:2cd4/64 bridge         no
1 DL fe80::6e3b:6bff:febf:2cd3/64 ether1         no
2  G 2a02:7168:2303:81ee::1/64                   test_ipv6 bridge     yes
3 DG 2a02:7168:2300:1e1:0:ffff:a0b:81ee/64                 ether1

Tak a je to. Pokud vše klaplo, vyzkoušejte test-ipv6.com a za pár vteřin uvidíte, že vám IPv6 funguje. Jak dlouho to celé trvalo? Pět minut? To není tak špatné, ne?

Zkuste si na klientovi vypsat adresy a směrovací tabulku. Možná vás překvapí, že adresa vaší výchozí brány je lokální linková adresa začínající fe80::. Je to tak správně. Ohlášení směrovače přichází z jeho lokální linkové adresy, ta se při autokonfiguraci nastaví do směrovací tabulky.

Jak je to s DNS? Nikde jsme ji nekonfigurovali a funguje. Ano, výchozí nastavení u Mikrotiku jsou tak, že se automaticky získá od poskytovatele a zároveň se i oznamuje klientům v Route Advertisement. To si můžete ověřit zde:

[admin@MikroTik] /ipv6 nd> print verbose
Flags: X - disabled, I - invalid, * - default
0  * interface=all ra-delay=3s .... advertise-dns=yes
...

Teď máte šestku funkční, jen si nezapomeňte ještě nastavit firewall.

Než půjdeme na druhou, trochu složitější konfiguraci, lehce rozebereme některé IPv6 možnosti. Na rozdíl od IPv4 je tady více možností konfigurace. Záleží na poskytovateli, jak velký nám přidělí prefix, co vše potřebujeme nakonfigurovat na klientech apod. Začneme s DHCP serverem, ten se od IPv4 liší.

Teď jsme si vyzkoušeli autokonfiguraci bez DHCP serveru. Klienti si sami zvolili IP adresy, informovali jsme je o DNS a to jim k přístupu na internet stačí. Někdy ale chceme víc, třeba ve firemní síti chcete klienty informovat o IP telefonní ústředně, NTP serverech nebo bootovat po síti. Tady už budeme potřebovat DHCP server.

Více o autokonfiguraci

DHCPv6 existuje ve dvou režimech – bezstavové a stavové.

Bezstavové DHCPv6 nepřiděluje IP adresy, poskytne nám pouze ostatní parametry jako adresy DNS serveru a prohledávané domény. Aby klient získal adresu, je tedy nutná ještě autokonfigurace SLAAC. DHCP server tedy adresy neřeší a ani neví, kdo má kterou adresu.

Stavové DHCPv6 se více podobná tomu, co známe ze čtyřky. To už přiděluje adresy, řeší konflikty adres a řeší i další věci jako výše zmiňované NTP, boot server a další.

No a jak je to s výchozí bránou? Můžu ji taky přidělovat pomocí DHCPv6? Může se vám to zprvu zdát nelogické, ale opravdu nemůžete. To vám zařídí pouze ohlášení směrovače. (nebo statická konfigurace)

Ohlášení směrovače (Router Advertisement – RA) bylo použité už v prvním příkladu. Ať budete dělat jakoukoli konfiguraci, vždy se s ním setkáte. Vysílají se periodicky, klient si je ale může i vyžádat pomocí výzvy (Router Solicitation – RS), dělá to při připojení do sítě. V oznámeních směrovač sděluje informace o síti – jak lze získat adresy, jak je to s DHCP. RA obsahují tzv. příznaky (flagy), důležité pro nás jsou příznaky M a O a dále příznak A, který je součástí rozšiřujicí volby obsahující síťový prefix (Prefix Information Option – PIO).

příznak O (Other Configuration)
když je nastaven, říká, že je k dispozici použít bezstavové DHCPv6 pro nastavení síťových parametrů jako například DNS serveru
příznak M (Managed Configuration)
když je nastaven, klient si má o IP adresu i další parametry říct DHCPv6 serveru (flag O pak ztrácí význam)
příznak A (Autonomous)
když je nastaven, říkáme klientům, že pro daný prefix mají použít bezestavovou autokonfiguraci

Vzniká nám tu tedy několik kombinací:

Možné kombinace příznaků
Příznak O Příznak M Příznak A Způsob konfigurace
0 žádná konfigurace adres, jen nastavení výchozí brány 
0 0 1 SLAAC
1 0 1 SLAAC + bezestavové DHCPv6
nezáleží 1 0 pouze stavové DHCPv6
nezáleží 1 1 stavové DHCPv6 a zároveň SLAAC

Délka prefixu

Další věcí, kterou musím zmínit je délka prefixu. Týká se to hlavně prefixu, který nám přidělí poskytovatel, částečně se to ale projeví i v LAN. Co je správně a proč může být /64 nevhodné? RFC 6177 mluví o tom, každá koncová síť by měla dostat dostatečné množství adres, například /56 pro domácí uživatele a /48 pro ostatní.

Tady nám do toho trochu hážou vidle někteří poskytovatelé, kteří vám přidělí pouze prefix /64. Jasně, ono je to krásných 18446744073709551616 adres, zároveň je to nejmenší blok pro autokonfiguraci. Pokud jste malá L2 síť, není to žádný problém. ISP přidělí /64 a vy tenhle blok použijete v LAN.

Pokud jste složitější síť a chcete IPv6 ve více VLAN, předávat na další směrovač v síti apod., tak SLAAC ani delegované prefixy s přiděleným /64 prefixem nemůžete použít.

Takže sáhnete po IP kalkulátoru a musíte si ručně IP adresy rozplánovat a nakonfigurovat na vašem zařízení. Není to těžké:

2 networks /65 9,223,372,036,854,775,808 addresses
4 networks /66 4,611,686,018,427,387,904 addresses
8 networks /67 2,305,843,009,213,693,952 addresses
16 networks /68 1,152,921,504,606,846,976 addresses

Já se s tímhle trochu trápil. Když jsem pro účel tohoto článku hledal poskytovatele, který dává lepší prefix, měl jsem dost potíže takového najít. Tady na jihu je téměř všude Starnet nebo nějaká z jeho firem a ti prostě dávají /64. Oslovil jsem je a větší prefix nabízí, ale je to placené. Ano, jsou to levné linky, nemůžeme chtít zázraky.

Složitější ukázka s Fortigate

Další ukázka je s firewallem Fortigate, poskytovatel nám přidělí prefix /62 (tedy čtyři prefixy /64) a my jej využijeme v několika VLAN. Pro vlan 40 (řekněme Wi-Fi pro hosty) použijeme SLAAC a DNS servery poskytovatele, pro interní síť stavový DHCPv6 server.

Zmíním tady parametr prefix hint – tím může klient požádat o konkrétní délku prefixu. Server může tento parametr ignorovat, klidně může přidělit jinou délku, než byla požadována. Pak je jen na klientovi, jak se s tím vypořádá.

Nejprve si požádáme o prefix přes rozhraní WAN:

config system interface
  edit "wan"
    config ipv6
      set ip6-mode dhcp   <-- jak získat IP adresu
        set dhcp6-prefix-delegation enable   <-- povolení PD
        config dhcp6-iapd-list
          edit 5
            set prefix-hint ::/62
          next
        end
      end
    end
 end

Ověříme, že jsme dostali prefix. Z výpisu je vidět, že jsme nedostali IPv6 adresu na WAN rozhraní, ale prefix máme, dostáváme i DNS:

config system interface
     edit "wan"
       get
   ...
   ipv6:
      ip6-mode            : dhcp
      nd-mode             : basic
      ip6-address         : ::/0
      ip6-allowaccess     : ping
      icmp6-send-redirect : enable
      ra-send-mtu         : enable
      ip6-reachable-time  : 0
      ip6-retrans-time    : 0
      ip6-hop-limit       : 0
      dhcp6-prefix-delegation: enable
 delegated-prefix iaid 5     : 2001:167c:9594:6000::/62
 preferred-life-time         : 270
 valid-life-time     : 300
 delegated-DNS1      : 2001:4860:4860::8888
 delegated-DNS2      : 2001:4860:4860::8844
 ...

Protože máme víc vnitřních vlan, musíme si prefix více rozdělit. Každá VLAN (v našem případě vlan 40 a internal) dostane jinou podsíť o velikosti /64.

Začneme s vlan 40. Prefix, který jsme dostali je 2001:167c:9594:6000::/62. My nepřidělíme první v pořadí, tedy 2001:167c:9594:6000::/64, ale až třetí, tedy 2001:167c:9594:6002/64. Na rozhraní si přidělíme adresu 2001:167c:9594:6002::1.

Toto řeší zápis set ip6-subnet ::2:0:0:0:1/64. Ten říká, že se k našemu prefixu má „přičíst“ tato adresa – jedná se o logický součet (funkci OR) prefixu a námi zadané podsítě.

Nastavíme si adresu na rozhraní a nastavíme zapneme SLAAC:

edit "vlan 40"
  config ipv6
    set ip6-mode delegated
    set ip6-allowaccess ping
    set ip6-delegated-prefix-iaid 5
    set ip6-send-adv enable  <-- povolení zasílání RA
    set ip6-upstream-interface "wan"
    set ip6-subnet ::2:0:0:0:1/64  <-- IP adresa na tomto rozhraní
    config ip6-delegated-prefix-list   <-- oznamovaný prefix (teoreticky jich může být i víc)
      edit 1
        set upstream-interface "wan"
        set delegated-prefix-iaid 5
        set subnet 0:0:0:2::/64  <-- tuto podsit budeme oznamovat v RA
        set rdnss-service delegated  <-- zároveň budeme oznamovat i DNS, které nám dal poskytovatel
      next
    end
  end

Výsledek by měl být:

 config system interface
    edit "vlan 40"
     config ipv6
      get
...
 ip6-address         : 2001:167c:9594:6002::1/64
 ip6-delegated-prefix-iaid: 5
 ip6-send-adv        : enable
 ip6-manage-flag     : disable
 ip6-other-flag      : enable
...

Pro interní síť bude řešena jinak – statefull DHCP config system interface

  edit "lan"
    config ipv6
      set ip6-mode delegated
      set ip6-delegated-prefix-iaid 5
      set ip6-send-adv enable
      set ip6-manage-flag enable  <-- posíláme M flag
      set ip6-upstream-interface "wan"
      set ip6-subnet ::1:0:0:0:1/64
    end
  end

Pro interní síť ještě potřebujeme DHCP server. Ten je možné nakonfigurovat více způsoby. V prvním příkladu nebudeme upřesňovat přidělované IP adresy a použijeme DNS servery poskytovatele.

config system dhcp6 server
  edit 1
    set dns-service delegated
    set subnet 0:0:0:1::/64
    set interface "lan"
    set upstream-interface "wan1"
    set ip-mode delegated
  next
end

Druhá ukázka – tady nastavíme vlastní DNS servery a budeme přidělovat jen malý rozsah IP adres.

config system dhcp6 server
  edit 1
    set dns-server1 xxxx
    set dns-server1 yyyy
    set domain firma.cz
    set interface "lan"
    set upstream-interface "wan1"
    set ip-mode range
      config ip-range
        edit 1
          set start-ip 2001:167c:9594:6001::cafe:100
          set end-ip 2001:167c:9594:6001::cafe:300
        next
      end
    end

Máme skoro hotovo. Nezapomeňte nastavit firewall.

V záznamech provozu (traffic log) je po chvilce vidět, že klienti fungují, jsou tu adresy např.: 2001:167c:9594:6002:59d2:163e:f3fa:2a81 a 2001:167c:9594:6001::0:0:cafe:101. Tohle nakonec zabralo taky jen pár minut.

Když máte v síti servery, u těch patrně nechcete autokonfiguraci, tady sáhnete po statické konfiguraci. Někdo zatouží po tom, nastavit si vše staticky. To samozřejmě vždycky možné je.

Konfigurace klientů je hodně podobná IPv4, potřebujete si vymyslet jen nějakou adresu, vědět délku prefixu, vaši výchozí bránu a DNS. Teoreticky pak nepotřebujete ani periodické RA, můžete je na klientech ignorovat (v Linuxu pomocí sysctl).

Ruční konfigurace, třeba ve větší síti, je hrozná práce. Provádět pak změny v celé síti je časově náročné. Tak proč to dělat? Opravdu tohle chcete?

Když už jsme u toho statického adresování: prefix delegation není jediná možnost, jak získat IPv6 od poskytovatele.

bitcoin_skoleni

Běžně se používá i statické směrování – na rozhraní WAN si nastavíte poskytovatelem přidělenou IP adresu a nastavíte výchozí bránu. Na tuto adresu pak poskytovatel nasměruje prefix nějaké délky, který pak použijete v LAN. Vše lze tedy i staticky.

Za pomoc s korekturou článku děkuji Ondřeji Caletkovi.

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.