IPv6 en Linux: a veces conviene desactivarlo
Como 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. 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.
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!