21 de Junio, 2005

IPv6 con OpenBSD

Es fácil, o todo lo fácil que puede ser cualquier cosa relacionada con IPv6.

Soy un completo ignorante sobre el tema, así que no voy a dar una explicación muy extensa (al menos por ahora :P). Mi proveedor de acceso a Internet solo me da conectividad IPv4, así que no puedo entrar en la red IPv6 así como así: necesito un broker.

Un broker es un proveedor que sí tiene conectividad IPv6, y además tiene IPv4. Así que lo que hacemos es un túnel entre nuestra dirección IPv4 y la suya, y encapsulamos los paquetes IPv6 para que viajen ese tramo por Internet hasta entrar en la nueva red.

Esto no es muy eficiente, pero es lo que hay por ahora :(.

En primer lugar tenemos que elegir un broker. Por ahora estoy probando con BT Exact, porque el broker de Telefónica me ha dado muchos problemas (su dominio no resuelve, así que no me llegan sus correos; cuando vuelva a funcionar puede ser una buena opción).

En realidad no da igual, porque contra más lejos esté el otro extremo del túnel IPv4, menos rendimiento tendrá el invento. Para hacer pruebas es suficiente el que he elegido.

Este broker no da soporte para OpenBSD (3.6 en mi caso), así que he tenido que hacer algún marabarismo.

Cuando nos damos de alta podemos crear un túnel, indicando nuestra IP en Internet (la detecta) y el sistema operativo que usamos. Esto es importante porque nos llegará al correo un script de configuración. He creado dos túneles, uno poniendo FreeBSD y otro poniendo Linux, para obtener así todos los datos que necesito en OpenBSD ;).

He seguido los pasos descritos en este documento: How to setup an IPv6 tunnel in 5 minutes, if you can follow steps carefully (creo que es de Daniel Hartmeier).

Primero creo /etc/hostname.gif0:

up giftunnel 84.120.176.87 213.121.24.XXX
up inet6 2001:618:400::5478:b057 ::213.121.24.XXX prefixlen 128
!route -n add -host -inet6 default ::213.121.24.XXX 

Alternativamente podemos meter todos estos parámetros a mano (aunque el paso anterior es el que cuanta cuando reiniciemos):

# ifconfig gif0 giftunnel 84.120.176.87 213.121.24.XXX
# ifconfig gif0 inet6 2001:618:400::5478:b057 ::213.121.24.XXX prefixlen 128
# route -n add -host -inet6 default ::213.121.24.XXX

He enmascarado las IP del brocker con un XXX para evitar la tentación de usas esos valores. Hay que pedir esos datos al broker para hacer nuestros propios túneles ;).

Pero vamos a explicar qué es cada cosa, haciéndonos valer de los colores: en rojo mi extremo del túnel, en azul el del broker. Para cada extremo hay dos direcciones, una IPv4 y otra IPv6.

Las lineas ifconfig (empiezan con up en hostname.gif0) tienen la forma 'extremo local extremo remoto'. Indicamos los dos extremos del túnel, para los dos protocolos. La última línea nos permite añadir una ruta por defecto para IPv6 (la dirección IPv6 del brocker).

Ahora hay que ponernos con Packet Filter, que seguramente estamos usando. Hay que hacer dos cosas: dejar pasar información entre los extremos del túnel IPv4 y filtrar el tráfico en IPv6 (empleando el interfaz gif0):

# en algún lugar de mi pf.conf
# ipv6
pass out on $ext_if inet proto ipv6 from $ext_if to 213.121.24.XXX \
        keep state
pass in on $ext_if inet proto ipv6 from 213.121.24.XXX to $ext_if \
        keep state

# FILTRADO: IPv6

# saliente
pass out on gif0 all keep state

# entrante
# normal: servicios
pass in on gif0 proto tcp from any to (gif0) \
        port { www } flags S/SA keep state

# normal: icmp
pass in on gif0 proto icmp6 from any to (gif0)

Activamos las nuevas reglas (pfctl -f /etc/pf.conf) y ya está. Ahora podemos hacer pruebas y comparar rendimientos:

# ping -q -c 5 www.kame.net
PING www.kame.net (203.178.141.194): 56 data bytes
--- www.kame.net ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 311.140/312.513/314.452/1.233 ms

# ping6 -q -c 5 www.kame.net
PING6(56=40+8+8 bytes) 2001:618:400::5478:b057 --> 2001:200:0:8002:203:47ff:fea5:3085

--- www.kame.net ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 316.192/320.346/323.341/2.318 ms

No está nada mal :).

Estoy tratando con mi proveedor del hospedaje de usebox.net para que me active el soporte IPv6. No sé realmente en qué consiste, pero creo que me hacen de broker y, como mínimo, dan una IPv6 al dominio. Quizás pueda asignar un subdominio a la nueva y flamante IPv6 de blackshell para que se pueda acceder a los servicios desde este protocolo.

Por ahora no se puede visitar la web (mi Apache no tiene soporte IPv6), pero sí hacer ping6 empleando la dirección indicada en el artículo.

Anotación por Juan J. Martínez, clasificada en: openbsd, ipv6.

Hay 1 comentario

Gravatar

IPv6, el gran desconocido. Hace algún tiempo se dijo que los rangos de IP's (en su versión 4) estaban acabados, había que implementar un nuevo protocolo e IPv6 parecía la solución.

De todas formas es algo que no ha llegado a cuajar. Cuando todo el mundo usa IPv4, depender de los BOFH para cambiar resulta un inconveniente, (como la implementación de SPF de la que hablabas hace unos días).

Poco a poco tendremos que irnos concienciando de su uso y hacer accesibles nuestros servicios a la nueva versión, pero bueno... poco a poco :D.

por r0sk, en 2005-06-23 10:26:00

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: