Instalar Cisco PacktTracer en Debian/Ubuntu 64bits

por Rubén Urrieta

luego de descargar el archivo PacketTracerv5.XXX_i386_deb.bin de la pagina de cisco o de algún blog, como usuario root, procedemos a darle permisos de ejecución al archivo binario

chmod 764 PacketTracerv5.XXX_i386_deb.bin

luego podemos ejecutarlo para iniciar su instalación

/ruta_del_archivo/PacketTracerv5.XXX_i386_deb.bin

aparecerá un mensaje de bienvenida, la licencia del programa y luego intentara instalar la aplicación, pero, saldrá mostrando un error de arquitectura, no se preocupen por eso, una vez finalizada la ejecución copiamos el archivo PacketTracer-XXXXXX-u.i386.deb que se descomprimió en la carpeta temporal dentro de una carpeta que se llama selfextract.XXXXXX por ejemplo:

root@rb34:/home/ruben# cp/tmp/selfextract.A3FHdV/PacketTracer-5.3_3-u.i386.deb /home/ruben/

tambien pueden descargar este archivo desde aqui
luego de esto podemos forzar su instalación con el siguiente comando

dpkg -i —force-architecture PacketTracer-5.3_3-u.i386.deb

luego de ejecutar este comando ya tendremos la aplicación instalada, pero, si intentamos ejecutarla desde su lanzador intentara ejecutarse y se cerrara sin dar ningún mensaje, si la ejecutamos desde la consola como usuario normal con el siguiente comando:

/usr/local/PacketTracer5/bin/PacketTracer5

aparecerá un mensaje que nos dice que hace falta una librería, esta librería podemos copiarla desde un computador que tenga instalado una distribución basada en debian de 32bits que tenga instalado PacketTracer desde la carpeta /lib/ , pero también podemos descargarla desde aquí luego que tengamos la librería que necesitamos la copiamos dentro de nuestro sistema de 64bits en la carpeta /lib32/ por ejemplo

cp Dropbox/libpkt/libQtWebKit.so.4 /lib32/

si ejecutamos de nuevo la aplicación aparecerá otro mensaje pidiendo otra librería por lo cual deberemos repetir el paso anterior para esta otro librería, si queremos conocer todas las librerías que hacen falta podemos ejecutar el comando

ldd /usr/local/PacketTracer5/bin/PacketTracer5

y nos dara una salida como esta

  root@rb34:/home/ruben# ldd /usr/local/PacketTracer5/bin/PacketTracer5   
    linux-gate.so.1 =>  (0xf7792000)  
    libQtWebKit.so.4 => not found  
    libQtScript.so.4 => not found  
    libQt3Support.so.4 => not found  
    libQtSql.so.4 => not found  
    libQtXml.so.4 => not found  
    libQtGui.so.4 => not found  
    libXext.so.6 => /usr/lib32/libXext.so.6 (0xf7760000)  
    libX11.so.6 => /usr/lib32/libX11.so.6 (0xf7643000)  
    libQtNetwork.so.4 => not found  
    libQtCore.so.4 => not found  
    librt.so.1 => /lib32/librt.so.1 (0xf7639000)  
    libpthread.so.0 => /lib32/libpthread.so.0 (0xf7620000)  
    libdl.so.2 => /lib32/libdl.so.2 (0xf761c000)  
    libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7530000)  
    libm.so.6 => /lib32/libm.so.6 (0xf750a000)  
    libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf74ed000)  
    libc.so.6 => /lib32/libc.so.6 (0xf738f000)  
    libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7376000)  
    /lib/ld-linux.so.2 (0xf7793000)  
    libXau.so.6 => /usr/lib32/libXau.so.6 (0xf7373000)  
    libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf736e000)  

todas aquellas que aparezcan con resultado not found son las que nos hacen falta y podemos copiarlas todas juntas por ejemplo

root@rb34:/home/ruben/Dropbox/libpkt# cp libQtWebKit.so.4 libQtScript.so.4 libQt3Support.so.4 libQtSql.so.4 libQtXml.so.4 libQtGui.so.4 libQtNetwork.so.4 libQtCore.so.4 libglib-2.0.so.0 libgthread-2.0.so.0 libpcre.so.3 /lib32/

si ejecutamos de nuevo el comando ldd nos deberían aparecer todas las librerías cumplidas, si hace falta alguna que no aparecía antes la agregamos también, luego de que copiemos todas las librerías podemos ejecutar nuestra aplicación ya sea desde su lanzador o desde la linea de comandos…

Balanceo de Carga entre Gateways con un Router Linux

por Rubén Urrieta

si tienen varias conexiones a Internet y quieres usarlas todas al mismo tiempo este yuca es para ti, lo que debes tener en cuenta es que no vas a poder usarlas todas en la misma descarga, debido a que cada conexión tiene un rango de direcciones ip diferente y ningún servidor soporta una conexión desde múltiples IP’s, lo que si se puede, es descargar desde varios servidores, o varios archivos del mismo servidor.

lo primero que debemos tener es un router con Linux funcionando y eliminar (o comentar) del archivo /etc/network/interfaces las lineas gateway.

luego definir en /etc/iproute2/rt_tables una tabla de rutas por cada conexión a internet que tengas

echo 200 tabla1 » /etc/iproute2/rt_tables
echo 201 tabla2 » /etc/iproute2/rt_tables

donde 200 y 201 son identificadores internos que no deben repetirse, los desarrolladores del kernel recomiendan que este sea un numero mayor o igual a 200; y tabla1 y tabla2 es el nombre que usaremos para referirnos a esta.

luego nos valemos de un script (que esta bien comentado) para realizar el balanceo de carga.

#!/bin/bash  

c=0 #dos variables que usaremos mas adelante  
max=2  

if1=eth0 #interface donde tenemos conectada la primera la conexión 
ip1=200.20.110.194 # ip que esta configurada en esta interface  
gw1=200.20.110.193 #gateway de esta conexión 
net1=200.20.110.192/29 #red de esta conexión 

#estos son los mismos datos pero de la otra conexión  
if2=eth2  
ip2=190.202.85.201  
gw2=190.202.85.202  
net2=190.202.85.200/29  

case "$1" in 
#un case para recibir un parámetro 
        start)  
                #adicionar la red publica del e1 a la tarjeta de red conectada al e1 en la tabla de enrutado con nombre tabla1  
                ip route add $net1 dev $if1 src $ip1 table tabla1  
                #gateway para la tabla tabla1  
                ip route add default via $gw1 table tabla1  
                ip route add $net1 dev $if1 src $ip1 table tabla2  
                #lo mismo de arriba pero para la tabla2  

                ip route add $net2 dev $if2 src $ip2 table tabla1 
                ip route add $net2 dev $if2 src $ip2 table tabla2  

                ip rule add from $ip1 table table1  
                ip rule add from $ip2 table table2  
                ip route add default scope global nexthop via $gw1 dev $if1 weight 1 nexthop via $gw2 dev $if2 weight 2

                ip route add 172.16.0.0/24  via         172.18.197.2         #aqui agragamos una red a la que accedemos utilizando otro router (si no tenemos otra red podemos quitar esta linea)  

                ip route |grep proto >> ip_route_main.autotmp   #agregamos en un archivo todas las rutas directamente conectadas a nuestro router  

                while [ "$c" -lt "$max" ]; #hacemos un ciclo cuyas iteraciones están definidas por las variables que definimos al principio del script  
                do  
                   case "$c" in  
                       0)  
                               table=tabla1  
                               ip route add default via $gw1 table $table  
                       ;;
                       1)  
                               table=tabla2  
                               ip route add default via $gw2 table $table  
                       ;;  
                       *)  
                echo "aqui hay un error"  
                       ;;  
                   esac  
                   c=$(( c + 1 )) # amuntamos el valor de la variable c  
                   ip route add 172.16.0.0/24   via         172.18.197.2        table $table  # agregamos la red externa a las nuevas tablas (si no tenemos otra red podemos quitar esta linea)  
                   echo "configurando la tabla de enrrutado para: $table"  # un mensaje para saber donde esta  

                   while read red dev eth proto kernel scope link src ip  #un ciclo para agregar las rutas del main en las nuevas tablas 
                   do  
                        ip route add $red dev $eth src $ip table $table #agrega la red la tabla que toque segun el primer ciclo...   
                   done < ip_route_main.autotmp #aqui definimos el archivo que usara para agregar las redes    
              done  #fin del primer ciclo  


        ip rule add from 172.16.1.229   table tabla1  #aqui podemos definir si queremos que una dirección ip de la red local use una tabla de rutas especifica  
        ip rule add from 172.16.1.230   table tabla2  


    ;; #fin para cuando se ingresa con el parametro start  
       #aqui ya el balanceador esta totalmente activo, si queremos 
       #detenerlo colocamos el parametro stop y se ejecutaran las 
       #siguientes lineas...
        stop)
                    while [ "$c" -lt "$max" ];  
                    do  

                           case "$c" in
                                0)
                                            table=tabla1  
                                ;;  
                                1)  
                                            table=tabla2  
                                ;;  
                                *)  
                                            echo "aqui hay un error"  
                                ;;  
                           esac  

                           c=$(( $c + 1 ))   

                          /sbin/ip route |grep -v 169.254.0.0|grep \/ >> ip_route.autotmp #tomamos las rutas de la tabla main  
                          while read red dev nic proto kernel escope link src ip metric metricnun  
                          do  
                                ip route del $red table $table #borramos las redes de las nuevas tablas
                          done < ip_route.autotmp  
                          ip route del default table $table #borramos la ruta por defecto de la tabla  
                        done  
                    done  

                    /sbin/ip rule |grep lookup |grep -v all >> rule.autotmp  
                    while read nun from parametro look table2  
                    do  
                                ip rule del from $parametro table $table2 #borramos las reglas para las direcciones especificas  
                    done < rule.autotmp  

                    echo " el balanceador a sido detenido "  
        ;;  
        restart)  

                    #si hacemos algun cambio en la parte de start y queremos que 
                    #estos cambios tengan efecto ejecutamos el script con el parametro 
                    #restart para que se detenga y se inicie de nuevo  

                    $0 stop  
                    $0 start  
                    echo "el balanceador se a reiniciado"  
        ;;  
        *)  
                    echo "parametros permitidos { start | stop | restart | status [ tabla1 | tabla2 |  * ] }"  
        ;;  
esac #fin para cuando se recibe un parametro  
rm -rf *.autotmp #borramos los archivos creados dentro del script  

aqui les dejo unos enlaces que les pueden ser de utilidad…

primer enlace
segundo enlace
libro de enrutamiento avanzado en GNU/Linux

Instalación y Configuración tacacs+ en debian squeeze

por Rubén Urrieta

Instalar tacacs+ y sus dependencias

aptitude install tacacs+

este comando descargara e instalara tacacs+ y su única dependencia conocida libtacacs+1

Edite el archivo /etc/tacacs+/tac_plus.conf

nano /etc/tacacs+/tac_plus.conf

opciones:

accounting file = /var/log/tac_plus.acct archivo donde se guardara la actividad de los usuarios

key = bdsltd contraseña que se debe configurar en los equipos que tendrán acceso al servidor tacacs+

default authentication = file /etc/shadow archivo donde por defecto donde se guardaran las contraseñas

a partir de este punto se deben configurar diferentes parámetros en este orden:

acl: Lista de control de acceso, sigue la misma sintaxis de las acl de cisco.
host: Configuración especifica para un equipo o segmento de red.
user: Configuración de usuarios (los parámetros aquí configurados sobreescriben a la configuración de los grupos padres).
group: Configuración global para los usuarios miembros de este grupo.

Configuración de ACL

acl = acl_moron { 
        # permirir acceso solo a un rango de direcciones ip 
        permit = 10.10.10.0 /24
        deny = 0 
}

las configuraciones de host pueden usarse para usar un contraseña de acceso (key), contraseña enable o un mensaje de entrada diferente para un host especifico o rango de direcciones ip.

Host = 192.168.2.0/24 { 
        key = test 
        type = cisco 
        enable = <des|cleartext> enablepass 
        prompt = " \n\nUsername: ESTE EQUIPO SOLO PUEDE SER USADO POR PERSONAL AUTORIZADO" 
}

Las configuraciones de usuarios deben tener declarado al menos la contraseña de acceso (el formato de las contraseñas sera descrito mas adelante en este manual) y la menbrecía de un grupo o los comandos que pueden ser usados por este usuario (sera descrito mas adelante en este manual).

user = ruben { 
    name = "Test User" 
    member = redes
    login = cleartext 123 
   enable = cleartext 123 
   acl = acl_moron
} 

las configuraciones de grupos deben tener declarados los permisos de usuarios

group =  nombre_del_grupo { 
    default service = deny 
    acl = acl_moron 
   cmd = show { 
        permit .ip
        permit .cdp
            deny .*
    } 
    cmd = copy { 
             permit .* 
    } 
    cmd = ping { 
             permit .* 
    } 
    cmd = traceroute { 
             permit .* 
    } 
    cmd = configure { 
             permit .* 
    } 
    cmd = interface { 
            permit .* 
    }
}

CONFIGURACIÓN DE CONTRASEÑAS

las contraseñas pueden ser configuradas de diferentes formas por ejemplo:

  • des seguido de la contraseña cifrada por el comando tac_pwd ejemplo de uso del comando tac_pwd:

            root@tacacs-server:~# tac_pwd   
            Password to be encrypted: 123456   
            nIeNBJ4GDjzEg    
    

Ejemplo de uso del parámetro des

login = des nIeNBJ4GDjzEg
enable = des nIeNBJ4GDjzEg

  • file seguido de la ruta absoluta de un archivo que contenga los usuarios y contraseña: Este archivo puede ser creado o modificado con el comando > htpasswd -n usuario » /etc/tacacs+/user_tacplus.txt

también puede usarse el archivo /etc/shadow que contiene las contraseñas de los usuarios del sistema

ejemplo de uso del parámetro file:

login = file /etc/tacacs+/user_tacplus.txt
enable = file /etc/shadow

  • cleartext (texto limpio) seguido de la contraseña tal cual la escribira el usuario al momento de usarla ejemplo:
      login = cleartext 123456  
      enable = cleartext 123456  
        **NOTA: NO RECOMENDADO**

los paquetes utilizados para el funcionamiento de este programa son:

tacacs+ libtacacs+1 apache2

los archivos utilizados por estos programas son:

/etc/tacacs+/tac_plus.conf configuraciones de equipos, usuarios,grupos de usuarios y acl
/var/log/tac_plus.log registro de acciones del programa
/var/log/tac_plus.acct registro de acceso de los usuarios y comandos ejecutados
/var/log/tac_plus.acct.*.gz tac_plus.acct semanas enteriores (usar ls -lh para ver fecha de la ultima modificación)
/etc/logrotate.d/tacacs+ archivo de configuración rotación de logs

Referencias:

http://www.loko.nu/files/tacacs.html