domingo, 3 de mayo de 2009

Windows XP como Access Point wireless

Hace un par de dias se dano el Access Point de mi casa y en realidad los dias fueron horribles. Tuve que regresar a estar atado a un punto fijo en la pared de mi casa!. Sentia que yo no era productivo, que perdia tiempo, etc. Y no hablar de los comentarios de mi esposa: "En casa de herrero cuchillo de palo", y cosas similares.

En mi afan de solucionar y gracias a que tenemos varios computadores en la casa, decidi probar en colocar mi Linux como AP y para mi sorpresa: SI se puede!.., wow, muy buena noticia. La mala noticia es que la tarjeta de red que tengo (Broadcom 43XX) no soporte colocarla en modo master (iwconfig wlan0 mode master).

En fin averiguando en Internet consegui una solucion poco elegante pero que al menos iba a funcionar momentaneamente. Colocar un Windows XP en modo ad-hoc y cableado hacia la red Banda Ancha. Voila!.., funciono.

El procedimiento es el siguiente:

1) Coloca como direccion IP de tu red Wireless el IP: 192.168.0.1 (no puedes utilizar otro IP)

2) Instala un DHCP server si quieres que los equipos Wireless se conecten facil a tu red. Recomiendo http://tftpd32.jounin.net/ (que tambien recomiendo como TFTP server). Asegurate que el DHCP se encuentre entregando IPs por la interfaz Wireless. Seria algo similar a:




3) Luego en la interfaz de redes Wireless, realiza lo siguiente:
* Crea una nueva red con el nombre que desees. Por ejemplo Acosta
* Asegura dejar la autenticacion Abierta y el cifrado Sin cifrar
* Finalmente, asegurate de marcar el check box que indica Ad-HOC al final de la panatalla.

Nota: En este momento ya puedes ir a otro PC y buscar redes Wireless y ver tu red listada.

4) Click en Inicio --> Conectar a --> Mostrar todas las conexiones

5) Click derecho sobre la conexion cableada --> Propiedades --> Avanzada --> Permitir otras computadoras a utilizar esta conexion. Quedaria algo asi:




6) Aceptar --> Aceptar



Y eso es todo. Busca el otro equipo con el que te quieres conectar Wireless y disfrute de tu nuevo AP.

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!.

martes, 28 de abril de 2009

Ejemplo VPN entre Juniper y Cisco

El siguiente ejemplo muestra la creación de una VPN entre un Firewall Juniper con ScreenOS 5.4 y un Cisco router con el set de Crypto.

La topología es la siguiente:

LAN_lado_Juniper <----> Juniper <---- INTERNET <---> Cisco <--- LAN_lado_Cisco --->

Del lado del Cisco la configuración es la siguiente:

*** BEGIN ***
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp key MISECRETO address IP_JUNIPER


crypto map MIVPN 1 ipsec-isakmp
set peer IP_REMOTO
set transform-set MIVPN
match address 140

access-list 140 permit ip LAN_LADO_CISCO 0.0.0.255 LAN_LADO_JUNIPER
crypto ipsec transform-set VPN_to_SW7B esp-3des esp-sha-hmac

interface f0/0
description VPN-SUICHE7B
ip address IP_CISCO 255.255.255.255
crypto map MIVPN
end

*** FIN ***

Aqui podemos ver que el isakmp map utiliza shared secret (clave compartida) para levantar la VPN, MISECRETO es la clave y donde indica IP_JUNIPER hay que colocar el IP del Firewall de la interfaz externa del Juniper.

Luego el Crytp map llamada MIVPN indica el Peer Remoto (nuevamente el IP de la interfaz externa del Juniper, el transform set a utilizar (donde se indica lo que es la fase 2 de la negociación de la VPN) y finalmente el Access-list (ACL con el cual va a hacer match al momento de cifrar y no cifrar los paquetes).

El ACL en realidad define los SA (security association) que se van a intercambiar en la VPN. Es muy importante que utilices un ACL extendido para que puedas definir IPs origen y destino. Es decir, aqui se definen (desde la perspectiva del cisco) cuales son las redes remotas y cuales son las redes locales.

Luego el comando crypto ipsec es en realiad quien define que tipo de cifrado y hash para los datos se va a utilizar. En este caso 3DES y SHA1, sin embargo se puede utilizar DES, MD5, combinaciones y otros.

Finalmente, lo que hay que hacer es aplicar el cryto map a la interfaz por donde va a "transitar" el tráfico en el Cisco, en nuestro caso F0/0

Con lo anterior, ya terminamos con el lado del Cisco...., ahora vamos a Juniper.

Pasos:

1) Crear una interfaz tunnel (tunnel -- interfaces --- new interface) con los siguientes parametros:
* Unnumbered
* Interfaz WAN del Juniper
2) VPN --> Autokey advance --- Gateway
3) New

Debemos dejar la configuración como aparece en la siguiente pantalla:



4) Click en Advance
5) Dejar la configuración como aparece en la siguiente pantalla:



6) VPN --> Autokey advance --- Gateway

7) Click en new

8) Dejar la configuración similar a como aparece en la imagen:



9) Click en advance

10) Dejar la configuración como a aparece en la imagen:



11) Comenzar a pasar tráfico por el tunel (MUY IMPORTANTE)

Luego de esto.., ya debe comenzar a funcionar el tunel sin inconvenientes. La típica prueba en este caso es dejar un ping extendido entre ambos sitios.

Suerte y saludos,

BGP en IPv6 y Cisco

Configurar BGP sobre IPv6 en Cisco es parecido a IPv4.
En realidad los principios son los mismos de IPv4 tales como:
* Debe existir una ruta en la tabla de enrutamieto para que sea publicada vía BGP
* Hay que crear el peering con el equipo remoto
* Colocar filtros correspondiente tales como filtros entrantes y salientes

Antes de crear la sesión BGP hay que conocer:
* Dirección IPv6 local
* Subred IPv6 a publicar
* Dirección IPv6 remota
* Password (opcional)

Un ejemplo de configuración de BGP sobre IPv6 sería:

router bgp 65501
bgp log-neighbor-changes
neighbor 2820:22:1:1::1 remote-as 1111
neighbor 2820:22:1:1::1 update-source POS3/0
!
address-family ipv6
neighbor 2820:22:3:1::1 activate
network 2820:26::/32

En caso de querer levantar sobre el mismo enlace una sesión BGP en IPv4 es necesario también el siguiente comando:

address-family ipv4
neighbor 2820:22:3:1::1 activate

Comandos utiles para troubleshooting:

1) sh bgp ipv6 unicast (vemos los prefijos ipv6 aprendidos por BGP)
2) sh bgp ipv6 unicast neighbors 2820:22:3:1::1 advertised-routes (prefijos IPv6 que nosotros publicamos al peer)
3) show ipv6 route

Suerte!

jueves, 23 de abril de 2009

IPv6 y Apache

En esta oportunidad indicaré como se configura Apache con soporte para IPv6.
La buena noticia es que a partir de Apache 2.0 el soporte IPv6 viene intrinsico dentro de Apache y en realidad no hay que hacer nada.
Debajo de estas lineas encontraras una configuración que funciona perfectamente en un servidor dualstack ipv4/ipv6 y que adicionalmente posee los comandos ErrorLog y CustomLog para un virtualhosting en IPv6. La ventaja de esta configuración es que permite dentro del mismo servidor separar los logs ipv6 de los ipv6.

La configuración es la siguiente:





Posteriormente reinicias Apache (service httpd restart o /etc/init.d/apache restart) y listo!.

Ahora bien, para revisar que efectivamente tu servidor se encuentre escuchando en el puerto 80 tcp ejecuta los siguientes comandos:

#netstat -pan | grep 80
y
#telnet ::1 80

Con el primer comando puedes ver si tu servidor se encuentra escuchando en IPv6 en el puerto 80. Busca un string similar a:
tcp 0 0 :::80 :::* LISTEN 24972/httpd

y con el segundo comando puedes revisar que efectivamente el puerto 80 responda. El output sería similar al siguiente:

[root@www ~]# telnet ::1 80
Trying ::1...
Connected to ::1 (::1).
Escape character is '^]'.


Saludos,

martes, 21 de abril de 2009

Actualizar el bootrom de un telefono Polycom

En día de hoy tuve la necesidad de actualizar el bootrom de un telefono Polycom. Este es el procedimiento:

* Bajar el software necesario de: http://polycom.com/support/voice/soundpoint_ip/soundpoint_ip501.html

* Colocar el archivo bootrom.ld en el servidor de provisioning

* Reiniciar el teléfono.
El teléfono detectará la nueva versión y realizará el proceso de manera automática. Verás varias pantallas como: formateando el filesystem, reiniciando, etc. No te preocupes
Mi recomendación: utiliza primero solo un teléfono antes de realizarlo con toda la red.

* Listo!.., verifica la version dentro del menú del teléfono.

Suerte!.

Solución a: Error: eth0 interface name is not allowed for R2 node when network mode is not set to none

Problema:   Containerlab devuelve un error similar: Error: eth0 interface name is not allowed for R2 node when network mode is not set to no...