Servicios en IPv6
No recuerdo qué leía anoche sobre IPv6 que volví a darle vueltas al tema, entre las típicas noticias de que se nos acaban las direcciones IPv4 (que como la pana, siempre vuelve), y el clásico artículo de D. J. Bernstein (The IPv6 mess), parece que le he perdido interés desde que monté usebox.net con IPv6.
Lo de siempre, ¿quién usa IPv6? Pero además, ¿para qué? Si no hay apenas contenidos en el nuevo sistema (pero no novato, en 2006 ya llevaban 10 años en pruebas).
Como bien dice Bernestein, antes de que sea interesante cambiar a los clientes al nuevo sistema, es necesario que los servicios ya estén funcionando. Bien, hasta anoche... este servidor no tenía ningún servicio en IPv6 :P.
No me había parado a pensar en este tema desde que cambiara de proveedor, y el caso es que sí tengo soporte completo, con lo que me lancé a la aventura sin pensar demasiado lo que podía tardar en dejarlo todo a punto. Sorpresa: apenas 5 minutos (relativo, para escribir esta anotación he tardado mucho más).
Activar servicios en IPV6 en Ubuntu 10.04.1 LTS
Tengo varios servicios en el servidor y, por deformación profesional, estaba todo configurado exclusivamente en IPv4. El motivo es sencillo, y resume una de mis recomendaciones de seguridad para administradores despistados™
:
Si no usas un servicio, desactívalo.
Simple y efectivo. Cada servicio está escuchando en la dirección IP que toca, y por lo tanto he tenido que revisar los servicios uno a uno.
Configuración de la dirección
Mi proveedor me da más direcciones IPv6 de las que nunca podré gastar (264 direcciones), y ahora mismo voy a usar una para todos los servicios.
Partiendo del rango que me indican en el panel de control, configuro la nueva IP a mano:
# ifconfig eth0 inet6 add 2001:41D0:2:10::/56
Es posible que tengamos una dirección IPv6 ya configurada, pero del tipo link-local (basada en la MAC de la tarjeta de red), y que no podremos usar hacia Internet (solo funciona localmente). Nuestra nueva dirección aparecerá en la salida de ifconfig como Scope:Global y es del tipo aggregatable-global-unicast.
Podemos comprobar las rutas con route -A inet6, pero para mi son incomprensibles. Simplemente he hecho un ping6 a la puerta de enlace que me ha indicado el proveedor, pero también podemos probar algo como:
# ping6 -c 1 ipv6.google.com PING ipv6.google.com(2a00:1450:8002::68) 56 data bytes 64 bytes from 2a00:1450:8002::68: icmp_seq=1 ttl=56 time=13.5 ms --- ipv6.google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 13.598/13.598/13.598/0.000 ms
He marcado en negrita la IP que ha respondido, con lo que todo parece correcto (podemos resolver nombres de dominio en IPv6, y aparentemente tenemos conectividad con Google).
Ya solo queda añadir en /etc/network/interfaces algo como:
iface eth0 inet6 static
address 2001:41D0:2:10::
netmask 56
DNS (Bind 9)
Lo primero que hay que hacer es conseguir que se nos pueda encontrar con IPv6. En mi caso activar el soporte IPv6 fue necesario, editando /etc/bind/named.conf.options:
options {
// aquí hay más cosas que no intesan en
// en este momento...
listen-on-v6 { any; };
};
Como he dicho antes, tenía desactivado el servicio en IPv6 :P
Luego, en nuestra zona (usebox.net en este ejemplo), crearemos un registro AAAA equivalente a cada registro A, pero con la nueva IP. Por ejemplo:
mail.usebox.net. A 80.121.211.104 mail.usebox.net. AAAA 2001:41d0:2:10::
Reiniciamos el servicio para que recargue la nueva configuración (sobretodo si no teníamos IPv6 activado), y comprobamos con dig:
# dig mail.usebox.net AAAA | grep -A 2 ";; ANSWER" ;; ANSWER SECTION: mail.usebox.net. 86400 IN AAAA 2001:41d0:2:10::
Con esto tendremos nuestro servidor accesible con los mismos nombres, pero mediante IPv6.
Otros servicios en IPv6
En mi servidor cuento con diferentes servicios (entrega y recogida de correo con Postfix y Dovecot, SSH con OpenSSH, web con Cherokee, y el mencionado DNS), y cada uno tiene sus particularidades para activar el soporte IPv6, pero no es nada complicado. Un vistazo rápido al manual es la solución.
La única pega que me he encontrado en con el paquete iptables-persistent, que no lleva soporte.
Lo he solucionado fácilmente, creando un fichero /etc/iptables/rules6 y modificando /etc/init.d/iptables-persistent dejando la parte del start tal como:
start)
if [ -f /etc/iptables/rules ]; then
iptables-restore </etc/iptables/rules
fi
if [ -f /etc/iptables/rules6 ]; then
ip6tables-restore </etc/iptables/rules6
fi
;;
Podemos usar como base nuestro fichero rules de IPv4, convirtiéndolo como sea conveniente (en mi caso solo tuve que eliminar algunas direcciones bloqueadas que eran, evidentemente, de IPv4 :P).
Conclusiones
Espero no haber metido la pata, porque tengo pendiente ponerme al día con IPv6, y que tire la primera piedra quien no haya dicho esto mismo alguna vez ;). Pero lo digo en serio, la salida de route en IPv6 es lo suficientemente marciana como considerar la amenaza completamente real :D.
Como es bastante probable que no tengamos conectividad IPv6 en casa, puede ser bastante útil usar un servicio como IPv6-Test, que nos permite verificar si nuestra web se está sirviendo con el nuevo protocolo.
El soporte de IPv6 en Linux es de primera, y no supone apenas esfuerzo ofrecer los mismos servicios que estamos dando en IPv4, así que no hay excusa para no aportar nuestro granito de arena al proceso de renovación (y de paso aprendemos cosas por el camino).
Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 15 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.


