¿Cómo deshabilitar IPv6 de forma permanente?

54

¿Cómo podemos deshabilitar todo el sistema IPv6 mediante comandos de terminal?

He leído editando /etc/modprobe.d/aliases y reemplazando:

alias net-pf-10 ipv6

con:

alias net-pf-10 off
alias ipv6 off

¿Es seguro aplicarlo y deshabilita permanentemente ipv6 en todos los reinicios?

Tinfoilhats
fuente
55
¿Por qué quieres deshabilitar IPv6 de forma permanente?
Anderson Green
2
Absolutamente (bueno, en realidad puedo encontrar uno, en MS Windows) no hay razón para desactivar IPv6. ¿Por qué querrías hacer eso?
Anders
17
No hay absolutamente ninguna razón para activar ipv6 en realidad. Todo sigue siendo ipv4 y no ofrece ventajas para alguien que administra una red pequeña y que tiene un tiempo limitado. Es un vector más para el ataque y la posible configuración incorrecta y es prudente deshabilitarlo. Probablemente no sea lo que cualquier ingeniero de IETF quiera escuchar, pero es su problema, no el mío. Lo habilitaré cuando tenga una buena razón, hasta entonces, solo otro vector de ataque que tengo que manejar.
Jonathan S. Fisher
8
Deshabilitar IPv6 no te hace inmune a los ataques de IPv6. Es mucho mejor tenerlo habilitado, tratarlo y aprender de él, esa es la única forma de hacer que su entorno sea un poco más seguro. En cambio, es mejor que todos aprendan "Cómo deshabilitar IPv4 permanentemente". IPv6 es mucho más fácil que IPv4, para empezar, ya no hay NAT, por lo tanto, una cosa menos para administrar ... Internet está creciendo muy rápido, en unos años, la red IPv6 será más grande que IPv4, entonces, con IPv4, estarás fuera de Internet real. Adelante hombre! Actualiza tu IP !! El cambio es algo bueno.
ThiagoCMC
77
@ JonathanS.Fisher y otros: estos comentarios no son útiles. El hecho de que no conozca una razón para deshabilitar IPv6, no significa que no haya una. Un caso importante es para los servicios VPN que no admiten IPv6. Si no lo deshabilita, perderá su dirección IPv6.
Scone

Respuestas:

75

Desactivé con éxito IPv6 una vez que puse las siguientes líneas en /etc/sysctl.conf:

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

también ejecuta este comando para cargar cambios

sudo sysctl -p
Eric Carvalho
fuente
Uubuntu en VMware no puede ser ping, y cierro el ipv6 en Ubuntu, ahora está bien.
Honghe.Wu
12
Después de agregar estas líneas a sysctl.conf, ejecute sudo sysctl -po reinicie para que los cambios surtan efecto.
Rajat Gupta
44
Necesito hacer esto solo en la red inalámbrica como una solución alternativa para poder conectarme nuevamente. Aquí se explica cómo hacerlo solo para un adaptador:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc
1
Esto no funciona en Ubuntu 17.10. Vea el comentario de NullNoname a continuación para la solución de grub.
Lucas
1
Tampoco funciona en Ubuntu 16.04. El método Grub funciona.
Penghe Geng
54

Si su PC no carga /etc/sysctl.conf en el momento del arranque (que es el caso para mí), es necesario deshabilitar IPv6 de grub. El kernel de Linux tiene una opción de arranque llamada "ipv6.disable = 1" que deshabilita el inicio de IPv6.

Para editar las opciones de arranque, edite "/ etc / default / grub" con cualquier editor de texto como usuario root:

sudo nano /etc/default/grub

Busque la línea que contiene "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Agregue "ipv6.disable = 1" a la opción de arranque, luego guarde su archivo grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Finalmente, actualice grub:

sudo update-grub
NuloNoname
fuente
66
+1 esto funciona y deshabilita IPv6 por completo, por lo que no hay rastros de /proc/sys/net/ipv6/izquierda que puedan producir problemas como X11 forwarding request failedporque sshdintenta vincularse a una interfaz IPv6 no configurada. Tenga en cuenta que, de manera similar, puede deshacerse de IPv4 de esta manera en máquinas virtuales IPv6 puras. Gracias.
Tino
7

La respuesta de Carvalho, incluido el comentario sobre tener que correr, sudo sysctl -Pme ha ayudado más.

Sin embargo, en mi caso al menos:

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

y parece que la segunda línea fue necesaria.

Tal vez esto tenga que ver con el hecho de que estoy usando el TP-Link Archer T2U, para lo cual tuve que construir un controlador desde la fuente.
Mi suposición es que, como resultado, <mydevice>no cuenta como uno de " all".
En pocas palabras, si ha agregado un controlador de red (personalizado) de forma personalizada, es net.ipv6.conf.all.disable_ipv6 = 1posible que no sea suficiente para deshabilitar la red IPv6.

Sin embargo, tengo que admitir que no probé la línea
net.ipv6.conf.default.disable_ipv6 = 1

polinomio_donut
fuente
1
Vota por mencionar que a veces se requiere deshabilitar diferentes dispositivos.
Scone
La falta de la defaultlínea es probablemente el problema aquí. Si el conductor no se ha cargado todavía en el punto en el proceso de arranque cuando se ejecutó la sysctl, entonces no se incluyó en all- pero la configuración predeterminada habría significado que habría conseguido la configuración más adelante, cuando se carga.
Charles Duffy
1
Tuve la defaultentrada y tuve que configurar el dispositivo específico para deshabilitarlo con éxito.
Alfonso Nishikawa
7

Aquí le mostramos cómo verificar si ipv6 está habilitado en su computadora

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

Si tú ves

Running kernel is IPv6 ready

Está habilitado.

Si no ve salida, no lo es.

Para deshabilitar ipv6 si las otras respuestas en esta página no funcionan para usted, haga una lista negra de ipv6 todo junto. Para hacer esto, use el siguiente comando:

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

Además, esto podría ayudar también:

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

Reinicie para que los cambios surtan efecto. Para verificar si está habilitado después del inicio, ejecute este comando nuevamente:

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

No debería haber salida.

Haga clic aquí para obtener información sobre cómo deshabilitar IPV6 en el arranque.

mchid
fuente
Esta respuesta supone que la ipv6función de kernels es un módulo de kernel (que se usa blacklist.localpara evitar que se cargue). Hay un caso en el que ipv6 se compila en el kernel (no en un módulo) en cuyo caso es necesario arrancar el kernel con ipv6.disable=1el parámetro de arranque (para hacerlo, uno: (1) sudo gedit /etc/default/grub(2) buscaría la línea GRUB_CMDLINE_LINUX_DEFAULT=<args>y (3) añadir ipv6.disable=1a los parámetros de arranque)
humanidad y
@humanityANDpeace Puede que le interese esta respuesta más completa: unix.stackexchange.com/a/190189
mchid
6

Si está utilizando una versión moderna (estoy en 16.04 LTS) de Ubuntu, entonces puede usar esta solución ordenada:

Crear que /etc/sysctl.d/60-ipv6-disable.confcontiene el siguiente texto:

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

correr service procps start

usuario10550
fuente
2
esta es la forma más limpia de hacerlo, no entiendo por qué se votó negativamente. también funciona en fedora / centos / redhat. tiene la ventaja de que no altera los archivos predeterminados del sistema (como directamente sysctl.conf como se sugiere en la respuesta más popular)
Costin Gușă
@ Costin No voté en contra, pero esto no siempre funcionará. A veces tiene que poner el nombre específico del dispositivo (por ejemplo, en el caso de instalaciones de controladores personalizados). Ver Alfonso Nishika fue comentar mi respuesta.
polynomial_donut
Estoy agradecido de haber seguido este enfoque, porque terminé perdiendo mi conexión en un servidor remoto ( necesitaba IPv6), y fue muy fácil dirigir a mi asistente en el sitio para eliminar un archivo y reiniciarlo.
Roger Dueck
Tuve que ejecutar en service procps restartlugar de Ubuntu 18.04
iPherian