Configurar túnel IPv6 en Fedora

Aún falta un poco hasta que los proveedores de acceso a Internet nos asignen un rango IPv6 en cada router, sobre todo en España, donde nos venden a precio de oro una conexión del siglo pasado.

Estos últimos días he estado configurándome un túnel IPv6-en-IPv4 de Hurricane Electrics, y la verdad es que funciona muy bien. Os cuento como he hecho la configuración en Fedora 16:

Lo primero de todo es darse de alta y solicitar un túnel, se nos asignará un IP y un rango /64 para nuestra red local. En la página de información detallada de nuestro túnel vienen todos los datos que vamos a necesitar.

Es muy importante que nuestro router de acceso a internet nos reenvíe los paquetes IP protocolo 41 a nuestra IP interna. Por ejemplo mi router no soporta la opción explícitamente, ya que en los reenvíos del NAT sólo permite los protocolos TCP y UDP. Para que funcione he tenido que añadir mi ordenador en la “DMZ” que permiten configurar estos routers. Para añadir la regla al iptables del equipo:

# iptables -A INPUT -p 41 -j ACCEPT

Creo el fichero /etc/sysconfig/network-scripts/ifcfg-he-ipv6:

NAME="Hurricane Electric IPv6 tunnel"
DEVICE="he-ipv6"
TYPE=sit
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=yes
IPV6TUNNELIPV4=216.66.84.46 # Server IPv4 address
IPV6ADDR=2001:470:1e28:37a1::2/127 # Client IPv6 address
DNS1=2001:470:20::2

En el fichero /etc/sysconfig/network añado las siguientes líneas:

IPV6_DEFAULTDEV=he-ipv6
IPV6FORWARDING=yes

En /etc/sysctl.conf habilito el forwarding para el protocolo IPv6:

# IPv6 packet forwarding
net.ipv6.conf.all.forwarding = 1

Instalo el demonio radvd pra que anuncie el prefijo en la red local:

# yum install radvd

Edito el fichero /etc/radvd.conf y añado el prefijo /64 que nos indica la página de tunnelbroker.

interface p6p1 {
   AdvSendAdvert on;
   MinRtrAdvInterval 30;
   MaxRtrAdvInterval 100;
   prefix 2001:470:1e29:37a1::/64 {
      AdvOnLink on;
      AdvAutonomous on;
      AdvRouterAddr off;
   };
   RDNSS 2001:470:20::2 { };
};

Para que el túnel se levante al arrancar el equipo es necesario tener el servicio network activado. También habilito el servicio radvd.

# systemctl enable network.service radvd.service
# systemctl start network.service radvd.service

Por último he creado un script para actualizar mi IP pública en tunnelbroker. Lo he ubicado en /root/bin/he-ipv6.sh:

#!/bin/sh
USERNAME="username"
PASSWORD="mi_password"
TUNNEL_ID="123456"
/usr/bin/curl --silent --user ${USERNAME}:${PASSWORD} "https://ipv4.tunnelbroker.net/nic/update?hostname=${TUNNEL_ID}" > /dev/null 2>&1

Con crontab -e lo programo para ejecución en cada arranque:

@reboot        /root/bin/he-ipv6.sh

Acordaros también de repasar las reglas de iptables e ip6tables, ya que ahora tenéis todos los puertos por IPv4 redirigidos a vuestro ordenador y direcciones IPv6 públicas, por lo que podéis ser contactados directamente desde internet.

Para probar que todo funciona correctamente podéis hacer un ping por IPv6:

$ ping6 ipv6.google.com
PING ipv6.google.com(mad01s09-in-x12.1e100.net) 56 data bytes
64 bytes from mad01s09-in-x12.1e100.net: icmp_seq=1 ttl=55 time=120 ms
64 bytes from mad01s09-in-x12.1e100.net: icmp_seq=2 ttl=55 time=135 ms
64 bytes from mad01s09-in-x12.1e100.net: icmp_seq=3 ttl=55 time=186 ms
64 bytes from mad01s09-in-x12.1e100.net: icmp_seq=4 ttl=55 time=128 ms
64 bytes from mad01s09-in-x12.1e100.net: icmp_seq=5 ttl=55 time=127 ms
^C
--- ipv6.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 120.754/139.764/186.314/23.748 ms

También es muy útil la página test-ipv6.com para comprobar varios aspectos de la conexión. Debería daros una nota de 10/10.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s