Skip to content

IPv6 – radvd, dhcpv6, bind

IPv6 je protokol, který má za úkol nahradit IPv4. Hlavní důvod je nedostatek adres z adresního prostoru IPv4. Zatímco IPv4 je 32bit adresa, IPv6 má 128bit a tak možných adres je více než atomů ve vesmíru. Že to není zas tak jednoduché, zjistíme za chvilku.

Zápisek nemá za cíl ukázat všechny možnosti ipv6 ani vvysvětlit všechny pojmy. Na dotazy rád odpovím v diskuzi či osobně 🙂

Nudná teorie

Zde si dovolím citaci z wiki, protože lépe bych to asi nenapsal:

IPv6 adresy se obvykle zapisují jako osm skupin čtyř hexadecimálních číslic. Například 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 je platná adresa IPv6. Pokud je jedna nebo více ze čtyřčlenných po sobě následujících skupin 0000, nuly mohou být vynechány a nahrazeny dvěma dvojtečkami (::). Např. 2001:0db8:0000:0000:0000:0000:1428:57ab lze tedy nahradit 2001:0db8::1428:57ab. Libovolný počet po sobě následujících skupin 0000 může být nahrazen dvěma dvojtečkami, pokud se v adrese toto nahrazení vyskytuje pouze jednou. Předcházející nuly ve skupině mohou být vynechány (jako v ::1 pro místní smyčku). Adresy níže jsou tedy platné a rovnocenné:

2001:0db8:0000:0000:0000:0000:1428:57ab
2001:0db8:0000:0000:0000::1428:57ab
2001:0db8:0:0:0:0:1428:57ab
2001:0db8:0:0::1428:57ab
2001:0db8::1428:57ab
2001:db8::1428:57ab

Šestku můžeme do našeho počítače dostat třemi způsoby. Můžeme jí do konfigurace stanice zapsat ručně, stejně jako čtyřku. Toto se hodí ale tak maximálně pro servery. Nás ale zajímají dva další způsoby a to je konfigurace od routeru a konfigurace od dhcp serveru. V každé síti se nachází jeden (či více) routerů. Kromě routování se v případě šestky router využívá i k tomu (kromě jiného), aby nakonfiguroval šestku na stanicích. Tomuto způsobu se říká bezstavová konfigurace. Router oznámí stanici prefix sítě, adresu brány a může, ale nemusí, oznámit adresu dns serveru. Stanice si pak vygeneruje svou adresu, zkontroluje, zda na síti nekoliduje s jinou stanicí a začne jí používat. Aby bezstavová konfigurace fungovala, musí mít váš subnet prefix /64. Při menším prefixu by nebylo možné provést autokonfiguraci.

Příklad prefixu

2a01:5f0:c001:122::/64

Příklad šestkové adresy:

2a01:5f0:c001:122:216:3eff:fe01:17f

Kromě globálních šestkových adres uvedených výše, existují Local Link adresy (např. fe80::ea9a:8fff:fea7:e318). Je to adresa vždy začínající fe80::/10, která je dále složena z mac adresy karty a ff:fe uprostřed. Tyto adresy se používají ke komunikaci ve vnitřní síti a nejsou routovatelné. Pokud tedy nemáte šestkový prefix a přesto byste chtěli šestku testovat alespoň v rámci svojí LAN, tak díky těmto adresám můžete. Tyto adresy máte na interfacu vždy, pokud máte aktivní ipv6 ve svém systému (nezávisle na tom, zda máte globální ipv6).
Dále existují ještě FC00::/7 (unikátní lokální adresy), FF00::/8 (skupinové adresy), ::1/128 (lo) a ::/128 (nedefinováno)

Aby si stanice mohla vygenerovat vlastní adresu, použije k tomu DUID. Je to jedinečný identifikátor v rámci systému, který na stanici běží. To znamená, že pokud máme na stanici multiboot, tak každý systém bude mít jiné DUID a tím pádem může mít i jinou ip adresu. DUID se také změní, pokud systém reinstalujete. Naopak se nezmění, pokud vyměníte síťovou kartu. DUID osobně považuji za nepříliš dobrý nápad, asociace na MAC mi přišla lepší. Myslelo si to mnoho lidí a tak v roce 2012 vyšlo rfc, které zavádí identifikaci i podle mac adresy. DUID samotné se z části generuje podle mac adresy. My pak dhcp serveru řekneme, aby si v DUID mac adresu našel. Problém s DUID je i v tom, že pokud klonujeme stanice, tak musíme zajistit, aby se DUID v naklonované stanici změnilo, jinak máme hned kolizi v síti. Konkrétně ve Windows 7, kde nejsou nejnovější aktualizace (nevím, které KB to přesně je), nelze DUID změnit resp. po změně v registrech máte po restartu opět původní hodnotu.

Změna DUID v registrech Windows

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters\Dhcpv6DUID

Změna DUID v Linuxu

/var/lib/dhclient/dhclient6.leases

Část 216:3eff:fe01:17f byla vygenerována automaticky z mac adresy, která je uprostřed rozdělena pomocí FF:FE.

A nyní si prosvištíme některá slovíčka:
radvd – Router Advertisement Daemon – stará se o vysílání RA
dhcpv6 – řeší přidělování ipv6 adres
bind – nameserver
duid – DHCP Unique Identifier

 

Konfigurace

radvd.conf

interface eth0
{
    AdvSendAdvert on;
    MaxRtrAdvInterval 30;
    AdvManagedFlag on;
    AdvOtherConfigFlag on;
    prefix 2a01:5f0:c001:122::/64
        {
            AdvOnLink on;
            AdvAutonomous on;
            AdvValidLifetime 28800;
            AdvPreferredLifetime 14400;
        };
            RDNSS 2001:4860:4860::8888 {};
};

AdvSendAdvert – zapnutí posílání RA
MaxRtrAdvInterval – maximální doba mezi posláním RA z routeru
AdvManagedFlag on – říkáme stanicím, aby si ip adresu vyžádaly z dhcp serveru místo autokonfigurace
AdvOtherConfigFlag on – říkáme stanicím, aby i další síťové informace požadovali od dhcp serveru
AdvAutonomous on – povolíme použití autokonfigurace. Systémy, které nejsou správně nakonfigurovány pro dhcpv6, by při volbě off přišly o ipv6 konektivitu, protože jim tím vypneme možnost nastavit si ip autokonfigurací a dhcpv6 z nějakého důvodu neumí.
RDNSS – router oznamuje zadanou adresu jako dns server (tato volba byla dopracována, protože dřívější implementace RA vůbec nepočítala se zasíláním adresy dns serveru. V případě, že jste neměli dhcpv6 a neměli jste zároveň konektivitu po ipv4, tak jste sice dostali svou adresu autokonfigurací, ale nedostali jste adresu ns, takže …. no takže tak 😀 )

dhcp6.conf

# IPv6 address valid lifetime
#  (at the end the address is no longer usable by the client)
#  (set to 30 days, the usual IPv6 default)
default-lease-time 28800;

# IPv6 address preferred lifetime
#  (at the end the address is deprecated, i.e., the client should use
#   other addresses for new connections)
#  (set to 7 days, the  usual IPv6 default)
preferred-lifetime 14400;

# Global definitions for name server address(es) and domain search list
#option dhcp6.name-servers fc00:501:ffff:100:200:ff:fe00:3f3e;
#option dhcp6.domain-search "test.example.com","example.com";
option dhcp6.name-servers 2001:4860:4860::8888;

# Set preference to 255 (maximum) in order to avoid waiting for
# additional servers when there is only one
option dhcp6.preference 255;

# IPv6 address valid lifetime
#  (at the end the address is no longer usable by the client)
#  (set to 30 days, the usual IPv6 default)
default-lease-time 300;

# IPv6 address preferred lifetime
#  (at the end the address is deprecated, i.e., the client should use
#   other addresses for new connections)
#  (set to 7 days, the  usual IPv6 default)
preferred-lifetime 200;

# T1, the delay before Renew
#  (default is 1/2 preferred lifetime)
#  (set to 1 hour)
option dhcp-renewal-time 150;

# T2, the delay before Rebind (if Renews failed)
#  (default is 3/4 preferred lifetime)
#  (set to 2 hours)
option dhcp-rebinding-time 250;

# Set preference to 255 (maximum) in order to avoid waiting for
# additional servers when there is only one
option dhcp6.preference 255;

option dhcp6.leased-address code 194 = string;
option dhcp6.leased-address = binary-to-ascii(16,16, ":", substring(suffix(option dhcp6.ia-na, 24),0,16));
option dhcp6.macaddr code 193 = string;
option dhcp6.macaddr = binary-to-ascii(16, 8, ":", suffix(option dhcp6.client-id, 6));

subnet6 2a01:5f0:c001:122::/64 { log (info, concat ("Lease for ",config-option dhcp6.leased-address, " leased to ", config-option dhcp6.macaddr)); }

host jarvis { hardware ethernet e8:9a:8f:a7:e3:18;fixed-address6 2a01:5f0:c001:122:216:3eff:fe01:17f; }

Pokud máte v síti ipv4 jakože asi máte, tak je vhodné označovat stanice šestkovou adresou tak, aby poslední 4 segmenty byly čísla ze čtyřky. Příklad: 2a01:5f0:c001:122:10:109:1:231, je to tak potom přehlednější.

bind

Do bindu si vyrobíme ip6.arpa zónu pro reverzní záznamy (například pro servery, stanice ptr mít nemusí). „AAAA“ záznam bude vypadat například takto:

smtp.linuxway.cz.     IN     AAAA    2a01:5f0:c001:122:216:3eff:fe01:17f

a PTR

f.7.1.0.1.0.e.f.f.f.e.3.6.1.2.0.2.2.1.0.1.0.0.c.0.f.5.0.1.0.a.2.ip6.arpa. IN PTR smtp.linuxway.cz.

U PTR se musí vždy udávat celá ipv6 adresa včetně všech nul, není zde povolena ::

 

Před zavedením šestky je nutno také přemýšlet nad ochranou stanic, které jsou takto přímo dostupné z internetu a před tím byly například zaNATované a zafirewallované ve čtyřkové síti.

Myslete na zdraví svých počítačů – nezapomeňte na firewall (v linuxu ip6tables, ve Windows …. vypněte Windows)

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload the CAPTCHA.