VPSs y mas.

sábado, 2 de mayo de 2009

Crear un tunel IPv6 in IPv4 entre Cisco y Linux

Tengo la fortuna de trabajar para un ISP con IPv6 implementado. Voy a explicar el procedimiento para levantar un tunel IPv4 para pasar paquetes IPv6 entre un router Cisco y un PC con Linux.

Topologia:

PC Linux (2820:26:11::/64) ------ RED IPv4 (ISP) ----- Cisco router (Ipv4 e IPv6) ---- RED IPv6

Comenzaremos configurando el Cisco:

Es necesario crear una interfaz tunnel similar a la siguiente:

interface Tunnel0
description Tunel hacia mi casa
no ip address
ipv6 address 2820:26:10::1/64
ipv6 enable
tunnel source 210.57.51.107
tunnel destination 211.28.235.85
tunnel mode ipv6ip
end

ipv6 route 2820:26:11::/64 Tunnel0

Explicacion:
En la configuracion anterior se aprecia que hay que indicarle la direccion IPv4 fuente, la direccion IPv6 destino y una direccion IPv6 al tunel. El modo del tunel es lo mas importante el cual indica que son paquetes ipv6 en ipv4. Recordemos que Cisco soporta muchos tipos de tunel y recomiendo ser explicito. Adicionalmente el modo del tunel concuerda con el tipo de tunel que vamos a utilizar en Linux (modo sit). Notese que la direccion IPv4 origen del tunel puede ser cualquier IPv4 configurado en el router (una loopback, otra interfaz, etc).
Por ultimo, el comando ipv6 route indica la red que va a manejarse del lado del linux. Muy importante para que exista conectividad y enrutamiento dentro del tunel.

A configurar el linux:

Del lado del Linux es mas facil de lo que uno esperaria. Estos son los comandos utilizados por mi persona:

ifconfig eth0 add 2820:26:11::1/64
ifconfig sit0 tunnel ::210.147.51.107
ifconfig sit1 up
route -A inet6 add ::0/ dev sit1
ping6 2820:26:10::1

Explicacion:
El primer comando le indica la red IPv6 a la interfaz eth0.
El segundo comando indica la interfaz sit (modo ipv6 en ipv4) y el IPv4 donde va a terminar el tunel. El comando route indica la ruta por defecto para que sea enviado por la interfaz sit 1.

Luego de esto, estamos listos para probar la conexion. Primero, vamos a ubicarnos del lado del Linux:

Lo primero es realizar un ping al IPv6 del tunel
[root@localhost ~]# ping6 2800:26:10::1 -c 4
PING 2800:26:10::1(2800:26:10::1) 56 data bytes
64 bytes from 2820:26:10::1: icmp_seq=1 ttl=64 time=153 ms
64 bytes from 2820:26:10::1: icmp_seq=2 ttl=64 time=154 ms
64 bytes from 2820:26:10::1: icmp_seq=3 ttl=64 time=153 ms
64 bytes from 2820:26:10::1: icmp_seq=4 ttl=64 time=152 ms

Luego un ping6 a ipv6.google.com:
[root@localhost ~]# ping6 ipv6.google.com -c 4
PING ipv6.google.com(qw-in-x68.google.com) 56 data bytes
64 bytes from qw-in-x68.google.com: icmp_seq=1 ttl=55 time=232 ms
64 bytes from qw-in-x68.google.com: icmp_seq=2 ttl=55 time=229 ms
64 bytes from qw-in-x68.google.com: icmp_seq=3 ttl=55 time=230 ms
64 bytes from qw-in-x68.google.com: icmp_seq=4 ttl=55 time=231 ms

Tambien recomiendo hacer traceroute y el primer salto que veras es el IPv6 del Cisco.

Ahora bien, del lado del Cisco podemos ver la cantidad de paquetes que han transitado por la interfaz tunel y comprobar el incrementos de paquetes:

#sh int tunne0
Linkstar_PBR#sh int tunnel 0
Tunnel0 is up, line protocol is up
Hardware is Tunnel
Description: Tunel a mi casa
MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 210.147.51.107, destination 211.28.235.85
Tunnel protocol/transport IPv6/IP
Tunnel TTL 255
Fast tunneling enabled
Tunnel transmit bandwidth 8000 (kbps)
Tunnel receive bandwidth 8000 (kbps)
Last input 00:00:07, output 00:00:06, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/0 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
19 packets input, 2736 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
51 packets output, 5540 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 output buffer failures, 0 output buffers swapped out

En otra oportunidad indicare como hacer que toda tu red navegue en IPv6 dentro del Tunel.

Suerte y exitos,

viernes, 1 de mayo de 2009

Instalar Mandriva sin unidad de CD

En esta oportunidad voy a explicar el procedimiento de instalacion de Linux Mandriva en un equipo sin utilizar unidad de CDROM. En dos oportunidades me ha ocurrido que necesidad de cambiar el Mandriva de mi Laptop sin embargo no tengo el CD de instalacion a la mano y no quiero ir a un sitio a comprar un CD en blanco y luego quemar el iso.

El procedimiento indicado aqui es un extracto, adaptacion y traduccion de una excelente referencia que consegui en: http://wiki.mandriva.com/en/Docs/Installing_Mandriva_Linux#Booting_the_installer_direct_from_a_hard_disk_-_Linux_method

Por ello la siguiente explicacion:

Primero, en el linux actual bajar el ISO de mandriva de cualquier repositorio en Internet. Por favor bajarlo en una particion que durante la instalacion no sea necesario formatear (por ejemplo NO bajarlo en /). Adicionalmente debes recordar el directorio donde lo bajaste y a que particion pertenece (sda3, hda2, etc)

Posteriormente es necesario extraer dos archivos del iso bajado, para ello es necesario montar el iso como loop. El comando es similar al siguiente:

mkdir /mnt/iso
mount -t iso9660 -o ro,loop /home/mandriva2009.iso /mnt/iso

Luego vamos a copiar al directorio /boot los siguientes archivos. Personalmente prefiero cambiar el nombre durante la copia:

cp /mnt/iso/x86_64/isolinux/alt0/allnew.rdz /boot/allnew.rdz
cp /mnt/iso/x86_64/isolinux/alt0/vmlinuz /boot/vmlinuznew

Es importante que identifiques correctamente tu arquitectura (i586 o x64).

Posteriormente es necesario indicarle a tu boot-loader (grub o lilo) la existencia de dichos archivos. En mi caso quedo de la siguiente manera utilizando grub:

title mandriva2009
kernel (hd0,0)/boot/vmlinuznew root=/dev/ram3 ramdisk_size=32000 vga=791
initrd (hd0,0)/boot/allnew.rdz

Para prevenir cualquier error recomiendo que utilicen una entrada ya existente y te bases en ella unicamente cambiando los nombre de kernel e initrd.

Voila!.., reinicia tu equipo y escoje mandriva2009 al momento del arranque y sigue el procedimiento de instalacion.

Suerte!.