Gentoo Logo

Guía del enrutador IPv6 en Gentoo

Contenido:

1.  Configuración del núcleo

Configuración básica del núcleo

Cualquiera de los núcleos 2.6 disponibles en Gentoo soportará conexiones IPv6 fácilmente. La nueva pila USAGI para IPv6 está integrada en el núcleo desde la versión 2.6.0.

Listado de Código 1.1: Emergiendo un núcleo

# emerge gentoo-sources

Ahora estamos listos para entrar en el directorio de las fuentes del núcleo y comenzar con su configuración.

Listado de Código 1.2: Configurando el núcleo de Linux

# cd /usr/src/linux
# make menuconfig

Nota: Esta guía asume que el enlace /usr/src/linux apunta a las fuentes que estará usando.

Listado de Código 1.3: Opciones de 'make menuconfig'

Networking support --->
  Networking options --->
    <*> The IPv6 protocol --->
(Las opciones IPv6 bajo ésta pueden ser útiles para otras muchas aplicaciones,
pero no deberían de ser necesarias para una configuración básica)

(Esta opción solo es necesaria si está usando ptrtd para la conversión de IPv6 a IPv4)
Device Drivers --->
  Network device support --->
    <*> Universal TUN/TAP device driver support

Probando el soporte IPv6

Después de activar las opciones recomendadas, recompile su núcleo y reinicie usando su nuevo núcleo con IPv6 activado.

Si todavía no tiene iproute2 instalado, le animamos a hacerlo ahora. iproute2 es una suite de configuración de red que contiene ip, el famoso sustituto para ifconfig, route, iptunnel y otros ...

Listado de Código 1.4: Instalando iproute2

# emerge sys-apps/iproute2

Aviso: El uso de ifconfig puede ocasionar serios dolores de cabeza si tiene múltiples dispositivos de tunel. Tiene que eliminar los túneles en orden inverso, quiere decir que el creado en último lugar debe ser eliminado primero ¡Queda avisado!

Si IPv6 está funcionando, el dispositivo de loopback debería mostrar una dirección IPv6:

Listado de Código 1.5: Comprobando el dispositivo de loopback

# ip -6 addr show lo
1: lo: <LOOPBACK,UP> mtu 16436
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
    (Las líneas de arriba demuestran que las cosas funcionan)

Antes de proseguir, asegúrese de añadir ipv6 a su lista de variables USE en make.conf, de tal modo que en futuras instalaciones de paquetes se incluirá soporte para IPv6.

2.  Configuración del túnel

Configuración básica

La mayoría de los proveedores de Internet todavía no ofrecen conexiones IPv6 de modo nativo. Para saltarse está limitación, existen varios proveedores de túneles en todo el mundo que ofrecen gratuitamente túneles IPv6. Esto le permite hacer un túnel para todas las conexiones IPv6 a través de una conexión IPv4.

Proveedor Situación geográfica
Hurricane Electric Norteamérica, Europa, Asia
Freenet6 EE.UU.
Sixxs Europa
Singnet Singapur
Aarnet Australia/Pacífico Sur

A continuación se muestran dos ejemplos de configuración de un túnel IPv6 con dos populares proveedores de Norteamérica: Hurricane Electric (también se aplica a túneles de sixxs.net sin mecanismo heartbeat) y Freenet6.

Hurricane Electric

Hurricane Electric (HE de forma abreviada) ofrece túneles IPv6 gratuitos y le asigna un bloque /64 de direcciones. También permite configurar un DNS inverso. Conseguir un túnel de HE es tan sencillo como ir a http://www.tunnelbroker.net y rellenar un formulario.

Nota: El registro incluye una lista de datos personales como su dirección y número de teléfono.

Una vez activado el túnel y asignado un bloque /64, puede configurar su sistema Gentoo. HE proporciona configuraciones de ejemplo basadas en las utilidades ifconfig e iproute. Los dos siguientes ejemplos asumen que tiene la siguiente configuración:

Dirección IPv4 Local 68.36.91.195
Dirección IPv4 de HE 64.71.128.82
Dirección local del túnel IPv6 2001:470:1F00:FFFF::189
Bloque IPv6k 2001:470:1F00:296::/64

Utilizando el paquete iproute2 y el comando ip, haríamos lo siguiente:

Listado de Código 2.1: Configuración de un túnel IPv6

(Crear un túnel entre la IPv4 local (eth0) and la dirección IPv4 de HE
# ip tunnel add sixbone mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0
(Extraer el túnel indirecto del MTU)
# ip link set sixbone mtu 1280
(Levantar el túnel)
# ip link set sixbone up
(Asignarle la dirección IPv6)
# ip addr add 2001:470:1F00:FFFF::189 dev sixbone
(Enrutar todo el tráfico de direcciones IPv6 a través de nuestro dispositivo túnel 'sixbone')
# ip route add 2000::/3 dev sixbone

Freenet6

Freenet6 es otro proveedor de túneles gratuito. El registro optativo solo requiere un nombre de usuario y una dirección de correo electrónico válida. Ellos han escogido configurar la gestión del túnel en cliente/servidor creando el cliente gateway6. El cliente está disponible en Portage. Para instalarlo haga:

Listado de Código 2.2: Instalando el cliente de Freenet6

# emerge gateway6

Si elige conectar con autenticación, configure gateway6 editando /etc/gateway6/gw6c.conf. Solamente debería tener que cambiar los campos userid y passwd colocando los asignados por Freenet6, además de cambiar la puerta de enlace. A continuación tiene una configuración de ejemplo.

Listado de Código 2.3: gw6c.conf de ejemplo

auth_method=any
userid=anonymous
passwd=foobar
template=linux
server=broker.freenet6.net

Probando la conexión

Ahora que el túnel está configurado, puede probar su conexión. La forma más sencilla es usando la herramienta ping6 e intentando hacer ping a un nombre de máquina IPv6.

Listado de Código 2.4: Probando la conexión

# emerge iputils
# ping6 www.kame.net
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=1 ttl=52 time=290 ms
64 bytes from orange.kame.net: icmp_seq=2 ttl=52 time=277 ms
64 bytes from orange.kame.net: icmp_seq=3 ttl=52 time=280 ms
64 bytes from orange.kame.net: icmp_seq=4 ttl=52 time=279 ms
64 bytes from orange.kame.net: icmp_seq=5 ttl=52 time=277 ms

--- www.kame.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4038ms
rtt min/avg/max/mdev = 277.040/281.041/290.046/4.699 ms

Actualmente se está trabajando para añadir mejor soporte IPv6 a los guiones de inicio de red. Si desea conocer su estado y/o ofrecer ayuda, escriba a latexer@gentoo.org.

3.  Soporte IPv6 en aplicaciones

Haciend emerge de los paquetes de nuevo

A menos que ya tenga USE="ipv6" en /etc/make.conf, probablemente necesitará re-emerger unos cuantos paquetes con soporte IPv6. Para obtener una lista de todos los paquetes instalados afectados por el cambio del parámetro USE, use la opción --newuse (-N) de Portage:

Listado de Código 3.1: Candidatos para ser re-emergidos

# emerge -uDNav world

Si ha cambiado muchos parámetros USE, la lista puede que sea bastante grande. Se recomienda mantener el sistema actualizado para que no sufra en caso de tener que recompilar todos los paquetes afectados.

Nota: Algunos paquetes detectan soporte IPv6 de forma mágica automáticamente y por eso no requieren la opción ipv6 en las variables USE. Por eso no todos los paquetes que deberían soportar IPv6, lo soportarán si lo compiló con IPv6 habilitado.

Paquetes específicos de IPv6

Hay algunos paquetes que tratan con elementos IPv6. La mayoría se encuentran en /usr/portage/net-misc.

Paquete Descripción
net-misc/ipv6calc Convierte una dirección IPv6 a un formato comprimido
net-misc/netcat6 Versión de netcat que soporta tanto IPv6 como IPv4
dev-perl/Socket6 La parte de las definiciones de socket.h de C y los manipuladores de estructuras relacionados con IPv6

4.  Configuración de DNS

IPv6 y DNS

Los DNS para IPv4 utilizan registros A, los DNS para IPv6 usan registros AAAA. (Esto se debe a que IPv4 tiene un espacio de direcciones de 2^32 mientras que en IPv6 es de 2^128). Para el DNS inverso, el estándar INT es el más soportado. ARPA es el último formato, pero no está tan difundido como INT. Ahora describiremos el soporte para el formato INT.

Configuración de BIND

Las versiones recientes de BIND incluyen un soporte IPv6 excelente. Esta sección asumirá que tiene un conocimiento mínimo de configuración y uso de BIND. Asumiremos que no está corriendo BIND en un entorno enjaulado (chroot). Si, por el contrario, lo está haciendo, simplemente añada el prefijo de la jaula a la mayoría de las rutas en la siguiente sección.

Lo primero que necesita es añadir entradas tanto para la resolución directa como para la resolución inversa en /etc/bind/named.conf.

Listado de Código 4.1: Entradas en named.conf

(Permitimos a bind escuchar a direcciones IPv6.
Usando 'any' es la única forma de hacerlo en versiones anteriores a bind-9.3)
options {
    [...]
    listen-on-v6 { any; }
    [...]
};
(Esto proporcionará DNS directo para el dominio 'ipv6-rules.com':)
zone "ipv6-rules.com" IN {
    type master;
    file "pri/ipv6-rules.com";
};
(El formato para DNS inverso se obtiene bit a bit. Se hace tomando el prefijo IPv6,
invirtiendo el orden de los números y colocando un punto entre cada uno de ellos)
zone "6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa" {
        type master;
        file "pri/rev-ipv6-rules.com.arpa";
};

Ahora crearemos los archivos de zona y añadiremos entradas para todos nuestros nombres de máquina:

Listado de Código 4.2: pri/ipv6-rules.com

$TTL    2h
@       IN      SOA     ipv6-rules.com. webmaster.ipv6-rules.com.  (
                                2003052501 ; Serial
                                28800      ; Refresh
                                14400      ; Retry
                                3600000    ; Expire
                                86400 )    ; Minimum
                NS      ns1.ipv6-rules.com

        IN      AAAA    2001:470:1f00:296::1 ; address for ipv6-rules.com
host1   IN      AAAA    2001:470:1f00:296::2 ; address for host1.ipv6-rules.com
host2   IN      AAAA    2001:470:1f00:296::3:3 ; address for host2.ipv6-rules.com

Listado de Código 4.3: pri/rev-ipv6-rules.com.arpa

$TTL 3d ; Default TTL (bind 8 needs this, bind 9 ignores it)
@       IN SOA ipv6-rules.com. webmaster.ipv6-rules.com. (
                        2003052501      ; Serial number (YYYYMMdd)
                        24h             ; Refresh time
                        30m             ; Retry time
                        2d              ; Expire time
                        3d )            ; Default TTL
        IN      NS     ns1.ipv6-rules.com.
; IPv6 PTR entries
$ORIGIN 6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     ipv6-rules.com.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host1.ipv6-rules.com.
3.0.0.0.3.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host2.ipv6-rules.com.

Configuración de DJBDNS

Actualmente hay algunos parches para DJBDNS de terceros disponibles en http://www.fefe.de/dns/ que le permiten servir nombres en IPv6. DJBDNS puede instalarse con estos parches haciendo emerge con ipv6 entre los parámetros USE.

Aviso: Todavía no están soportados todos los tipos de registro con estos parches. En particular, los registros MX y NS no están soportados.

Listado de Código 4.4: Instalando djbdns

# emerge djbdns

Una vez instalado djbdns, puede configurarse con tinydns-setup, respondiendo unas cuantas preguntas sobre las direcciones IP en las que debe escuchar, donde instalar tinydns, etc.

Listado de Código 4.5: Configurando tinydns

# tinydns-setup

Asumiendo que hemos instalado tinydns en /var/tinydns, editaremos /var/tinydns/root/data. Este archivo contendrá todos los datos necesarios para conseguir que tinydns maneje los DNS para su delegación IPv6.

Listado de Código 4.6: Archivo data de ejemplo

(*.ipv6-rules.com manejado autoritariamente por 192.168.0.1)
.ipv6-rules.com:192.168.0.1:a:259200
(DNS inverso autoritario para 2001:470:1f00:296::/64)
.6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa:192.168.0.1:a
(Especifica las IPs para host1 y host2)
6host1.ipv6-rules.com:200104701f0002960000000000000001:86400
6host2.ipv6-rules.com:200104701f0002960000000000000002:86400
(Apunta www a host1)
3www.ipv6-rules.com:200104701f0002960000000000000002:86400

Las líneas que comienzan por 6 tendrán creado tanto un registro AAAA como un registro PTR. Aquellas que comiencen por 3 solamente tendrán un registro AAAA. Además de editar manualmente el archivo data, puede usar los guiones add-host6 y add-alias6 para añadir nuevas entradas. Una vez hecho los cambios al archivo data, simplemente ejecute make desde /var/tinydns/root. Así se creará /var/tinydns/root/data.cfb, el cual usa tinydns como fuente de información para las peticiones DNS.

5.  Enrutador IPv6

Configurar el enrutado

Si queremos que nuestro sistema funcione como enrutador para otros clientes que deseen conectarse al mundo exterior con IPv6, se necesita algo más de configuración. Necesitamos activar el reenvío de paquetes IPv6. Podemos hacerlo de dos maneras.

Listado de Código 5.1: Activando el reenvío

# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
o
# sysctl -w net.ipv6.conf.all.forwarding=1

Aviso: El guión de inicio radvd, explicado en el próximo capítulo, activa (y desactiva) el reenvío, haciendo innecesario el siguiente paso.

Para activar el reenvío en el inicio, necesitará editar /etc/sysctl.conf y modificar la siguiente línea:

Listado de Código 5.2: Fragmento a añadir en sysctl.conf

net.ipv6.conf.default.forwarding=1

Ahora el tráfico debería ser reenviado desde esta máquina a través del túnel establecido con nuestro proveedor.

Para asignar direcciones IPv6 a los clientes, las especificaciones IPv6 permiten tanto la asignación con estado, como sin estado. La asignación sin estado usa un proceso llamado anuncio de enrutador (en inglés: Router Advertisement) y permite a los clientes obtener una dirección IP y una ruta predeterminada simplemente activando el dispositivo de red. Se denomina 'sin estado' porque no se guarda ningún registro del estado de las IPs asignadas y las máquinas a las cuales se les ha asignado. La asignación 'con estado' se maneja mediante DHCPv6. Se llama así porque el servidor mantiene un registro con el estado de los clientes que han solicitado una IP y las que lo han obtenido.

Configuración sin estado

La configuración sin estado se lleva a cabo sencillamente con el demonio de anuncio de enrutador, o radvd.

Listado de Código 5.3: Configurando radvd

# emerge radvd

Después de hacer emerge de radvd, necesitamos crear /etc/radvd/radvd.conf que contiene información acerca del bloque de IP del que se asignarán las IPs. Aquí tiene un ejemplo del archivo radvd.conf usando el prefijo asignado por nuestro proveedor.

Listado de Código 5.4: Ejemplo de radvd.conf

interface eth1
{
        (Envía el mensaje de anuncio a otro hosts)
        AdvSendAdvert on;
        (La fragmentación es mala(tm))
        AdvLinkMTU 1280;
        MaxRtrAdvInterval 300;
        (El prefijo de subred IPv6 que hemos asignado por nuestro PoP)
        prefix 2001:470:1F00:296::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};

Aviso: Asegúrese que la interfaz en la primera línea es la correcta para propagar los anuncios de enrutador hacia su intranet y ¡no hacia su ISP!

En man radvd.conf está disponible información más detallada. Ahora podemos iniciar radvd y configurarlo para que se cargue al inicio.

Listado de Código 5.5: Iniciando radvd

# /etc/init.d/radvd start
# rc-update add radvd default

Configuración para mantenimiento de estado

Si desea una configuración que mantiene el estado, debe instalar y configurar net-misc/dibbler.

Listado de Código 5.6: Instalando dibbler

# emerge dibbler

Ahora debemos configurar el cliente dibbler modificando el archivo /etc/dibbler/client.conf.

Listado de Código 5.7: Ejemplo de configuración de cliente dibbler

iface ppp0 {
        rapid-commit yes
        pd
        option dns-server
}

Ahora podemos iniciar el cliente dibbler y configurarlo para que arranque al iniciar.

Listado de Código 5.8: Arrancando el cliente dibbler

# /etc/init.d/dibbler-client start
# rc-update add dibbler-client default

6.  Clientes IPv6

Usando radvd

Ahora los clientes detrás de este enrutador deben ser capaces de acceder a la red vía IPv6. Si está usando radvd, configurar las máquinas debería ser tan sencillo como activar el dispositivo de red. (Probablemente ya lo hayan hecho sus guiones de inicio net.ethX).

Listado de Código 6.1: Conectando a través de IPv6

# ip link set eth0 up
# ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP> mtu 1400 qdisc pfifo_fast qlen 1000
    link/ether 00:01:03:2f:27:89 brd ff:ff:ff:ff:ff:ff
    inet6 2001:470:1f00:296:209:6bff:fe06:b7b4/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::209:6bff:fe06:b7b4/64 scope link
       valid_lft forever preferred_lft forever
    inet6 ff02::1/128 scope global
       valid_lft forever preferred_lft forever

7.  Otros recursos

En la red hay gran cantidad de recursos muy buenos relacionados con IPv6.

Sitios web Recurso
www.ipv6.org Información general sobre IPv6
www.linux-ipv6.org/ Proyecto USAGI
www.deepspace6.net Sitio sobre Linux/IPv6
www.kame.net Implementación *BSD

En el IRC, puede probar #ipv6 en Freenode. Puede conectarse a los servidores de Freenode mediante IPv6 usando irc.ipv6.freenode.net.



Imprimir

Página actualizada 2 de septiembre, 2011

Sumario: Esta guía muestra cómo configurar IPv6 en un sistema Gentoo. Incluye establecer un túnel con un "tunnel broker" o proveedor de túneles, la configuración básica del DNS y la configuración de los clientes para usar el sistema para conectar con una dirección IPv6.

Peter Johanson
Desarrollador

Jorge Paulo
Editor

Sven Vermeulen
Editor, Revisor

Camille Huot
Editor

Pasi Valminen
Editor

Joshua Saddler
Editor

Markos Chandras
Contribuidor

John Christian Stoddart
Traductor

Alberto García Hierro
Traductor

Enrique Barbeito García
Traductor

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.