suburbia





 
Conecta tu red a Internet con IPv6 y protegela con el firewall ip6tables
w0w0
dimanche 23 janvier 2005
Conectarse a Internet con IPv6 no es nada difícil hoy en dia. Existen numerosos servicios en Internet que te ofrecen conectividad mediante los llamados Tunnel Brokers, aunque lo ideal sería que nuestro ISP nos ofreciera acceso de forma nativa. Si solo quieres conectar un host y no tienes ganas de complicarte la vida, quizá la mejor opción sea usar el servicio de Freenet6 pero si quieres conectivad para toda tu red y tener la posibilidad de configurar la resolución inversa DNS, sigue leyendo, aquí apunto algunas notas que te pueden ayudar.

Yo he optado por solicitar una red con un prefijo /64 en BT Exact, lo que me da la posibilidad de tener 2^64 = 18446744073709551616 direcciones :), y me han asignado la red 2001:618:400:87ec ::/64 as ? que en mi servidor Debian, que tambi ?n es el gateway de mi red, lo configuro editando el archivo /etc/network/interfaces y a ?adiendo :


iface eth1 inet6 static
  address 2001:618:400:87ec::1
  netmask 64

auto sixbone
iface sixbone inet6 v4tunnel
address 2001:618:400::501c:a2fc
netmask 128
endpoint 213.121.24.85
up ip route add ::/0 dev sixbone

eth1 es la interfaz que me conecta con Internet y sixbone es la interfaz que usamos para crear el t ?nel contra nuestro Tunnel Broker. Alguna configuraci ?n interesante para el kernel, via /etc/sysctl.conf :


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

La configuraci ?n de los clientes de la red es muy sencilla, en mi caso basta con a ?adir a /etc/network/interfaces :


iface eth0 inet6 static
  address 2001:618:400:87ec::2
  netmask 64
  up ip -6 route add default via 2001:618:400:87ec::1 dev eth0

Ahora viene lo bueno, la configuraci ?n DNS. Para a ?adir nuevas entradas a tu zona, en vez de usar registros A usaremos registros AAAA, por ejemplo :


$ORIGIN ipv6.sysnetworks.net.
velouria   IN   AAAA   2001:618:400:87ec::1
bonemachine   IN   AAAA   2001:618:400:87ec::2

Comprobamos que resuelve bien haciendo una consulta a registros AAAA :


velouria:~# host -t aaaa velouria.ipv6.sysnetworks.net
velouria.ipv6.sysnetworks.net has AAAA address 2001:618:400:87ec::1

Solo nos queda configurar la resoluci ?n inversa, previa solicitud de delegaci ?n a nuestro Tunnel Broker, mediante la configuraci ?n de las zonas ip6.arpa, y por compatibilidad con servidor DNS antiguos la zona ip6.int. En el fichero named.conf de nuestro servidor DNS a ?adiriamos algo como :


zone "c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.int" {
  type master;
  file "/etc/bind/reverse-2001-618-400-87ec_64.IP6.INT";
}
       

zone "c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.arpa" { type master; file "/etc/bind/reverse-2001-618-400-87ec_64.IP6.ARPA"; }

Aqu ? tienes la configuraci ?n de mis zonas, por si te sirve de ayuda :

- reverse-2001-618-400-87ec_64.IP6.INT


; 2001:618:400:87ec::/64
;
$TTL 3d        ; Default TTL (bind 8 needs this, bind 9 ignores it)
@        IN SOA c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.int.
root.sysnetworks.net. (
                2004082005        ; Serial number (YYYYMMdd)
                24h                ; Refresh time
                30m                ; Retry time
                2d                ; Expire time
                3d                ; Default TTL (bind 8 ignores this, bind 9 needs it)

)

                               ; Name server entries
                               IN     NS     velouria.sysnetworks.net.
                                                                IN        NS        ns.sysnetworks.net.

$ORIGIN c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.int.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR     velouria.ipv6.sysnetworks.net.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR     bonemachine.ipv6.sysnetworks.net.
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR     isa.ipv6.sysnetworks.net.

- reverse-2001-618-400-87ec_64.IP6.ARPA


; 2001:618:400:87ec::/64
;
$TTL 3d        ; Default TTL (bind 8 needs this, bind 9 ignores it)
@        IN SOA c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.arpa. root.sysnetworks.net. (
                2004082005        ; Serial number (YYYYMMdd)
                24h                ; Refresh time
                30m                ; Retry time
                2d                ; Expire time
                3d                ; Default TTL (bind 8 ignores this, bind 9 needs it)
)

                               ; Name server entries
                               IN     NS     velouria.sysnetworks.net.
                                                                IN        NS        ns.sysnetworks.net.

$ORIGIN c.e.7.8.0.0.4.0.8.1.6.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     velouria.ipv6.sysnetworks.net.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR     bonemachine.ipv6.sysnetworks.net.
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0         IN      PTR     isa.ipv6.sysnetworks.net.

Para comprobar el buen funcionamiento, volvemos a hacer una consulta para obtener el nombre de dominio a partir de la direcci ?n IP :


velouria:~# host 2001:618:400:87ec::1
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.e.7.8.0.0.4.0.8.1.6.0.1.0.0.2.ip6.arpa
domain name pointer velouria.ipv6.sysnetworks.net.

Firewall IPv6 con ip6tables

Si ya tienes conexi ?n IPv6 a Internet quiz ? te interese saber que montarse un firewall en GNU/Linux con ip6tables es muy similar a hacerlo para IPv4, aqu ? os dejo el mio :


#!/bin/sh
# Firewall IPv6 para velouria.ipv6.sysnetworks.net

# Variables
fw6="/sbin/ip6tables"
anywhere="::/0"
localhost="::1"
my_net="2001:618:400:87ec::/64"

# Limpiar todas las reglas
$fw6 -F
$fw6 -X

# Pol?tica por defecto
$fw6 -P OUTPUT ACCEPT
$fw6 -P INPUT DROP
$fw6 -P FORWARD DROP

# Aceptar conexiones de localhost y
# de nuestra red
$fw6 -A INPUT -s $localhost -j ACCEPT
$fw6 -A INPUT -s $my_net -j ACCEPT

# Permitimos salir a nuestra red
# El NAT es cosa del pasado :)
$fw6 -A FORWARD -s $my_net -d $anywhere -j ACCEPT

# Aceptar ICMPv6
$fw6 -A FORWARD -p ipv6-icmp -j ACCEPT
$fw6 -A INPUT -p ipv6-icmp -j ACCEPT

# Connection tracking b?sico. Revisar...
$fw6 -A FORWARD -p tcp ! --syn -j ACCEPT
$fw6 -A INPUT -p tcp ! --syn -j ACCEPT

# Aqu? los servicios que vaya abriendo
# al exterior

No tiene mucho misterio, aunque hay un tema que no he encontrado en el manual y es ?c ?mo permitir atravesar el firewall a conexiones previamente establecidas ?. Esto con IPv4 lo haciamos con :


-m state --state RELATED,ESTABLISHED

Con ip6tables no he visto nada similar as ? que puse una chapucilla pero creo que hace lo que quiero :


-p tcp ! --syn -j ACCEPT

Osea, solo dejar pasar conexiones que no tengan el bit SYN activado.

Referencias en la red :
- The Linux Network Administrator’s Guide
- Linux IPv6 HOWTO
- DNS HOWTO
- Documentaci ?n de Debian GNU/Linux
- IPV6
- IP6tables


Por w0w0

Este texto est ? bajo la licencia Creative Commons Atribuci ?n-CompartirIgual 2.1. Usted es libre :

- de copiar, distribuir, exhibir y comunicar la obra

- de crear obras derivadas

Bajo las siguientes condiciones : Reconocimiento. Vd. debe reconocer y dar cr ?dito al autor original.CompartirIgual. Si usted altera, transforma, o trabaja sobre esta obra, usted puede divulgar la obra resultante solamente bajo los t ?rminos de una licencia id ?ntica a ?sta.

- Para cualquier utilizaci ?n o distribuci ?n, usted debe informar claramente a terceros sobre los t ?rminos de la licencia de esta obra.

- Cualquiera de estas condiciones pueden ser modificada si usted consigue el permiso del autor. Su derecho a un uso justo y leg ?timo de la obra, as ? como otros derechos no se ven de manera alguna afectada por lo anterior.

 ?ste es un resumen del c ?digo legal que puede encontrarse en : www.creativecommons.orglicenses/by-sa/2.1/es/

sinDominio  Creative Commons

Esta publicación esta bajo licencia creative commons, ello no evita la publicación de otros materiales en otro tipo de licencias libres. Por tanto, se permite difundir, citar y copiar literalmente sus materiales, de forma íntegra o parcial, por cualquier medio y para cualquier propósito, siempre que se mantenga esta nota y se cite procedencia. Suburbia no asume ninguna responsabilidad por los articulos que envian los participantes en este sitio. Toda la responsabilidad para verificar la veracidad y los derechos de reproducción de un envío corresponden al autor/a que lo publica. Al publicar material en este sitio, el o la autora del envío asume que puede ser redistribuido libremente.

suburbia@sindominio.net