Jak jsem zmínil v části Co potřebujete vědět o IPv6 Existují různé způsoby konfigurace adresy IPv6 na počítači. Zaměříme se především na konfiguraci IPv6 adresy na systémech Red Hat Enterprise Linux (RHEL) 7 a 8 a stručně vysvětlíme různé metody přiřazení.
[Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si jej nyní zdarma.]
Konfigurace IPv6 na RHEL 7 a 8
Systém Red Hat Enterprise Linux je nakonfigurován tak, aby automaticky získal adresu IPv6. Toto jsou řádky v konfiguračním souboru, kde se kouzlo děje (ke každému řádku přidávám nějaké vysvětlení):
[root@rhel8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
………
………
IPV6INIT="yes" ← Enable initialization on the interface
IPV6_AUTOCONF="yes" ← Accept Router Advertisements (RA’s)
IPV6_DEFROUTE="yes" ← The default IPv6 route is assigned to the interface
IPV6_FAILURE_FATAL="no" ← Opposite of ‘may-fail’
IPV6_ADDR_GEN_MODE="stable-privacy" ← IPv6 stable-privacy addressing s(RFC7217)
NAME="enp1s0"
………
………
Chcete-li získat další informace o tom, co tato nastavení připojení dělají, spusťte:
man nm-settings-ifcfg-rh
Automatická konfigurace bezstavové adresy (SLAAC)
Pokud IPV6_AUTOCONF
proměnná je nastavena na yes
, pak se metoda SLAAC použije ke konfiguraci adresy IPv6 hostitele pomocí protokolu NDP (Neighbor Discovery Protocol). Zde použitá technika je vysvětlena v sekci Multicast v předchozím článku, kde dochází k výměně žádostí klienta a zpráv ICMPv6 s reklamou směrovače.
Termín bez státu používáme, protože neexistuje žádná služba, která by sledovala, jaké adresy IPv6 byly klientům přiděleny. Adresa IPv6 je spíše složena pomocí techniky zvané Extended Unique Identifier (EUI-64), kde se k adrese MAC (Media Access Control) (která má 48 bitů) přidá 16 bitů, čímž se vytvoří globálně jedinečná adresa IPv6.
DHCPv6
Chcete-li použít DHCPv6, v konfiguračním souboru by se mělo objevit následující:
IPV6_AUTOCONF="no"
DHCPV6C=”yes”
Pokud je DHCPv6
proměnná je nastavena na yes
, pak klient získá IP adresu z fondu DHCPv6. Služba DHCPv6 pak sleduje, jaké adresy IPv6 jsou přiřazeny jakým klientům. Mezi IP adresami jsou klientovi předávány další informace, jako jsou servery DNS, doba pronájmu, názvy hostitelů a další atributy. Administrátor musí nakonfigurovat fond adres IPv6, aby mohl obsluhovat klienty.
Manuální
Je také možné (ale nedoporučuje se) nakonfigurovat adresu IPv6 ručně. Ruční konfigurace vyžaduje hodně úsilí, je náchylná k chybám a je těžké sledovat, jaké adresy IPv6 jsou přiřazeny jakým klientům. Ve velké síti je pro provedení tohoto úkolu vhodnější server DHCPv6.
Chcete-li nakonfigurovat IPv6 na Red Hat Enterprise Linux 7 a 8 ručně, je třeba do konfiguračního souboru přidat vaši verzi následujícího:
[root@rhel8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
………
………
IPV6ADDR=2a01:1b0:5389:4::22f2
IPV6_DEFAULTGW=2a01:1b0:5389:4::22f0
………
………
Nebo můžete ručně nakonfigurovat pomocí NetworkManager:
nmcli con mod enp1s0 ipv6.addresses "2a22:1d0:5222:4::22f2/64" gw6 "2a22:1d0:5222:4::22f0/64"
nmcli con mod enp1s0 ipv6.method manual
Testování připojení IPv6
Pro testování IPv6 konektivity můžeme spustit ping6 na www.redhat.com:
ping6 -c2 www.redhat.com
PING www.redhat.com(g2a02-26f0-b200-018f-0000-0000-0000-0d44.deploy.static.akamaitechnologies.com (2a02:26f0:b200:18f::d44)) 56 data bytes
64 bytes from g2a02-26f0-b200-018f-0000-0000-0000-0d44.deploy.static.akamaitechnologies.com (2a02:26f0:b200:18f::d44): icmp_seq=1 ttl=58 time=8.43 ms
--- www.redhat.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.425/8.425/8.425/0.000 ms
Zatímco ping běžel, spustil jsem na pozadí Wireshark, abych viděl, co se děje pod kapotou. Zde je paket požadavku ICMPv6 (zaslaný mnou) a paket odpovědi ICMPv6, který jsem obdržel zpět.
Požadavek ICMPv6
No. Time Source Destination Protocol Length Info
18 3.471783469 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d 2a02:26f0:7b:28a::d44 ICMPv6 118 Echo (ping) request id=0x68d7, seq=1, hop limit=64 (reply in 24)
Frame 18: 118 bytes on wire (944 bits), 118 bytes captured (944 bits) on interface 0
Ethernet II, Src: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee), Dst: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Destination: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Address: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Address: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d, Dst: 2a02:26f0:7b:28a::d44
0110 .... = Version: 6
.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
.... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0)
.... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0)
.... .... .... 1010 0010 1001 1110 0100 = Flow Label: 0xa29e4
Payload Length: 64
Next Header: ICMPv6 (58)
Hop Limit: 64
Source: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
Destination: 2a02:26f0:7b:28a::d44
[Source GeoIP: NL]
[Destination GeoIP: ]
Internet Control Message Protocol v6
Type: Echo (ping) request (128)
Code: 0
Checksum: 0xdff6 [correct]
[Checksum Status: Good]
Identifier: 0x68d7
Sequence: 1
[Response In: 24]
Data (56 bytes)
Odpověď ICMPv6
No. Time Source Destination Protocol Length Info
24 3.607831042 2a02:26f0:7b:28a::d44 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d ICMPv6 118 Echo (ping) reply id=0x68d7, seq=1, hop limit=59 (request in 18)
Frame 24: 118 bytes on wire (944 bits), 118 bytes captured (944 bits) on interface 0
Ethernet II, Src: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff), Dst: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Destination: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Address: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Address: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: 2a02:26f0:7b:28a::d44, Dst: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
0110 .... = Version: 6
.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
.... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0)
.... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0)
.... .... .... 1000 0110 0011 0011 0111 = Flow Label: 0x86337
Payload Length: 64
Next Header: ICMPv6 (58)
Hop Limit: 59
Source: 2a02:26f0:7b:28a::d44
Destination: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
[Source GeoIP: ]
[Destination GeoIP: NL]
Internet Control Message Protocol v6
Type: Echo (ping) reply (129)
Code: 0
Checksum: 0xdef6 [correct]
[Checksum Status: Good]
Identifier: 0x68d7
Sequence: 1
[Response To: 18]
[Response Time: 136.048 ms]
Data (56 bytes)
Všimněte si, že mnoho organizací se rozhodlo blokovat požadavky ping z bezpečnostních důvodů, takže je obecně dobré zkusit při testování připojení pingnout několik webů.