Important: You are required to change your passwords used for Gentoo services and set an email address for your Wiki account if you haven't done so. See the full announcement and Wiki email policy change for more information.

Guía del enrutador IPv6

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of a page IPv6 router guide and the translation is 100% complete.

Other languages:English 100% • ‎español 100% • ‎français 96% • ‎русский 100%

Cuestiones preliminares

Configuración básica del núcleo

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

root # emerge --ask gentoo-sources

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

root # cd /usr/src/linux
root #
make menuconfig
Nota
Aquí se asume que /usr/src/linux apunta a los fuentes que está usando.
Kernel configurationOpciones '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

Probar 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 ha instalado iproute2 instalado, le animamos a hacerlo ahora. iproute2 es una suite de configuración de red que contiene ip, el famoso sustituto de ifconfig, route, iptunnel y otros ...

root # emerge --ask sys-apps/iproute2
Advertencia
El uso de ifconfig puede ocasionar serios dolores de cabeza si tiene múltiples dispositivos de túnel. Tiene que eliminar los túneles en orden inverso, lo que significa que el último que se creo debe ser el primero en ser eliminado ¡Queda avisado!

Si IPv6 funciona, el dispositivo de bucle debería mostrar una dirección IPv6:

root # 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 nos indican que todo va bien)

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

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 "gestores 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.

Gestor Localización
Hurricane Electric Norteamérica, Europa, Asia
Freenet6 Estados Unidos
Sixxs Europa
Singnet Singapur
Aarnet Australia/Sur del Pacífico

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

Hurricane Electric

Hurricane Electric (HE de forma abreviada) ofrece túneles IPv6 gratuitos y le ofrece un bloque /64 de direcciones. También permite configurar un DNS inverso. Para conseguir un túnel de HE vaya a https://www.tunnelbroker.net/ y rellene el formulario de una página.

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

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

Dirección Local IPv4 (eth0) 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 IPv6 2001:470:1F00:296::/64

Para utilizar el paquete iproute2 y la orden ip, haríamos lo siguiente:

Crear un túnel entre la IPv4 local (eth0) y la dirección IPv4 remota de HE:

root # ip tunnel add sixbone mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0

Extraer la carga del túnel desde la MTU:

root # ip link set sixbone mtu 1280

Activar el túnel:

root # ip link set sixbone up

Asignarle la dirección IPv6:

root # ip addr add 2001:470:1F00:FFFF::189 dev sixbone

Enrutar todas las direcciones IPv6 globales de envío a un solo receptor (unicast) a través de nuestro dispositivo túnel 'sixbone':

root # ip route add 2000::/3 dev sixbone

Freenet6

Freenet6 es otro proveedor de túneles gratuito. El registro opcional solo requiere un nombre de usuario y una dirección de correo electrónico válida. Han elegido realizar la gestión del túnel mediante una configuración cliente/servidor creando el cliente gateway6. Este cliente está disponible en Portage. Para instalarlo haga:

root # emerge --ask gateway6

Ahora, si elige conectarse con autenticación, necesitará configurar gateway6 editando /etc/gateway6/gw6c.conf. Solamente debería cambiar los campos "userid" y "passwd" para que concuerden con los asignados por Freenet6, además de cambiar el servidor que actúa como puerta de enlace. A continuación se muestra un ejemplo de fichero configuración.

CodeEjemplo de fichero gw6c.conf

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

Probar su conexión

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

root # emerge --ask iputils
user $ 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 u ofrecer ayuda, escriba a latexer@gentoo.org.

Soporte IPv6 en aplicaciones

Hacer de nuevo emerge de los paquetes

A menos que ya tenga USE="ipv6" en su /etc/portage/make.conf, probablemente necesitará hacer de nuevo emerge de unos cuantos paquetes con soporte IPv6. Para obtener una lista de todos los paquetes instalados que están afectados por el cambio en las opciones USE, utilice la opción --newuse (-N) de Portage:

root # emerge -uDNav @world

Si ha cambiado muchas opciones USE, la lista puede que sea bastante larga. 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 tener soporte IPv6, lo tendrán si lo compiló con IPv6 habilitado.

Paquetes específicos IPv6

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

Package Description
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 socket.h de C relacionada con IPv6, definiciones y manipuladores de estructuras

Configuración DNS

IPv6 y DNS

Así como 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 obsoleto, pero es el más soportado. ARPA es el último estándar. El soporte para el formato ARPA se describe aquí.

Configuración de BIND

Las versiones recientes de BIND incluyen un soporte excelente de IPv6. Esta sección asume que tiene el conocimiento mínimo sobre la configuración y uso de BIND. Asumiremos que no está corriendo bind dentro de una jaula chroot. Si lo está haciendo, añada el prefijo chroot a la mayoría de las rutas que se indican 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.

CodeEntradas en named.conf

## (Permitimos que bind escuche en direcciones IPv6.
## El uso de 'any' es la única forma de hacer esto antes de la versión 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 está "orientado a bits". 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 tenemos que crear esos archivos de zona y añadir entradas para todas nuestros equipos:

Codepri/ipv6-rules.com

$TTL    2h
@       IN      SOA     ipv6-rules.com. webmaster.ipv6-rules.com. (
                                2003052501 ; Número de Serie
                                28800      ; Refresco
                                14400      ; Reintentos
                                3600000    ; Expiración
                                86400 )    ; Mínimo
                NS      ns1.ipv6-rules.com

        IN      AAAA    2001:470:1f00:296::1 ; dirección para ipv6-rules.com
host1   IN      AAAA    2001:470:1f00:296::2 ; dirección para host1.ipv6-rules.com
host2   IN      AAAA    2001:470:1f00:296::3:3 ; dirección para host2.ipv6-rules.com
Codepri/rev-ipv6-rules.com.arpa

$TTL 3d ; TTL por defecto (bind 8 lo necesita, bind 9 lo ignora)
@       IN SOA ipv6-rules.com. webmaster.ipv6-rules.com. (
                        2003052501      ; Número de serie (AAAAMMdd)
                        24h             ; Intervalo de refresco
                        30m             ; Intervalo de reintento
                        2d              ; Tiempo de expiración
                        3d )            ; TTL por defecto
        IN NS   ns1.ipv6-rules.com.
; Entradas PTR IPv6
$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 DJBDNS

Actualmente hay algunos parches de terceros para DJBDNS disponibles en http://www.fefe.de/dns/ que le permiten servir nombres en IPv6. Se puede instalar DJBDNS con estos parches haciendo emerge con "ipv6" en sus opciones USE.

Advertencia
Todavía no todos los tipos de registro con estos parches tienen soporte. En particular, los registros NS y MX no están soportados.
root # emerge --ask djbdns

Una vez instalado djbdns, se puede configurar corriendo tinydns-setup y respondiendo a algunas preguntas sobre las direcciones IP en las que debe escuchar, donde instalar tinydns, etc.

root # tinydns-setup

Asumiendo que hemos instalado tinydns en /var/tinydns, editamos /var/tinydns/root/data. Este fichero contiene todos los datos necesarios para conseguir que tinydns gestione los DNS para su delegación IPv6.

CodeEjemplo de fichero de datos

## (*.ipv6-rules.com manejado de forma autoritaria 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 hacia host1)
3www.ipv6-rules.com:200104701f0002960000000000000002:86400

Se creará un registro AAAA y uno PTR para las líneas que comienzan por 6. Se creará solo un registro AAAA para aquéllas que comiencen por 3. Aparte de editar manualmente el fichero data, puede usar los guiones add-host6 y add-alias6 para añadir nuevas entradas. Una realizado los cambios al fichero data, simplemente necesitará lanzar make desde /var/tinydns/root. Así se creará /var/tinydns/root/data.cfb, usado por tinydns como su fuente de información para las peticiones DNS.

Enrutador IPv6

Configurar el enrutamiento

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

Bien definimos el valor 1 el el seudofichero de reenvíos:
root # echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Bien usamos la orden sysctl:

root # sysctl -w net.ipv6.conf.all.forwarding=1
Advertencia
El guión de inicio radvd, explicado en el próximo capítulo, habilita (y deshabilita) el reenvío, haciendo innecesario el siguiente paso.

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

CodeAdición a sysctl.conf

## (Si va a usar radvd, este paso es innecesario)
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 gestor.

Para asignar direcciones IPv6 a los clientes, la especificación IPv6 permite tanto la asignación sin estado y con estado. La asignación sin estado usa un proceso llamado anuncio de enrutador (Router Advertisement) y permite a los clientes obtener una dirección IP y una ruta predeterminada simplemente habilitando el dispositivo de red. Se denomina "sin estado" porque no se guarda ningún registro del estado de las IPs asignadas ni de los equipos a las cuales se asignan. La asignación 'con estado' se gestiona mediante DHCPv6. Se llama "con estado" porque el servidor conserva el estado de los clientes que han solicitado direcciones IP y las que han obtenido.

Configuración sin mantenimiento del estado

La configuración sin estado se lleva a cabo fácilmente utilizando el demonio de anuncio de enrutador (Router Advertisement Daemon), o radvd.

root # emerge --ask radvd

Después de hacer emerge de radvd, necesitamos crear /etc/radvd/radvd.conf que contiene información acerca del bloque IP que se usará para asignar. Aquí tiene un ejemplo del fichero radvd.conf usando el prefijo que nos ha asignado nuestro gestor.

CodeEjemplo de fichero radvd.conf

interface eth1
{
   ## (Envía mensajes de anuncio a otros equipos)
   AdvSendAdvert on;
   ## (La fragmentación es mala(tm))
   AdvLinkMTU 1280;
   MaxRtrAdvInterval 300;
   ## (El prefijo de subred IPv6 que nos ha  asignado nuestro PoP)
   prefix 2001:470:1F00:296::/64
   {
      AdvOnLink on;
      AdvAutonomous on;
   };
};
Advertencia
¡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!

Se puede obtener más información en man radvd.conf. Ahora podemos iniciar radvd y configurarlo para que se cargue al inicio.

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

Configuración para mantenimiento del estado

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

root # emerge --ask dibbler

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

CodeEjemplo de configuración del cliente dibbler

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

Ahora podemos arrancar el cliente dibbler y configurarlo para que se arranque en cada inicio.

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

Clientes IPv6

Usar radvd

Los clientes detrás de este enrutador deberían poder conectarse al resto a través de la red vía IPv6. Si está usando radvd, la configuración de las equipos debería ser tan sencillo como activar el dispositivo de red. (Probablemente ya lo hayan hecho sus guiones de inicio net.ethX).

root # ip link set eth0 up
root #
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

Otros recursos

Hay muchos los recursos excelentes en línea acerca de IPv6.


Sitios Web Recursos
www.ipv6.org Información General sobre IPv6
www.linux-ipv6.org/ Proyecto USAGI
www.deepspace6.net Sitio Linux/IPv6
www.kame.net Implementación BSD

En IRC, puede probar #ipv6 en Freenode. Puede conectarse a los servidores de Freenode mediante un cliente IPv6 a través de irc.ipv6.freenode.net.


Agradecimientos

Nos gustaría dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


  • Peter Johanson
  • Jorge Paulo
  • Sven Vermeulen
  • Camille Huot
  • Pasi Valminen
  • nightmorph
  • hwoarang