Bridge IPv6 con OpenVPN, segunda parte
Como hoy me encuentro inspirado, y Saúl me recordó el otro día que tenía algo pendiente, vamos a completar la historia que iniciamos el otro día.
Así que ahora nos toca configurar el cliente VPN cuya configuración es idéntica a la que usaríamos para conectarnos a un servidor OpenVPN cualquiera salvo que en lugar de usar interfaces tun los usaremos del tipo tap:
apardo@bonemachine:/etc/openvpn$ cat debaser.conf client dev tap proto udp remote vpn.theprimusproject.com 1194 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun ca keys/ca.crt cert keys/bonemachine.theprimusproject.com.crt key keys/bonemachine.theprimusproject.com.key tls-auth keys/ta.key 1 ns-cert-type server comp-lzo verb 3
Con esto ya tendríamos conectividad IPv4. Dejamos como ejercicio para el lector configurar qué interfaces levantamos según la red en la que nos encontremos. Para tal fin yo suelo usar laptop-net, disponible como paquete Debian.
Ahora necesitamos conectividad IPv6 con Internet, si nuestro proveedor no nos la ofrece deberemos buscar alguien que nos de el servicio. Lo ideal para tener tiempos de respuesta no muy elevados sería conectar con el servicio más cercano a la red que nos encontremos pero como yo conocía go6, antes Freenet6, y la conexión IPv6 con Internet no es algo que ahora me preocupe mucho, decidí crearme una cuenta en este proveedor. La creación de la cuenta es necesaría si quieres disponer de un prefijo /64 para extender el direccionamiento allá donde quieras. Para conectar a go6 en Debian disponemos del paquete tspc que implementa el protocolo usado por este servicio y facilita la creación del interfaz de red, rutas, etc. La configuración no tiene mucho misterio:
apardo@debaser:/etc/tspc$ cat tspc.conf auth_method=any client_v4=auto # si nuestra dirección pública es dinámica userid=your_go6_user passwd=very_secret_password template=setup server=broker.freenet6.net retry_delay=30 tunnel_mode=v6anyv4 if_tunnel_v6v4=sit1 proxy_client=no keepalive=yes keepalive_interval=30 syslog_facility=DAEMON syslog_level=INFO host_type=router prefixlen=48 if_prefix=br0
Ahora necesitamos asignar el direccionamiento IPv6 al servidor OpenVPN y a los clientes de la VPN o la LAN. OpenVPN permite ejecutar cualquier script al iniciarse así que vamos a aprovechar esta funcionalidad para configurar el direccionamiento IPv6. go6 me asignó la red 2001:5c0:9706/64 así que vamos a configurarla primero en el servidor y luego en los clientes:
apardo@debaser:/etc/openvpn$ grep up server.conf up ./server.up.sh apardo@bonemachine:/etc/openvpn$ cat server.up.sh #!/bin/sh ip -6 addr add 2001:5c0:9706::1/64 dev br0
apardo@bonemachine:/etc/openvpn$ grep up debaser.conf up ./debaser.up.sh apardo@bonemachine:/etc/openvpn$ cat debaser.up.sh #!/bin/sh ip -6 addr add 2001:5c0:9706::2/64 dev $1 ip -6 route add 2000::/3 via 2001:5c0:9706::1 dev $1
Como el bridge de la VPN ademas es nuestro router IPv6 es aconsejable configurar algunos parámetros de su kernel.
apardo@debaser:~$ cat /etc/sysctl.conf # See sysctl.conf (5) for information. net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.all.router_solicitations = 0 apardo@debaser:~$
Encontrar información en la Red sobre el significado de estos parámetros es fácil. Bueno, ya tenemos gran parte de la historia configurada. Solo nos queda aplicar algunas reglas de filtrado con ip6tables, configurar la resolución inversa DNS que go6 nos delega para la red que nos asignó, añadir algunos registros AAAA y ver configurar básicamente algunos servicios como SMTP, IMAP o HTTP. Lo veremos en la próxima entrega.
PD: Me da la impresión de que esto ya lo escribí hace 6 años :)
August 31st, 2007 at 10:01
Muy bueno el documento! Quizá un día que me sienta más friki de lo habitual migre la red de mi casa a ipv6 :)
August 31st, 2007 at 10:37
Si quieres migrar por completo necesitaras que tu router a Internet traduzca de IPv6 a IPv4 y viceversa :)