Come ho già detto in Cosa c'è da sapere su IPv6 , esistono diversi metodi per configurare un indirizzo IPv6 su una macchina. Ci concentreremo principalmente sulla configurazione di un indirizzo IPv6 su un sistema Red Hat Enterprise Linux (RHEL) 7 e 8 e spiegheremo brevemente i diversi metodi di assegnazione.
[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]
Configurazione di IPv6 su RHEL 7 e 8
Un sistema Red Hat Enterprise Linux è configurato per ottenere automaticamente un indirizzo IPv6. Queste sono le righe nel file di configurazione in cui avviene la magia (aggiungo qualche spiegazione ad ogni riga):
[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"
………
………
Per ulteriori informazioni su cosa fanno queste impostazioni di connessione, esegui:
man nm-settings-ifcfg-rh
Autoconfigurazione indirizzo stateless (SLAAC)
Se il IPV6_AUTOCONF
la variabile è impostata su yes
, quindi il metodo SLAAC viene utilizzato per configurare l'indirizzo IPv6 dell'host utilizzando il Neighbor Discovery Protocol (NDP). La tecnica qui applicata è quella spiegata nella sezione Multicast dell'articolo precedente, dove c'è uno scambio di messaggi di richiesta client e pubblicità router ICMPv6.
Usiamo il termine stateless perché non esiste un servizio per tenere traccia di quali indirizzi IPv6 sono stati assegnati ai client. Piuttosto, l'indirizzo IPv6 è composto da una tecnica chiamata Extended Unique Identifier (EUI-64) in cui vengono aggiunti 16 bit all'indirizzo Media Access Control (MAC) (che ha 48 bit), creando così un indirizzo IPv6 univoco a livello globale.
DHCPv6
Per utilizzare DHCPv6, nel file di configurazione dovrebbe essere visualizzato quanto segue:
IPV6_AUTOCONF="no"
DHCPV6C=”yes”
Se il DHCPv6
la variabile è impostata su yes
, quindi un client ottiene un indirizzo IP dal pool DHCPv6. Il servizio DHCPv6 tiene quindi traccia di quali indirizzi IPv6 sono assegnati a quali client. Tra l'indirizzo IP, altre informazioni come server DNS, tempo di locazione, nomi host e altri attributi vengono inviati al client. Un amministratore deve configurare il pool di indirizzi IPv6 per poter servire i client.
Manuale
È anche possibile (ma non consigliato) configurare manualmente un indirizzo IPv6. La configurazione manuale richiede molto sforzo, è soggetta a errori ed è difficile tenere traccia di quali indirizzi IPv6 sono assegnati a quali client. Su una rete di grandi dimensioni, è preferibile un server DHCPv6 per eseguire questa attività.
Per configurare manualmente IPv6 su Red Hat Enterprise Linux 7 e 8, la tua versione di quanto segue deve essere aggiunta al file di configurazione:
[root@rhel8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
………
………
IPV6ADDR=2a01:1b0:5389:4::22f2
IPV6_DEFAULTGW=2a01:1b0:5389:4::22f0
………
………
Oppure puoi configurare manualmente tramite 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
Test della connettività IPv6
Per testare la connettività IPv6, possiamo eseguire un ping6 su 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
Mentre il ping era in esecuzione, ho eseguito Wireshark in background per vedere cosa stava succedendo sotto il cofano. Ecco il pacchetto di richiesta ICMPv6 (inviato da me) e il pacchetto di risposta ICMPv6 che ho ricevuto indietro.
Richiesta 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)
Risposta 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)
Tieni presente che molte organizzazioni scelgono di bloccare le richieste di ping per motivi di sicurezza, quindi è generalmente una buona idea provare a eseguire il ping su più siti durante il test della connettività.