In passato molti amministratori di sistema hanno semplicemente fatto ricorso alla disabilitazione di IPv6 piuttosto che configurarlo correttamente, continuando a fare affidamento sul vecchio IPv4 che ha funzionato bene per un tempo molto lungo. Poiché lo spazio degli indirizzi IPv4 si è esaurito, gli amministratori stanno iniziando lentamente a utilizzare IPv6 per necessità.
Qui tratteremo come configurare l’indirizzamento IPv6 in Linux e forniremo alcuni suggerimenti e consigli di base per la risoluzione dei problemi relativi alla rete IPv6.
Configurazione degli indirizzi IPv6
Gli indirizzi IPv6 possono essere configurati in alcuni modi aggiuntivi rispetto a IPv4, alcuni dei quali sono elencati di seguito.
Configurazione manuale: Questo è abbastanza simile al modo in cui IPv4 viene configurato manualmente, in sostanza modifichiamo manualmente un file di interfaccia nel formato /etc/sysconfig/network-scripts/ifcfg-<interface>.
DHCPv6: Dynamic Host Protocol versione 6 è simile a DHCP per IPv4 in quanto configurerà automaticamente la nostra interfaccia.
Autoconfigurazione dell’indirizzo stateless (SLAAC): funziona in modo simile a DHCP, tuttavia funziona ricevendo i messaggi pubblicitari del router da un router IPv6 locale sulla rete.
Qui ci concentreremo principalmente sulla configurazione di rete IPv6 manuale.
Configurazione manuale IPv6
Per prima cosa date un’occhiata alla directory /etc/sysconfig/network-scripts/per vedere se esiste già una configurazione IPv6 esistente per la particolare interfaccia in questione. Il nome del file sarà elencato come ifcfg-<interfaccia>, è possibile confermare i nomi dell’interfaccia eseguendo ‘ip a’ o deprecato ‘ifconfig‘. I nomi tipici possono includere eth0 o il formato più recente ‘eno *’ come eno16777736. Questo file può contenere sia la configurazione IPv4 che IPv6 per la stessa interfaccia.
Di seguito è riportata la configurazione del file CentOS 7 /etc/sysconfig/network-scripts/ifcfg-eno16777736, notare le impostazioni che iniziano con “IPV6”.
IPV6INIT = yes – È necessario quando si configura IPv6 sull’interfaccia.
IPV6ADDR = <indirizzo ipv6>: specifica un indirizzo IPv6 statico primario.
IPV6_DEFAULTGW = <indirizzo ipv6>% eno16777736 – Aggiunge una route predefinita attraverso l’interfaccia specificata.
Nota che se modifichi manualmente questi file, dovrai eseguire “nmcli con reload” per raccogliere le modifiche. In alternativa, possiamo apportare modifiche con il comando nmcli, che per ammissione richiede un po ‘di tempo per abituarsi, ma è piuttosto potente e il suo completamento automatico della scheda aiuta molto.
nmcli con mod eno16777736 ipv6.addresses 'fe80::20c:29ff:fe27:f2b6/64' nmcli con mod eno16777736 ipv6.method manual
Il primo comando imposta l’indirizzo IPv6, mentre il secondo assicura che questo sia un indirizzo statico e non venga perso da DHCP o SLAAC.
Per ulteriori informazioni, tenere a mente la pagina man ‘nmcli-examples‘, in quanto vi sono numerosi esempi diversi documentati qui che è possibile utilizzare.
man nmcli-examples
Configurazione IPv6 automatica
La configurazione automatica degli indirizzi IPv6 può avvenire con DHCPv6 o SLAAC. Di seguito è riportata una configurazione predefinita di CentOS 7 con IPV6_AUTOCONF abilitato, che configura le impostazioni di rete utilizzando gli annunci del router SLAAC.
[root@centos7 network-scripts]# cat ifcfg-eno16777736 HWADDR=00:0C:29:AB:12:34 TYPE=Ethernet BOOTPROTO=dhcp IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=0dbee9e5-2e7e-4c88-822b-869cfc9e2d54 ONBOOT=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
In alternativa, è possibile impostare IPV6_AUTOCONF su no e definire DHCPV6C = yes per utilizzare DHCPv6 anziché SLAAC. Quando si utilizza SLAAC o DHCPv6, gli elementi di configurazione manuale come IPV6ADDR e IPV6_DEFAULTGW possono essere rimossi poiché verranno configurati automaticamente.
Per ulteriori informazioni su queste variabili è possibile consultare la documentazione in /usr/share/doc/initscripts-*/sysconfig.txt
Applicazione delle modifiche di rete
Dopo aver apportato eventuali modifiche ai file in /etc/sysconfig/network-scripts/ la rete deve essere riavviata affinché abbiano effetto.
systemctl restart network
È anche possibile eseguire un riavvio del sistema, tuttavia ciò richiederà più tempo, ma porterà l’interfaccia con la nuova configurazione.
Risoluzione dei problemi di IPv6 di base
Ecco alcuni strumenti di base che è possibile utilizzare per eseguire la risoluzione dei problemi IPv6 di base, funzionano in modo abbastanza simile alle loro controparti IPv4.
Ping IPv6
Il comando ping6 funziona allo stesso modo del normale comando ping, tranne per il fatto che ping6 funziona con indirizzi IPv6. Questo può essere usato per inviare il traffico ICMP ad un indirizzo IPv6 e verificare la risposta, l’esempio seguente esegue il ping dell’indirizzo localhost IPv6.
[root@centos7 ~]# ping6 ::1 PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.039 ms ...
Possiamo anche eseguire il ping di un’interfaccia specificata, il comando seguente esegue il ping di tutto ciò che è collegato a eno1677736.
[root@ ~]# ping6 ff02::1%eno16777736 PING ff02::1%eno16777736(ff02::1) 56 data bytes 64 bytes from fe80::204:edff:feef:a770: icmp_seq=1 ttl=64 time=2.32 ms 64 bytes from fe80::204:edff:feef:a770: icmp_seq=2 ttl=64 time=0.640 ms
IPv6 Route
Il comando ‘ip -6 route show‘ può essere utilizzato per visualizzare il routing IPv6.
[root@centos7 ~]# ip -6 route show unreachable ::/96 dev lo metric 1024 error -101 unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101 unreachable 2002:a00::/24 dev lo metric 1024 error -101 unreachable 2002:7f00::/24 dev lo metric 1024 error -101 unreachable 2002:a9fe::/32 dev lo metric 1024 error -101 unreachable 2002:ac10::/28 dev lo metric 1024 error -101 unreachable 2002:c0a8::/32 dev lo metric 1024 error -101 unreachable 2002:e000::/19 dev lo metric 1024 error -101 unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101 fe80::/64 dev eth0 proto kernel metric 256
IPv6 Traceroute
Il comando traceroute6 può essere utilizzato per mostrare tutti gli hop nel percorso verso la destinazione specificata allo stesso modo del comando traceroute.
[root@centos7 ~]# traceroute6 ipv6.google.com traceroute to ipv6.google.com (2607:f8b0:4006:80f::200e), 30 hops max, 80 byte packets connect: Network is unreachable
Il comando tracepath6 funziona in modo simile.
Visualizza le informazioni sull’indirizzo IPv6 corrente
È possibile visualizzare la configurazione IPv6 corrente eseguendo il comando ‘ip a‘ che è l’abbreviazione di ‘ip address show‘. Questo mostrerà le interfacce IPv6 come “inet6” seguito dal loro indirizzo IP.
Visualizza connessioni di rete IPv6
Per impostazione predefinita, il comando ‘netstat’ mostra sia IPv4 che IPv6, tuttavia con l’opzione -6 possiamo selezionare di visualizzare solo le porte che il server sta ascoltando con i suoi indirizzi IPv6 e tutte le connessioni.
[root@centos7 ~]# netstat -antup6 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::111 :::* LISTEN 787/rpcbind tcp6 0 0 :::22 :::* LISTEN 1661/sshd tcp6 0 0 ::1:631 :::* LISTEN 2476/cupsd tcp6 0 0 ::1:25 :::* LISTEN 2066/master udp6 0 0 :::111 :::* 787/rpcbind udp6 0 0 :::123 :::* 781/chronyd udp6 0 0 ::1:323 :::* 781/chronyd udp6 0 0 :::39836 :::* 1439/dhclient udp6 0 0 :::942 :::* 787/rpcbind
Conclusione
La configurazione degli indirizzi IPv6 non è molto diversa dalla configurazione degli indirizzi IPv4, la differenza principale è semplicemente la struttura degli indirizzi IP è diversa. Una volta individuate le basi di IPv6, è possibile configurare facilmente il networking IPv6. La maggior parte degli strumenti di risoluzione dei problemi sono anche abbastanza simili, è comunque possibile visualizzare le informazioni sull’indirizzo IP corrente, le tabelle di routing ed eseguire ping e traceroute in modo molto simile.