¿Cómo deshabilitar la configuración automática en IPv6 en Linux?

23

¿Cómo puedo desactivar permanentemente la configuración automática de IPv6 en Linux? Cuando intento eliminar manualmente una dirección de una interfaz con:

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

Volverá a aparecer unos segundos más tarde, quiero que desaparezca de forma permanente, pero sin desactivar IPv6 por completo.

Grumbel
fuente

Respuestas:

22

La configuración automática se puede desactivar temporalmente para eth1 con:

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

o para todas las interfaces con:

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

La recreación funciona utilizando 1 en lugar de 0 en la llamada.

La desactivación permanente se puede hacer con una entrada en /etc/sysctl.conf. En Debian Etch (probablemente también en las más recientes), sin configurar accept_ra, el sistema se autoconfigurará utilizando la dirección local de Enlace ( fe80..)

Como Gart menciona a continuación, la configuración automática de direcciones y el descubrimiento de enrutadores se deshabilitarán si el host en sí es un enrutador y accept_rano lo es 2, es decir

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

y

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

donde ifaceesta tu interfaz

Grumbel
fuente
3
Además, la configuración automática de la dirección y el descubrimiento del enrutador se deshabilitarán si el host en sí es un enrutador, net.ipv6.conf.all.forwarding=1es decir, está configurado.
Gart
4

net.ipv6.conf.all.accept_ra = 0 anterior no debe hacerse, ya que los RA son necesarios para indicar el enlace y el enlace fuera de enlace para el prefijo (según RFC5942), así como la configuración automatizada de varios otros parámetros, como MTU, Vecino Discovery, tiempos de espera, etc.

Si desea deshabilitar la configuración automática, desactive el sistema de configuración automática como se indicó anteriormente o apague el A (bit de configuración automática) en la Opción de información de prefijo (PIO) en la RA.

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

Esto no funcionó para mí en Debian Wheezy. Después de examinar /etc/sysctl.conf, necesitaba usar

sudo sysctl -w net.ipv6.conf.default.autoconf=0
Nick B.
fuente
3

La sysctlsolución no funcionó para nosotros en Ubuntu 18.04 Bionic. Lo resolvimos por:

Edición /etc/netplan/01-netcfg.yaml, configurar:

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

Es posible que deba usar el nombre de su interfaz en lugar de eth0. Después de guardar el archivo, ejecute:

netplan apply o reboot

Si ya ha recibido una IP IPv6 de la configuración automática y desea eliminarla sin reiniciar, puede ejecutar:

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

Por supuesto, debe reemplazar la IP y el dispositivo en este comando.

Jeroen Vermeulen - MageHost
fuente
Esto acaba de hacer que mi día me rascara la cabeza durante unos meses: D
anthonysomerset
2
Por lo general, solo rasco Google hasta que lo encuentro.
Jeroen Vermeulen - MageHost
1
Esto funcionó cuando lo probé, pero el problema es que la desactivación de aceptar es bastante peligrosa, como lo menciona Mark S: parece funcionar, pero luego puede encontrar que le faltan paquetes porque llegan a un punto de fragmentación o un enrutador de conmutación por error es usado También rompe pings. La razón por la que estaba tratando de hacer esto era hacer coincidir de manera confiable mi registro SPF en el correo saliente, pero luego me di cuenta de que debería haber estado usando una máscara de red en el registro porque en IPv6 un rango de direcciones pertenece efectivamente a una máquina, no a una sola dirección .
Phil McKerracher
2

El problema con Ubuntu 18 e ipv6 es que systemd-networkd controla los parámetros del kernel, por lo que aunque uno podría deshabilitar ipv6 con sysctl, networkd estará más que feliz de encenderlos, si la configuración no indica lo contrario.

Mi solución para deshabilitar ipv6 es configurar link-local en netplan a un escalar vacío (siempre que no tenga IP ipv4 link-local)

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

La configuración compilará la configuración para networkd que se publicará en /run/systemd/network/10-netplan-eth0.network y eso convencerá a networkd de no instalar ipv6 para eth0

Si desea deshabilitar ipv6 también en el bucle invertido, puede hacerlo fácilmente configurando el parámetro del núcleo net.ipv6.conf.all.disable_ipv6 en 1. networkd no parece controlar el bucle invertido.

sysctl -w net.ipv6.conf.all.disable_ipv6=1
Daniel
fuente
Realmente me gusta tu solución muy limpia. Como no usamos direcciones locales de enlace, agregar el escalar vacío es la solución perfecta. Después de esto, tuvimos que reiniciar el servidor ya que netplan apply mantuvo las direcciones IPv6 ya asignadas en nuestras dos interfaces de ethernet. Pero después de reiniciar, todo funciona tal como dijiste. No creo que haya una razón para molestarse con la desactivación de IPv6 en la interfaz de bucle invertido, así que me salté la parte sysctl. ¡Gracias!
Zoltan