Configurazione di IPv6 su server VPS e dedicati | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Configurazione di IPv6 su server VPS e dedicati

Livello: Principiante / Intermedio
Tempo stimato: ~30 minuti
Obiettivo: Abilitare e configurare la rete IPv6 su un server dedicato o VPS, in modo che il server sia raggiungibile tramite IPv6 e tutti i servizi di rete funzionino correttamente con il nuovo indirizzo.

Introduzione

Il server INTROSERV ha probabilmente già un indirizzo IPv6 assegnato, ma non è ancora configurato. In questa guida alla configurazione della rete IPv6 su VPS abiliterete IPv6 su un server Linux, assegnerete un indirizzo IPv6 statico, configurerete il gateway IPv6 su Linux e verificherete la connettività. La guida copre Ubuntu (Netplan), Debian (/etc/network/interfaces) e AlmaLinux (nmcli).

Che cos'è IPv6?

IPv6 (Internet Protocol versione 6) è l'attuale generazione del protocollo Internet, progettata per sostituire IPv4. Le differenze pratiche più importanti per gli amministratori di server:

  • Un indirizzo IPv6 è lungo 128 bit e si scrive come otto gruppi di quattro cifre esadecimali separati da due punti: 2001:db8:85a3::8a2e:370:7334.
  • Un Global Unicast Address (GUA) è l'equivalente IPv6 di un indirizzo IPv4 pubblico ed è instradabile su Internet. Al VPS ne verrà assegnato uno.
  • Un indirizzo link-local viene assegnato automaticamente a ogni interfaccia compatibile con IPv6 (prefisso fe80::/10). Non è instradabile oltre il segmento locale, ma è necessario per il neighbor discovery e per i protocolli di routing.
  • Una subnet (prefisso IPv6) definisce quale parte dell'indirizzo identifica la rete. Su un VPS tipico vedrete un prefisso /64 o /128.
  • Il gateway predefinito (IPv6) è il router a cui il server invia i pacchetti quando la destinazione non si trova sul link locale. Questo indirizzo viene fornito dal provider.

Prerequisiti

Prima di iniziare, assicuratevi che siano soddisfatte le seguenti condizioni:

  • Sistema operativo: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 o AlmaLinux/RHEL 8/9/10
  • Accesso: accesso sudo o root al server tramite SSH
  • Assegnazione IPv6: un indirizzo IPv6, un prefisso di subnet e un gateway predefinito forniti dal provider di hosting. Trovate questi dati nel pannello di controllo prima di iniziare.
  • Conoscenze richieste: buona dimestichezza con la riga di comando di Linux e con la modifica di base dei file di configurazione

Info

Su INTROSERV potete trovare l'indirizzo IPv6, il prefisso e il gateway assegnati nel Client Area: accedete al vostro servizio e aprite la scheda Network o IP Addresses. I piani VPS INTROSERV ricevono in genere un prefisso /112, mentre i server dedicati ricevono un prefisso /64. Se non è elencato alcun indirizzo IPv6, contattate il supporto INTROSERV per richiedere l'assegnazione.

Passaggio 1: Verificare lo stato attuale di IPv6

Prima di modificare qualsiasi configurazione, verificate cosa conosce già il kernel.

Eseguire:

ip -6 addr show

Output previsto su un server su cui non è ancora stata applicata alcuna configurazione IPv6:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever

L'indirizzo fe80:: è l'indirizzo link-local, assegnato automaticamente dal kernel a prescindere dalla configurazione. L'assenza di una voce con scope global significa che non è ancora configurato alcun Global Unicast Address.

Verificate inoltre se IPv6 è abilitato nel kernel:

sudo sysctl net.ipv6.conf.all.disable_ipv6

Info

Su Debian 13 gli utenti normali non hanno /usr/sbin nel proprio $PATH, quindi eseguire sysctl senza sudo restituirà command not found. Inoltre, un'installazione minimale di Debian 13 non include sudo per impostazione predefinita. Prima di procedere occorre passare all'utente root (su -), installare sudo (apt install sudo) e aggiungere il proprio utente al gruppo sudoers.

Output previsto:

net.ipv6.conf.all.disable_ipv6 = 0

Il valore 0 indica che IPv6 è abilitato. Se vedete 1, IPv6 è stato disabilitato a livello di kernel.

Per riabilitarlo temporaneamente:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0

Per rendere la modifica permanente, cercate in /etc/sysctl.conf o nei file in /etc/sysctl.d/ una riga net.ipv6.conf.all.disable_ipv6 = 1, rimuovetela o commentatela, quindi eseguite:

sudo sysctl -p

Passaggio 2: Individuare il nome dell'interfaccia

Prima di modificare qualsiasi file di configurazione occorre conoscere il nome esatto dell'interfaccia di rete pubblica.

Eseguire:

ip -br link

Output previsto:

lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> eth0 UP 00:50:56:00:00:01 <BROADCAST,MULTICAST,UP,LOWER_UP>

L'interfaccia nello stato UP con un indirizzo MAC è l'interfaccia principale. I nomi più comuni sono eth0, ens3, ens18, ens33, ens160 (frequente su VMware e con i kernel moderni) e varianti simili ensXX/enpXsX. In tutti i passaggi di configurazione seguenti usate il nome esatto mostrato da ip -br link.

Passaggio 3: Configurare un indirizzo IPv6 statico

Il metodo di configurazione dipende dalla distribuzione. Ubuntu 18.04 e successive usano Netplan; Debian usa per impostazione predefinita /etc/network/interfaces; AlmaLinux usa NetworkManager oppure gli script di interfaccia in /etc/sysconfig/network-scripts/.

Prima di procedere, raccogliete dal pannello di controllo del provider i seguenti valori:

Campo Esempio
Indirizzo IPv6 2001:db8:1000::10
Lunghezza del prefisso 64
Gateway predefinito (IPv6) 2001:db8:1000::1

Sostituite questi valori di esempio con quelli reali in tutti i passaggi seguenti.

3.1 Ubuntu (Netplan)

Ubuntu usa la configurazione IPv6 di Netplan. I file di configurazione si trovano in /etc/netplan/.

Per prima cosa, elencate il contenuto della directory /etc/netplan/ per individuare il file di configurazione:

ls /etc/netplan/

Info

Un nome di file prestabilito come 00-installer-config.yaml non esiste sulla maggior parte dei VPS. Sulle immagini cloud-init il file si chiama in genere 50-cloud-init.yaml. Nei passaggi seguenti usate il nome reale trovato con il comando precedente.

Eseguite il backup del file esistente (sostituite 50-cloud-init.yaml con il nome effettivo del file):

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

Aprite il file:

sudo nano /etc/netplan/50-cloud-init.yaml

Aggiungete i blocchi addresses e routes sotto l'interfaccia. Un file completo con IPv4 (già configurato) e il nuovo indirizzo IPv6 statico ha questo aspetto:

network: version: 2 ethernets: eth0: addresses: - 203.0.113.10/24 # existing IPv4 address - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 203.0.113.1 # existing IPv4 gateway - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 8.8.8.8 - 2001:4860:4860::8888 # Google public DNS over IPv6

Se il server ottiene l'indirizzo IPv4 tramite DHCP (situazione comune in molti VPS appena creati), il file sarà leggermente diverso. Non copiate ciecamente la configurazione IPv4 statica riportata sopra, altrimenti perderete la connessione IPv4 funzionante. Ecco un esempio con dhcp4: true:

network: version: 2 ethernets: eth0: dhcp4: true addresses: - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 2001:4860:4860::8888 # Google public DNS over IPv6

Warning

Netplan usa YAML. L'indentazione è significativa: usate spazi, mai tabulazioni. Una sola riga disallineata può far fallire la configurazione senza alcun avviso o impedirne l'applicazione.

Testate la configurazione prima di applicarla:

sudo netplan try

netplan try applica la configurazione con un timer di 120 secondi. Se non la confermate, viene ripristinata automaticamente, quindi è sicuro eseguirlo via SSH. Se l'output è corretto, confermate:

# Press Enter when prompted, or type: sudo netplan apply

Tip

Quando lavorate via SSH usate sempre netplan try anziché netplan apply. Se la nuova configurazione interrompe la connessione, il ripristino automatico vi restituirà l'accesso.

3.2 Debian (/etc/network/interfaces)

Su Debian, il modo classico per aggiungere IPv6 a /etc/network/interfaces è inserire un secondo blocco iface per la stessa interfaccia usando la famiglia inet6.

Eseguite prima un backup:

sudo cp /etc/network/interfaces /etc/network/interfaces.bak

Aprite il file:

sudo nano /etc/network/interfaces

Il blocco IPv4 esistente sarà simile a questo:

auto eth0 iface eth0 inet static address 203.0.113.10 netmask 255.255.255.0 gateway 203.0.113.1

Aggiungete il blocco IPv6 subito sotto:

iface eth0 inet6 static address 2001:db8:1000::10 netmask 64 gateway 2001:db8:1000::1

Info

Non aggiungete una seconda riga auto eth0. L'unica direttiva auto attiva sia il blocco inet sia il blocco inet6 all'inizializzazione dell'interfaccia.

Applicate la nuova configurazione senza riavviare completamente il sistema:

sudo ifdown eth0 && sudo ifup eth0

Warning

Eseguire ifdown eth0 via SSH interrompe la connessione. Eseguite il comando dalla console seriale/web del provider oppure usate ifreload -a. Tenete presente che ifreload -a richiede il pacchetto ifupdown2, non incluso nell'installazione base di Debian. Installatelo con sudo apt install ifupdown2 per ricaricare le interfacce senza interrompere le sessioni attive.

3.3 AlmaLinux / RHEL (nmcli)

Su AlmaLinux e RHEL 8/9 NetworkManager è il gestore predefinito. Usate nmcli per aggiungere l'indirizzo IPv6 senza modificare manualmente i file.

Individuate il nome della connessione:

nmcli connection show

Output previsto:

NAME UUID TYPE DEVICE eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0

Aggiungete l'indirizzo IPv6 statico:

sudo nmcli connection modify eth0 \ ipv6.method manual \ ipv6.addresses "2001:db8:1000::10/64" \ ipv6.gateway "2001:db8:1000::1"

Applicate la configurazione senza interrompere la connessione SSH:

sudo nmcli device reapply eth0

Passaggio 4: Testare la connettività IPv6

Dopo aver applicato la configurazione, verificate che l'indirizzo sia assegnato e che l'instradamento funzioni.

4.1 Verificare che l'indirizzo sia assegnato

ip -6 addr show eth0

Output previsto:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 2001:db8:1000::10/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever

Dovreste vedere il vostro Global Unicast Address con scope global. Sarà presente anche l'indirizzo link-local (scope link).

4.2 Verificare il gateway predefinito

ip -6 route show

Output previsto:

2001:db8:1000::/64 dev eth0 proto kernel metric 100 default via 2001:db8:1000::1 dev eth0 proto static metric 100

La riga default via conferma che il gateway IPv6 predefinito è configurato correttamente.

4.3 Testare la connettività IPv6

Per testare la connettività IPv6 verso un host pubblico noto, usate ping6 (oppure ping -6 sui sistemi più recenti):

ping6 -c 4 2606:4700:4700::1111

Output previsto:

PING 2606:4700:4700::1111(2606:4700:4700::1111) 56 data bytes 64 bytes from 2606:4700:4700::1111: icmp_seq=1 ttl=57 time=1.23 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=2 ttl=57 time=1.19 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=3 ttl=57 time=1.21 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=4 ttl=57 time=1.20 ms

Se ping6 fallisce ma l'indirizzo è assegnato, il problema è quasi sempre uno di questi tre: il gateway predefinito è errato, il firewall del provider blocca ICMPv6 oppure l'assegnazione IPv6 non è stata attivata dal provider.

Tip

Potete verificare la raggiungibilità anche dall'esterno con uno strumento pubblico come https://ipv6-test.com. Inserite l'indirizzo IPv6 del server ed eseguite un controllo di raggiungibilità.

4.4 Verificare la risoluzione DNS tramite IPv6

Innanzitutto, assicuratevi che l'utilità dig sia installata.

Su AlmaLinux 10, dig non è incluso nell'installazione base:

sudo dnf install -y bind-utils

Sulle immagini Debian minimali il pacchetto potrebbe mancare:

sudo apt install -y dnsutils

Verificate che il server sia in grado di risolvere i nomi host usando il server DNS IPv6:

dig AAAA google.com @2001:4860:4860::8888

Una risposta corretta include una ANSWER SECTION con uno o più record AAAA.

Passaggio 5: Adattare il firewall a IPv6

Se sul server è in esecuzione un firewall software, è necessario consentire esplicitamente il traffico IPv6. Per impostazione predefinita, molte configurazioni del firewall coprono solo IPv4.

Info

In INTROSERV tutte le porte sono aperte per impostazione predefinita a livello di rete per VPS e server dedicati, con poche eccezioni (le porte e-mail 25, 465, 587, 2525 e la porta LDAP 389 sono filtrate per proteggere la reputazione degli IP). Ciò significa che non è necessario aprire porte in un firewall lato provider per il normale traffico web o per SSH. Resta invece vostra responsabilità il firewall a livello di sistema operativo sul server. Per i dettagli consultate la guida Sicurezza di rete e filtraggio delle porte.

Ubuntu/Debian (UFW)

Su Debian, UFW non è incluso nell'installazione base. Se necessario, installatelo prima:

sudo apt install -y ufw

UFW applica le regole sia a IPv4 sia a IPv6 quando nella sua configurazione è impostato IPV6=yes. Verificate:

grep IPV6 /etc/default/ufw

Output previsto:

IPV6=yes

Se compare IPV6=no, aprite il file e modificatelo:

sudo nano /etc/default/ufw

Quindi ricaricate UFW:

sudo ufw reload

Info

Se UFW non è ancora stato attivato, ufw reload restituirà Firewall not enabled. Non è un problema: le regole verranno applicate automaticamente quando abiliterete il firewall con sudo ufw enable.

Le regole ufw allow già presenti (SSH, HTTP, HTTPS) saranno ora valide anche per IPv6.

AlmaLinux / RHEL (firewalld)

firewalld gestisce IPv6 in modo nativo tramite il proprio modello a zone. Se l'interfaccia si trova nella zona corretta, il traffico IPv6 viene gestito automaticamente. Verificate:

sudo firewall-cmd --get-active-zones

Per servizi come SSH e HTTPS:

sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload

Info

Se un servizio è già consentito nella zona, firewall-cmd mostrerà Warning: ALREADY_ENABLED. È normale e non è un errore. Su AlmaLinux, ssh e dhcpv6-client sono consentiti per impostazione predefinita nella zona public.

Info

ICMPv6 è indispensabile per il corretto funzionamento di IPv6. Gestisce il neighbor discovery, il path MTU discovery e i router advertisement, ovvero gli equivalenti IPv6 di ARP. Non bloccate completamente ICMPv6. La maggior parte degli strumenti firewall lo consente per impostazione predefinita; se scrivete regole nftables o ip6tables manualmente, consentite esplicitamente icmpv6.

Rollback

Ubuntu (Netplan)

Ripristinate il backup e applicatelo (sostituite 50-cloud-init.yaml con il nome effettivo del file):

sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml sudo netplan apply

Debian (/etc/network/interfaces)

Ripristinate il backup:

sudo cp /etc/network/interfaces.bak /etc/network/interfaces sudo ifdown eth0 && sudo ifup eth0

AlmaLinux (nmcli)

Rimuovete le impostazioni IPv6 dalla connessione:

sudo nmcli connection modify eth0 ipv6.method auto sudo nmcli connection modify eth0 ipv6.addresses "" ipv6.gateway "" sudo nmcli connection modify eth0 ipv6.method ignore sudo nmcli device reapply eth0

Info

NetworkManager non consente di impostare ipv6.method ignore finché esistono ipv6.addresses statici. Impostare prima il metodo su auto consente di cancellare correttamente gli indirizzi.

Disabilitare IPv6 a livello di sistema (emergenza)

Se dovete disattivare completamente IPv6 su tutte le interfacce:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Per rendere la modifica persistente, aggiungete quanto segue a /etc/sysctl.d/99-disable-ipv6.conf:

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1

Quindi eseguite sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf.

Risoluzione dei problemi

Ping6 fallisce subito con «Network unreachable»

Il gateway predefinito (IPv6) manca o è errato. Eseguite ip -6 route show e verificate che esista la voce default via e che corrisponda al gateway indicato nel pannello del provider.

L'indirizzo compare, ma scope è solo link e non global

L'indirizzo è stato aggiunto all'interfaccia sbagliata oppure il file di configurazione contiene un errore di battitura nell'indirizzo o nel prefisso. Rileggete con attenzione l'assegnazione del provider.

Netplan apply restituisce un errore di parsing

L'indentazione YAML non è corretta. Eseguite cat -A /etc/netplan/50-cloud-init.yaml (o con il nome effettivo del file) per rivelare i caratteri di tabulazione (mostrati come ^I) e sostituiteli con spazi.

SSH si interrompe dopo ifdown su Debian

Usate la console web del provider o l'accesso VNC/IPMI per ripristinare l'accesso. Ripristinate /etc/network/interfaces dal backup ed eseguite ifup eth0.

UFW continua a bloccare IPv6 dopo aver impostato IPV6=yes

Le regole aggiunte prima della modifica sono state salvate solo per IPv4. Eseguite sudo ufw reset e aggiungete di nuovo le regole: da quel momento varranno per entrambe le famiglie.

Warning

Il comando sudo ufw reset è distruttivo: ripristina tutte le regole del firewall ai valori predefiniti. Prima di eseguirlo, assicuratevi di sapere quali porte consentire di nuovo (come SSH), per non bloccare il vostro accesso.

Conclusione

Ecco fatto. Il server INTROSERV dispone ora di un indirizzo IPv6 funzionante, di un gateway predefinito configurato correttamente e di un firewall che copre entrambe le famiglie di protocolli. Prossimi passi: richiedete un record PTR tramite il Client Area di INTROSERV e aggiornate i virtual host di Nginx o Apache affinché ascoltino sul nuovo indirizzo IPv6.

Versione del documento: 1.0
Ultimo aggiornamento: maggio 2026
Responsabile: Team di documentazione tecnica

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA