Guía del enrutador IPv6 en Gentoo
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 --->
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
|
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.
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 la orden ip, haríamos lo siguiente:
Listado de Código 2.1: Configuración de un túnel IPv6 |
# ip tunnel add sixbone mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0
# ip link set sixbone mtu 1280
# ip link set sixbone up
# ip addr add 2001:470:1F00:FFFF::189 dev 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
Haciendo emerge de los paquetes de nuevo
A menos que ya tenga USE="ipv6" en
/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 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 relacionadas 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 |
options {
[...]
listen-on-v6 { any; }
[...]
};
zone "ipv6-rules.com" IN {
type master;
file "pri/ipv6-rules.com";
};
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:192.168.0.1:a:259200
.6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa:192.168.0.1:a
6host1.ipv6-rules.com:200104701f0002960000000000000001:86400
6host2.ipv6-rules.com:200104701f0002960000000000000002:86400
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
{
AdvSendAdvert on;
AdvLinkMTU 1280;
MaxRtrAdvInterval 300;
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!
|
Se dispone de información más detallada en man radvd.conf.
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.
En el IRC, puede probar #ipv6 en Freenode. Puede conectarse a los
servidores de Freenode mediante IPv6 usando
irc.ipv6.freenode.net.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|