Come disabilitare la configurazione automatica su IPv6 in Linux?


23

Come posso disabilitare in modo permanente la configurazione automatica di IPv6 in Linux? Quando provo a eliminare manualmente un indirizzo da un'interfaccia con:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Riapparirà pochi secondi dopo, voglio che scompaia definitivamente, ma senza disabilitare IPv6 tutti insieme.

Risposte:


22

La configurazione automatica può essere disabilitata temporaneamente per eth1 con:

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

o per tutte le interfacce con:

sudo sysctl -w net.ipv6.conf.all.autoconf=0
sudo sysctl -w net.ipv6.conf.all.accept_ra=0

La riattivazione funziona utilizzando 1 anziché 0 nella chiamata.

La disabilitazione permanente può essere effettuata con una voce a /etc/sysctl.conf. Su Debian Etch (probabilmente anche su una versione più recente), senza impostare il accept_ra, il sistema si autoconfigura usando l'indirizzo locale Link ( fe80..)

Come indicato di seguito da Gart, la configurazione automatica dell'indirizzo e il rilevamento router saranno disabilitati se l'host stesso è un router e accept_ranon lo è 2, ad es

net.ipv6.conf.<iface|all|default>.forwarding=1

e

net.ipv6.conf.<iface|all|default>.accept_ra=0 oppure net.ipv6.conf.<iface|all|default>.accept_ra=1.

dov'è la ifacetua interfaccia


3
Inoltre, la configurazione automatica dell'indirizzo e il rilevamento router saranno disabilitati se l'host stesso è un router, ovvero net.ipv6.conf.all.forwarding=1è impostato.
Gart,

4

net.ipv6.conf.all.accept_ra = 0 sopra non dovrebbe essere fatto, poiché le RA sono necessarie per l'indicazione di on-link e off-link per il prefisso (secondo RFC5942), così come la configurazione automatica di un numero di altre parametri come MTU, timeout di Neighbor Discovery ecc.

Se si desidera disabilitare l'autoconfigurazione, impostare il sistema autoconf come sopra oppure disattivare A (bit di autoconfigurazione) nell'opzione Informazioni prefisso (PIO) in RA.


3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

Questo non ha funzionato per me su Debian Wheezy. Dopo aver esaminato /etc/sysctl.conf ho dovuto usare

sudo sysctl -w net.ipv6.conf.default.autoconf=0

3

La sysctlsoluzione non ha funzionato per noi su Ubuntu 18.04 Bionic. Lo abbiamo risolto con:

Modifica /etc/netplan/01-netcfg.yaml, configura:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Potrebbe essere necessario utilizzare il nome dell'interfaccia anziché eth0. Dopo aver salvato il file, eseguire:

netplan apply o reboot

Se hai già ricevuto un IP IPv6 dall'autoconfigurazione e desideri rimuoverlo senza riavviare, puoi eseguire:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Naturalmente è necessario sostituire l'IP e il dispositivo in questo comando.


questo mi ha appena rovinato la testa per alcuni mesi: D
anthonysomerset,

2
Di solito scrivo solo Google finché non lo trovo.
Jeroen Vermeulen - MageHost,

1
Questo ha funzionato quando l'ho provato, ma il problema è disattivare-ra è abbastanza pericoloso, come menzionato da Mark S - sembra funzionare ma in seguito potresti scoprire che ti mancano i pacchetti perché colpiscono un punto di frammentazione o un router di failover viene usato. Inoltre rompe i ping. Il motivo per cui stavo provando a farlo era di abbinare in modo affidabile il mio record SPF nella posta in uscita, ma poi ho capito che avrei dovuto usare una maschera di rete nel record perché in IPv6 un intervallo di indirizzi appartiene effettivamente a una macchina, non a un singolo indirizzo .
Phil McKerracher,

2

Il problema con Ubuntu 18 e ipv6 è che systemd-networkd controlla i parametri del kernel, quindi anche se si potrebbe disabilitare ipv6 con sysctl, networkd sarà più che felice di accenderli per te, se la configurazione non indica diversamente.

La mia soluzione per disabilitare ipv6 è configurare link-local in netplan su uno scalare vuoto (purché non si disponga di IP ipv4 link-local)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

La configurazione compilerà la configurazione per networkd che verrà pubblicata in /run/systemd/network/10-netplan-eth0.network e che convincerà networkd a non installare ipv6 per eth0

Se si desidera disabilitare ipv6 anche sul loopback, si ottiene facilmente impostando il parametro del kernel net.ipv6.conf.all.disable_ipv6 su 1. networkd non sembra controllare il loopback.

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

Mi piace molto la tua soluzione molto pulita. Poiché non utilizziamo gli indirizzi link-local aggiungendo lo scalare vuoto la soluzione perfetta. Dopodiché, abbiamo dovuto riavviare il server poiché netplan applicare manteneva gli indirizzi IPv6 già assegnati su entrambe le nostre interfacce Ethernet. Ma dopo il riavvio, tutto funziona esattamente come hai detto. Non penso che ci sia un motivo per preoccuparsi di disabilitare IPv6 sull'interfaccia di loopback, quindi ho appena saltato la parte sysctl. Grazie!
Zoltan,
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.