IPv6 en Linux: a veces conviene desactivarlo

Publicado por Diego Córdoba en

ipv6 - ipv6 en linuxComo todos sabrán, IPv6 es la más moderna versión del protocolo IP. En la actualidad estamos acostumbrados a trabajar con direcciones IP de 32b, estas direcciones corresponden con el esquema de IPv4, el protocolo de capa 3 (L3) que solemos utilizar.dualstack ipv6 en linux Sin embargo, los sistemas operativos actuales, Linux incluido, suelen venir con dual stack, es decir, soportan tanto la pila de protocolos IPv4 como IPv6, de modo que si el sistema se conecta a una infraestructura IPv4 funciona bien, y si lo hace a IPv6 también. Hoy veremos por qué a veces es mejor desactivar el soporte ipv6 en Linux.

Cuál es el problema de IPv6 en Linux?

Algunos sistemas, y lo he visto en Ubuntu, algún que otro Debian, y Mint, cuando navegan o intentan conectarse a los repositorios de software oficiales, pueden intentar establecer una conexión a servidores IPv6 primero, y si no obtiene respuesta, o no puede enrutar el tráfico vía ipv6 hacia el ISP (Internet Service Provider), luego de pasar un timeout intentarán contactar al servidor vía IPv4.

Esto ocasionará una pérdida de tiempo a la hora de actualizar repositorios, por ejemplo.

$ sudo apt-get update
Ign http://archive.canonical.com trusty InRelease
Ign http://archive.canonical.com raring InRelease                                                                                                    
Err http://archive.canonical.com trusty Release.gpg                                                                                                  
  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]
Err http://archive.canonical.com raring Release.gpg                                                                                                  
  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]

Según las fuentes, algunos softwares como Google Chrome o Hexchat tambien pueden presentar este inconveniente.

Alguna solución?

Sí, una posible solución es desactivando el Stack IPv6 en nuestro Linux. Para ello podemos verificar si está realmente activado ejecutando el comando «ip a»:

diego@cryptos:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:5f:f4:d9:aa:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2008:db9:fe:19:1000::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::be5f:f4ff:fed9:aa5e/64 scope link
       valid_lft forever preferred_lft forever

Como puede verse en esta captura, los tags inet6 indican que sí tenemos el stack ipv6 activado.

Para desactivarlo podemos editar el archivo /etc/sysctl.conf y agregar las siguientes líneas al final:

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

Y cargar los cambios con: sudo sysctl -p

Ahora, si verificamos, no deberíamos ver las entradas inet6 en nuestro «ip a»:

diego@cryptos:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:5f:f4:d9:aa:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever

Cómo se si mi ISP me provee servicio IPv6?

Una simple prueba, existen varios sitios de testing en Internet que nos permiten verificar la conectividad de nuestro ISP, y si nos habilita IPv6 o no en nuestra conexión.

Puedes ingresar en http://test-ipv6.com/ y verificar si tu ISP soporta ipv6, y si puedes conectarte directamente a sitios IPv6 en Internet.

El mío no lo soporta, por lo que ha sido mejor desactivar IPv6 en mi sistema operativo 🙁

Otra solución también hubiera sido conectarse a los proveedores de túnel IPv6, o IPv6 Brokers. En alguna otra oportunidad hablaremos más en detalle de este tema.500px-Tunnel-ipv6.svg ipv6 en linux

Conclusión

Dentro de algún tiempo todos deberíamos trabajar y comunicarnos en forma transparente mediante IPv6. Lamentablemente en la actualidad muchos ISP’s no proveen servicio, y nos vemos obligados a conectarnos utilizando IPv4 únicamente al exterior, por lo que, de no usar un túnel IPv6, nos será imposible aprovechar sus ventajas.

Puede que te interese este artículo en el que hacíamos una prueba de concepto sobre 6in4, un túnel ipv4 que trafica paquetes ipv6 encapsulados! Prueba de concepto: montando un tunel 6in4 en Linux

Espero resulte de utilidad e interés!

Hasta la próxima!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador