Come preferire IPv4 su IPv6 in Ubuntu, CentOS e Windows

Spesso è necessario o consigliabile preferire l’instradamento su IPv4 che su IPv6 dato che il routing tuttora per IPv4 è migliore e si risparmia un po’ sulle risorse. Alcuni server per un motivo o l’altro non hanno ancora abilitato l’IPv6 e quindi la risoluzione DNS va comunque configurata in modo apposito.

Preferire IPv4 su IPv6 o vice versa?

Per Ubuntu e Windows senza questa modifica una richiesta DNS richiederà prima il record IPv6 AAAA e solo poi ove necesssario il record IPv4 A.

Ubuntu:

L’impostazione si modifica nel file /etc/gai.conf che riguarda la configurazione dei blocchi di priorità. Trovate questa riga:

#precedence :: ffff: 0: 0/96 100

e togliete il cancelleto # ad inizio riga per rimuovere il commento attivando la direttiva in modo che di seguito sia così:

precedence ::ffff:0:0/96 100

CentOS/RedHat Linux/Oracle UEK/altri:

È necessario modificare il file /etc/gai.conf (spesso vuoto) come segue:

label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
precedence ::1/128 50
precedence ::/0 40
precedence 2002::/16 30
precedence ::/96 20
precedence ::ffff:0:0/96 100

Windows Server:

Su piattaforma server Windows è necessario modificare o creare la seguente chiave nel registro con RegEdit:

“HKLM\System\CurrentControlSet\services\Tcpip6\Parameters\DisabledComponents”
-> valore DWORD impostato a 0x20

e di seguito riavviare il server.

Da PowerShell è possibile eseguire la seguente query:
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents

Questi sono i passi da seguire per lasciare abilitato IPv6, ma preferire IPv4 ove disponibile.