Come disabilitare IPv6 in modo permanente?


54

Come possiamo disabilitare l'intero sistema IPv6 tramite i comandi del terminale?

Ho letto modificando /etc/modprobe.d/aliases e sostituendo:

alias net-pf-10 ipv6

con:

alias net-pf-10 off
alias ipv6 off

È sicuro da applicare e disabilita permanentemente ipv6 durante i riavvii?


5
Perché vuoi disabilitare IPv6 in modo permanente?
Anderson Green,

2
Non ci sono assolutamente (beh, in realtà posso trovarne uno, su MS Windows) nessun motivo per disattivare IPv6. Perché vorresti farlo?
Anders,

17
Non ci sono assolutamente ragioni per accendere ipv6 in realtà. Tutto è ancora ipv4 e non offre vantaggi a chi gestisce una piccola rete e ha un tempo limitato. È un altro vettore per attacchi e potenziali errori di configurazione ed è prudente disabilitarlo. Probabilmente non quello che qualsiasi ingegnere IETF vuole sentire, ma il loro problema non è mio. Lo abiliterò quando ho una buona ragione, fino ad allora, solo un altro vettore di attacco che devo gestire.
Jonathan S. Fisher,

8
Disabilitare IPv6 non ti rende immune agli attacchi IPv6. È molto meglio averlo abilitato, affrontarlo e imparare da esso, questo è l'unico modo per rendere il tuo ambiente un po 'più sicuro. È meglio per tutti imparare "Come disabilitare IPv4 in modo permanente", invece. IPv6 è molto più semplice di IPv4, per cominciare, non c'è più NAT, quindi, una cosa in meno da gestire ... Internet sta crescendo molto velocemente, in pochi anni, la rete IPv6 sarà più grande di IPv4, quindi, con IPv4, uscirai dalla vera Internet. Vai amico! Aggiorna il tuo IP !! Il cambiamento è una buona cosa.
ThiagoCMC,

7
@ JonathanS.Fisher e altri - Questi commenti non sono utili. Solo perché potresti non essere a conoscenza di un motivo per disabilitare IPv6, non significa che non ce ne sia uno. Un caso importante riguarda i servizi VPN che non supportano IPv6. Se non lo disabiliti, perderai il tuo indirizzo IPv6.
Scone

Risposte:


75

Ho disabilitato correttamente IPv6 dopo aver inserito le seguenti righe /etc/sysctl.conf:

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

eseguire anche questo comando per caricare le modifiche

sudo sysctl -p

Uubuntu su VMware non può essere ping e chiudo l'ipv6 su Ubuntu, ora è ok.
Honghe.Wu

12
Dopo aver aggiunto queste righe a sysctl.conf, esegui sudo sysctl -po riavvia per rendere effettive le modifiche.
Rajat Gupta,

4
Devo farlo solo su wireless come soluzione alternativa ai bug in modo da poter riconnettermi. Ecco come fare per un solo adattatore:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc

1
Questo non funziona su Ubuntu 17.10. Vedere il commento NullNoname di seguito per la correzione grub.
Luca

1
Non funziona anche su Ubuntu 16.04. Il metodo Grub funziona.
Penghe Geng,

54

Se il tuo PC non carica /etc/sysctl.conf all'avvio (che è il mio caso), è necessario disabilitare IPv6 da grub. Il kernel di Linux ha un'opzione di avvio denominata "ipv6.disable = 1" che disabilita IPv6 all'avvio.

Per modificare le opzioni di avvio, modifica "/ etc / default / grub" con qualsiasi editor di testo come utente root:

sudo nano /etc/default/grub

Trova la riga che contiene "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Aggiungi "ipv6.disable = 1" all'opzione di avvio, quindi salva il tuo file grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Infine, aggiorna grub:

sudo update-grub

6
+1 funziona e disabilita IPv6 completamente, quindi non ci sono tracce di /proc/sys/net/ipv6/sinistra, che possono produrre problemi come X11 forwarding request failed, perché sshdtenta di associarsi ad un'interfaccia non configurato IPv6. Allo stesso modo, puoi sbarazzarti di IPv4 in questo modo su macchine virtuali IPv6 pure. Grazie.
Tino,

7

La risposta di Carvalho, incluso il commento sulla necessità di correre, sudo sysctl -Pmi ha aiutato di più.

Tuttavia, nel mio caso almeno:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.<mydevice>.disable_ipv6 = 1

e sembra che la seconda riga fosse necessaria.

Forse questo ha a che fare con il fatto che sto usando TP-Link Archer T2U, per il quale ho dovuto costruire un driver personalizzato dalla fonte.
La mia ipotesi è che, di conseguenza, <mydevice>non conta come " all".
Quindi, in breve, se è stato aggiunto un driver di rete (personalizzato), net.ipv6.conf.all.disable_ipv6 = 1potrebbe non essere sufficiente disabilitare la rete IPv6.

Devo ammettere, tuttavia, che non ho provato la linea
net.ipv6.conf.default.disable_ipv6 = 1


1
È importante ricordare che a volte è necessario disabilitare diversi dispositivi.
Scone

La mancanza della defaultlinea è probabilmente il problema qui. Se il tuo driver non fosse stato ancora caricato nel punto del processo di avvio quando il sysctl è stato eseguito, allora non è stato incluso in all- ma l'impostazione di default avrebbe significato che avrebbe ottenuto l'impostazione in seguito, quando è stata caricata.
Charles Duffy,

1
Ho avuto la defaultvoce e ho dovuto configurare il dispositivo specifico per disabilitarlo con successo.
Alfonso Nishikawa,

7

Ecco come verificare se ipv6 è abilitato sul tuo computer

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Se tu vedi

Running kernel is IPv6 ready

è abilitato.

Se non vedi alcun output, non lo è.

Per disabilitare ipv6 se le altre risposte in questa pagina non funzionano per te, inserire nella lista nera ipv6 tutti insieme. Per fare ciò, utilizzare il seguente comando:

echo 'blacklist ipv6' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

Inoltre, questo potrebbe aiutare anche:

echo 'install ipv6 /bin/true' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null

Riavviare per rendere effettive le modifiche. Per verificare se è abilitato dopo l'avvio, eseguire nuovamente questo comando:

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Non ci dovrebbero essere output.

Fai clic qui per informazioni su come disabilitare IPV6 all'avvio.


Questa risposta presuppone che la ipv6funzione kernel sia un modulo kernel (usando blacklist.localper impedirne il caricamento). C'è un caso in cui ipv6 è compilato nel kernel (non un modulo) nel qual caso è necessario avviare il kernel con ipv6.disable=1il paremeter di avvio (per fare ciò si dovrebbe: (1) sudo gedit /etc/default/grub(2) cercare la linea GRUB_CMDLINE_LINUX_DEFAULT=<args>e (3) aggiungere ipv6.disable=1ai parametri di avvio)
umanità e

@humanityANDpeace Potresti essere interessato a questa risposta più completa: unix.stackexchange.com/a/190189
mchid

6

Se stai usando una versione moderna (sono su 16.04 LTS) di Ubuntu, puoi usare questa soluzione ordinata:

Crea /etc/sysctl.d/60-ipv6-disable.confcontenente il seguente testo:

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

Correre service procps start


2
questo è il modo più pulito per farlo - non capisco perché è stato sottoposto a downgrade. funziona anche su fedora / centos / redhat. ha il vantaggio di non alterare i file predefiniti del sistema (come direttamente sysctl.conf come suggerito nella risposta più popolare)
Costin Gușă

@Costin Non ho votato in negativo, ma questo non funzionerà sempre. A volte è necessario inserire il nome specifico del dispositivo (ad es. In caso di installazioni di driver personalizzate). Vedi il commento di Alfonso Nishikawas sulla mia risposta.
polynomial_donut,

Sono grato di aver seguito questo approccio, perché ho finito per perdere la mia connessione su un server remoto (aveva bisogno di IPv6), ed è stato molto facile indirizzare il mio assistente sul posto per rimuovere un file e riavviare.
Roger Dueck,

ho dovuto correre service procps restartinvece su Ubuntu 18.04
iPherian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.