Cómo activar ipv6 en tu red con 6to4?

Imagen de Epe

Bueno, ahora con el agotamiento de las IPv4 desde hace unos meses, y la consabida certeza de que en poquísimos meses ya no habrán IPv4 disponibles, es necesario que vayas migrando lentamente tu red a IPv6. Es imperioso que ya lo vayas haciendo.

Pero cómo si tu proveedor de internet todavía no es ipv6 ready? Bueno, dejemos eso a un lado, y asumamos que cuando tu proveedor te indique claramente cómo usar ipv6 en su red podrías dejar este howto atrás.

Ahora asumamos que tu proveedor no tiene NPI (ni peregrina idea) de qué es ipv6... supón que tu le llamas y les preguntas: cómo activar ipv6 en mi router? Si la respuesta es:


i-pe-be-qué?

Entonces este howto es para tí!

Mira, mi proveedor me dijo eso, sin embargo yo quería probar ipv6 en los servidores que tenemos en norteamérica pues desde hace más de un año tenemos ipv6 en ellos disponibles... pero yo sólo podía hacer ping pues activarle no me era posible.

Así que me dediqué a buscar y encontré muchísimas formas, y varias funcionan.. pero simplemente esta me funcionó y así la tengo desde hace tiempo.

6to4 funciona de una forma un poco curiosa, hay como unos gateways en internet, que a propósito cualquier proveedor puede poner, con la IP 192.88.99.1, esta ip es una dirección anycast, el primer ruteador en internet que se tope conque yo quiero acceer a esta ip, actúa de proxy entre la red ipv4 mía y la red ipv6 de destino.

Entonces el objetivo es simplemente decirle a mi servidor linux que cuando vaya a solicitar algo por ipv6, lo envíe a esta dirección anycast.

Hay varios routers/servidores en internet que responden a esta dirección, ninguno en Ecuador todavía, una forma de salvar la situación por parte de los proveedores locales del país sería implementar esta dirección con un router ipv6 de forma tal que no tengamos que dar la vuelta tan larga.. en todo caso si mal no recuerdo cuando yo envío esa petición me responde un equipo de he (hurricane electric) en usa.. es decir, mi paquete viaja en ipv4 hasta estados unidos, y ahi es convertido a ipv6...

En todo caso me permite navegar.

Mi servidor linux tiene dos interfaces, una tiene la IP pública que me dá mi ISP y la otra tiene la IP privada que atiende a mi red local.

En la interfaz con la IP PÚBLICA agrego lo siguiente:


IPV6INIT="yes"
IPV6TO4INIT="yes"
IPV6TO4_RELAY="192.88.99.1"

Nada más... esto lo agrego abajo de toda la configuración normal que haces para tu ip... en mi caso queda así (esto puede variar en tu caso!):

cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
#HWADDR=44:87:fc:a2:71:ab
PEERDNS=no
IPV6INIT="yes"
IPV6TO4INIT="yes"
IPV6TO4_RELAY="192.88.99.1"

Entonces reinicio la red con service network restart

y listo, se hizo la magia!

mira (fíjate que uso ping6 y no ping):


ping6 ipv6.nuestroserver.com
PING ipv6.nuestroserver.com(2607:f748:1200:ff00::6) 56 data bytes
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=0 ttl=51 time=301 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=1 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=2 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=3 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=4 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=5 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=6 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=7 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=8 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=9 ttl=51 time=378 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=10 ttl=51 time=300 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=11 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=12 ttl=51 time=300 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=13 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=14 ttl=51 time=299 ms
64 bytes from 2607:f748:1200:ff00::6: icmp_seq=15 ttl=51 time=299 ms

--- ipv6.nuestroserver.com ping statistics ---
16 packets transmitted, 16 received, 0% packet loss, time 14999ms
rtt min/avg/max/mdev = 299.205/304.812/378.361/19.005 ms, pipe 2

Wow, los tiempos son medio puercos eh? Es que recuerda que hay que ir hasta un gateway que al momento está en EEUU y de ahi es que va a mi servidor... pero bueeeeno! Al menos funciona.

Después presenté un problema con el squid, el squid conque viene centos por alguna razón no me funcionaba, no recuerdo! y si alguien lo encuentra me dice... en todo caso simplemente lo bajé de aquí: http://www.jur-linux.org/rpms/el-updates/5/i386/

y el archivo squid.conf mío dice así:


egrep -v ^# /etc/squid/squid.conf|egrep -v ^$
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443 81 88 444 19638 7777 1863 5050 5222
acl Safe_ports port 80 88 444 81
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

Con esto mi squid puede entender y realizar peticiones tipo ipv6 y listo... puedo navegar...

mis máquinas de la red local tienen ipv4, todas... sin embargo cuando se hace una petición para ver la web por ejemplo: http://ipv6.nuestroserver.com como responde un record AAAA entonces toda la petición sale por el gateway de ipv6.

En este sitio probé que me funcionaba:
http://ipv6-test.com/

Y me sale algo así:

Estas pruebas me dicen que estoy un 70% listo:

Y así se vé mi sitio web con ipv6 (le puse un record separado pues tengo dudas todavía, pero quizá le ponga un record A y uno AAAA para www):

En teoría, si un sitio que quiero visitar tiene ipv4 e ipv6 (records A y AAAA), el sistema se decanta por ipv6 (es decir, usa ipv6)... en realidad esto lo implementé hace meses y no noto problema alguno, aunque ahora que escribo me recuerdo que a veces notamos la red "lenta" debe ser porque se está yendo a través del proxy por ipv6... pero supongo que los ISP pronto puedan implementar el gateway de 4to6 en las redes locales y no se notará ningún problema en la conectividad.

suerte!

Comentarios