aMSN 0.97 desde svn

June 16th, 2008

Si quieres tener instala la ultima version de Amsn 0.97 aqui te digo como, svn es un control de versiones de codigo abierto, te servira para tener siempre actualizado Amsn ante las nuevas modificaciones con solo dar un svn update (abajo se menciona donde hacer esto) tendras las nuevas actualizaciones q se le agreguen a Amsn.

nota: eliminar toda instalacion previa: sudo aptitude –remove amsn

Instalacion de AMSN por SVN y paquetes necesarios:
1: $ sudo apt-get install subversion tcl8.4-dev tcl8.4 tk8.4-dev tk8.4 libpng12-dev libjpeg62-dev tcltls g++

2: obtener amsn
$ svn co https://amsn.svn.sourceforge.net/svnroot/amsn/trunk/amsn amsn
3: Descargar los plugins y skins

$ svn co https://amsn.svn.sourceforge.net/svnroot/amsn/trunk/amsn-extras amsn-extras
Paso4 :

Copiar los amsn-extras a la carpeta amsn/plugins y amsn/skins

$ sudo cp -r amsn-extras/plugins/* amsn/plugins
$ sudo cp -r amsn-extras/skins/* amsn/skins

Paso5:
Compilar amsn
$ cd amsn
$ ./configure
$ make
$ sudo make install

y listo tenemos nuestro amsn version 0.97 instalado

PASO EXTRA

Cada cierto tiempo cuando queremos actualizar a los nuevos cambios que le han hecho debemos hacer lo siguiente dentro de nuestra carpeta amsn

$ svn update

y lo mismo si se quiere hacer con lo plugins y skins (claro q dentro de la carpeta amsn-extras)

Probar Servidores SMTP y POP3 con Telnet

May 15th, 2008

A continuación resumo los pasos y comandos básicos para testear a traves de TELNET.

Antes que nada hay que aclarar que Telnet no es un protocolo seguro principalmente por dos razones:

* Transmite los comandos sin cifrar lo cual implica que si se transmiten contraseñas (como veremos más adelante en el caso de conexiones POP3) éstas serán legibles si se capturan los paquetes.
* No es un protocolo autenticado y, gracias a esto, es vulnerable a ataques man-in-the-middle.

Por éstas razones no es recomendable utilizar Telnet para verificar servicios POP3, FTP u otros que requieran autenticación.

Cabe aclarar también que lo que voy a comentar en las siguientes líneas los comandos POP3 y SMTP que yo normalmente utilizo para realizar pequeñas pruebas. No voy a detenerme en comandos ESMTP porque creo que no son necesarios.

Dicho ésto les detallo los pasos a seguir (por lo menos lo que yo utilizo) para realizar las verificaciones:

Servidor SMTP

Realizamos la conexión al servidor:

telnet smtp.server.ficticio.com 25

Si hay conectividad, el servidor nos contestará algo como:

Trying 190.192.22.118…
Connected to server.ficticio.com.
Escape character is ‘^]’.
220 Mensaje de Bienvenida del Servidor (Version del Servidor SMTP)

El mensaje de bienvenida puede variar según el server en cuestión o su configuración, pero lo importante aquí es el código numérico que hemos recibido (en éste caso es 220). Éste nos indica que el servidor SMTP está listo para atender nuestras peticiones.

Lo siguiente que debemos hacer es identificarnos:

helo nombre-de-mi-equipo

Donde nombre-de-mi-equipo es el nombre netbios del equipo local desde el cual estamos accediendo.

El servidor nos responderá con el código 250 otro mensaje (que como en el caso anterior puede ser cualquier cosa que el administrador haya seteado). Éste código numérico indica que el comando se registró exitosamente.

250 HELO accepted. Today is Tue, 16 Jan 2007 17:42:13 -0300

Si el servidor es autenticado, éste es el momento para loguearse.
Lo haremos mediante el comando AUTH LOGIN. El mismo nos devolverá el código 234 y el prompt para que ingresemos el usuario.
En el caso que me basé para confeccionar éste ejemplo, el servidor es autenticado y requiere que el usuario y password estén codificados en base64. (tuve que hacer un script en php para que me los codifique así podía ingresarlos a mano… pero eso es otra historia :))

auth login
334 VXNlcm5hbWU6
YwU58hJ5QHNtdHBpcGxhbisSd745YXI=
334 UGFzc3dvcmQ6
5QHNtdHB
235 Authentication successful.

Nóten que los comentarios que devuelve junto con el código 334 están también codificados.
Si la autenticación falla el servidor nos devolverá un error código 535.

Debido a que estamos emulando la comunicación entre dos servidores SMTP que van a intercambiar correo (nosotros somos quién envía) a continuación indicamos quién es el remitente y el destinatario:

mail from:
250 Ok
rcpt to:
250 Ok

Nótese que para cada comando el servidor nos devuelve un Ok (código 250).

Para escribir el cuerpo del mail pasamos el comando DATA. Podemos escribir varios renglones, finalizando el modo de entrada de datos con un renglón con sólo un punto.

data
354 End data with “.”
Este es el cuerpo del mail.
Como veran puedo utilizar varios renglones.
.
250 Ok: queued as 20E73D85D6

Una vez que finalizamos el cuerpo, el mail es aceptado y encolado para su posterior envío.

Los errores que podemos recibir comunmente son:

* 550: Comando desconocido
* 501: Formato de dirección erróneo
* 502: Comando no implementado
* 530: Autenticación requerida
* 535: Fallo en la autenticación

Bueno… hemos probado con éxito nuestro servidor SMTP.

Probando un servidor POP3

A continuación realizaremos la prueba del servidor POP3. Por lo general probamos que haya conectividad y, una vez conectados, que una casilla exista (para lo cual debemos contar con unas credenciales adecuadas).

La metodología es muy similar, así que vamos directamente a los comandos:

telnet pop3.server.ficticio.com 110
Trying 190.192.22.118…
Connected to pop3.server.ficticio.com.
Escape character is ‘^]’.
+OK

Una vez conectado pasamos el usuario y contraseña correspondientes para acceder a un mailbox:

user webmaster@mey-online.com.ar
+OK
pass palabrasecreta
+OK

Nos hemos logeado! Lo significa que el servidor está disponible y aceptando conexiones.
A partir de ahora podemos pasarle distintos comandos para listar o borrar los mensajes que hay en el mailbox:

* STAT Devuelve la cantidad de mensajes y la cantidad de bytes que éstos ocupan en el mailbox.
* LIST Devuelve la cantidad de mensajes y abajo (en líneas distintas) el número de mensaje y la cantidad de bytes que ocupa cada uno de ellos
* DELE Borra el mensaje indicado. Ésto es muy útil si estamos accediendo para liberar la cola del mailbox de un mensaje que no puede descargarse y frena a los que ingresaron posteriormente (me pasó miles de veces… obviamente SIEMPRE es por chanchadas adjuntas).

Vuelvo a repetir lo anteriormente dicho: como telnet no cifra los datos las contraseñas se transmiten en forma legible. Es conveniente, quizás, el crear una cuenta de prueba en el servidor POP3 y realizar la conexión Telnet con dicho usuario, el cual luego deberíamos eliminar para no comprometer al servidor.

recuperar archivos borrados desde consola

May 15th, 2008

¿Qué ocurre cuando hacemos un rm en la consola para borrar un archivo o un directorio y de repente nos damos cuenta de que nos hemos equivocado?

Tendremos que buscar un software de recuperación.

¿No habría sido mejor que se moviera a una papelera, como ocurre con el equivalente gráfico?

Buenas noticias, se puede hacer, y muy fácilmente.

Basta con instalar el paquete libtrash. En Ubuntu podéis ejecutar este comando:

sudo aptitude install libtrash

En Debian tendríais que ejecutar como usuario root:

aptitude install libtrash

y añadir en tu fichero de usuario .bashrc una nueva variable de entorno LD_PRELOAD (que carga en memoria la librería dinámica que le indiquemos) con la ruta a la librería

echo “export LD_PRELOAD=/usr/lib/libtrash/libtrash.so.2.4″ >> ~/.bashrc

Ahora puedes cerrar y abrir la consola de nuevo para grabar los cambios o ejecutar

source ~/.bashrc

Ahora vamos a probar nuestros nuevos superpoderes. Creamos un archivo cualquiera

echo “hola” > hola.txt

y ahora lo borramos

rm hola.txt

el archivo habrá ido a parar al directorio Trash en nuestro directorio HOME, que es el que nos hace de papelera.

Pero esto puede mejorar aún más: libtrash tiene un archivo de configuración que nos permite indica el directorio a utilizar como papelera, entre otras cosas. Si le indicamos .Trash, que es el archivo que usa Gnome como papelera, ¡cuando borremos un archivo este ira a parar a la papelera de Gnome y podremos borrarlo desde allí de forma gráfica!

echo “TRASH_CAN = .Trash” > ~/.libtrash

April 15th, 2008

Policy Routing - Balance de carga

March 5th, 2008

Este documento trata de explicar el uso de la técnica Policy Routing para balancear el tráfico hacia internet por dos o más salidas, antes de continuar voy a dejar la definición de algunos conceptos.

Policy Routing

Es la técnica que nos permite seleccionar la ruta que seguirá un datagrama según el origen, el direccionamiento ip en sus algoritmos de ruteo ( ej. RIP ) define el path del paquete según el destino que quiera alcanzar, lo que nos agrega Policy Routing es poder definir el path también mirando el origen.

Tabla de ruteo ( Route Table )

Tabla compuesta de reglas que le permite conocer y decidir a un router sobre el destino a seguir de los datagramas que reciba.

xxx@router:~$ ip route 10.10.11.0/24 via 192.168.202.2 dev eth1 192.168.202.0/24 dev eth1 proto kernel scope link src 192.168.202.1 default via 201.23.28.25 dev eth0

Este es un ejemplo de la salida de la tabla de ruteo, por lo general en los routers existe una única tabla de ruteo llamada main y con un único gateway ( en este ejemplo es el router con IP 201.23.28.25 )

Situación

Para mayor entendimiento voy a llevar el caso a una situación puntual de la práctica, donde tenemos un servidor GNU\Linux con 3 placas de red al cual queremos conectarle unos ADSL para alivianar la carga del enlace principal.

eth0: Conectado al acceso principal de internet
eth1: conectado a la red local
eth2: libre ( donde conectaremos los ADSL por medio de un switch )

Contrataremos más de 1 ADSL , porque algúns proveedores del servicio no funcionan del todo bien, por eso 2 o 3 es mejor, y además el caso se hace más complejo.

Requerimientos

Software de base: Debian Sarge ( 3.1 )
Herramientas: iptables , iproute

Objetivo

Lograr distribuir la demanda crítica de nuestra LAN por el enlace principal ( ej: Correo, Navegación ) y la carga no crítica por los ADSL ( ej: p2p, MSN entre otros ), haciendo dicha ingenieria de carga vamos a asegurar la usabilidad de los protocolos principales de una empresa.
Por lo general se llega a este tipo de distribuciones debido a que no se puede pedir ampliación del enlace principal, o por más que se defininar colas de prioridades sobre el enlace principal, éste tampoco alcanza.

Implementación con un ADSL

Lo primero a crear será una segunda tabla de ruteo, llamada adsl , la cual tendrá en su primer implementación, unicamente una regla,pero antes de llegar a ese paso vamos a describir desde el principio la configuración del adsl

El modem adsl es Router ademñas, lo que implica que la dirección IP pública estará en el router y nosotros por dhcp vamos a tener una ip privada que será nateada por el equipo, en primera instancia suponemos el ADSL conectado directamente a nuestra placa de red eth2.

Configuramos nuestra placa de red eth2 para que levante por dhcp entonces, tenemos algo como

xxx@router:~# ip addr add 10.0.0.1/30 dev eth2
xxx@router:~# ip addr eth2: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:17:9d:3d:b2 brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/30 brd 10.255.255.255 scope global eth2 inet6 fe80::216:17ff:fe9d:3db2/64 scope link valid_lft forever preferred_lft forever

De la configuración obtenida por dhcp, deducimos facilmente que la IP del Modem ADSL es 10.0.0.2

Modem ADSL Listo, ¿ Ahora ?

Bien , ahora llegó la hora de crear nuestra tabla de ruteo llamada DSL donde el gateway será nuestro MODEM ( 10.0.0.2 ), la creamos de la siguiente manera

Editamos el archivo /etc/iproute2/rt_tables y agreegamos al final nuestra nueva tabla “dsl”, nos quedaria

----------archivo rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 dsl
------------

Ahora agregaremos las reglas a nuestra nueva tabla

xxx@router:~# ip route add 10.0.0.0/30 dev eth2 src 10.0.0.1 table dsl
xxx@router:~# ip route add default via 10.0.0.2 table dsl

Listamos si se creo correctametne nuestra tabla de ruteo adsl

xxx@router:~# ip route show table dsl
10.0.0.0/30 dev eth0 scope link src 10.0.0.1
default via 10.0.0.2 dev eth0

Distribuir la carga

Luego de tener las 2 tablas de ruteo ( la main y dsl ) tenemos que determinar que tráfico se envierá por cada tabla.
Para eso, vamos a marcar con iptables los distintos tipos de tráfico, vamos a definir en el ejemplo dos tipos.

* Tráfico A: correo / web

* Tráfico B: p2p / msn / resto…

Marcamos tráfico B de la siguiente manera ( todo lo que no incluya correo o web ).

xxx@router:~# iptables -t mangle -A PREROUTING -p tcp -m multiport --dports ! 80,443,25,110 -i eth1 -s 10.10.11.0/24 -j MARK --set-mark 4

Como veran la marca se hace en el nivel de Transporte del modelo OSI.

Policy Routing

Al tener marcado el tráfico B , vamos a enviarlo por la tabla dsl, de esta manera dejamos el tráfico restante ( A ) sobre la tabla principal, el encargado de satisfacer la acción será iproute nuevamente.

xxx@router:~# ip rule add fwmark 4 table dsl
xxx@router:~# ip route flush cache

Verificamos que se haya cargado correctamente.

xxx@router:~# ip rule
0: from all lookup local
32765: from all fwmark 0x4 lookup dsl
32766: from all lookup main
32767: from all lookup default

Nota 1: La marca 0×4 se corresponde con la marca iptables
Nota 2: no usar marcas superior a 0×8 en iptables que no seran reconocidas por iproute.

Fin de la implementación, con herramientas como iptraf/iftop podemos ver el tráfico que circulará sobre nuestra placa conectada al adsl ( eth2 ).

Implementación con X ADSL

La implementación con varios ADSL se podría hacer conectando todos a un switch y la placa eth2 conectarla a dicho equipo, cada ADSL tendrá su propia red privada configurada por nosotros, por ejemplo.

ADSL 1: ip 10.0.0.2 / mascara 255.255.255.252

ADSL 2: ip 10.0.1.2 / mascara 255.255.255.252

ADSL 3: ip 10.0.2.2 / mascara 255.255.255.252

Nuestra placa eth2 ahora tendrá que tener 3 direcciones IP , una por cada ADSL

xxx@route:~# ip addr add 10.0.0.1/30 dev eth2
xxx@route:~# ip addr add 10.0.1.1/30 dev eth2
xxx@route:~# ip addr add 10.0.2.1/30 dev eth2

Balanceando carga en partes iguales para X ADSL

En un comienzo dije que por lo general solo tenemos 1 solo gateway por tabla, aquí nuestra tabla dsl tendrá X posibles salidas , es decir X gateways, donde se le dará un peso ( importancia ) a cada uno.

La idea ahora es enviar nuestro tráfico B por los ADSL , pero como se hace para que los 3 ADSL en nuestro ejemplo reciban una carga justa cada uno ??

Opción 1: crear 3 tablas ( adsl1 , adsl2 , adsl3 ) y enviar tráfico B1 B2 B3 ( hacer nuevas marcas dentro del tráfico B ), este procedimiento es bastante manual y puede que nos equivoquemos en distribuir a mano la carga para cada ADSL.

Opción 2: que se encargue Linux de distribuir la carga justa para cada ADSL ( eso es lo que voy a mostrar ).
xxx@route:~# ip route add default scope global table dsl nexthop via 10.0.0.2 dev eth2 weight 1 nexthop via 10.0.1.2 dev eth2 weight 2 nexthop via 10.0.2.2 dev eth2 weight 2

Fijarse que le damos un peso a cada gateway , al adsl 1 peso 1 y a los otros peso 2

Ventajas

* El servidor balancea la carga con los 3 adsl según las entradas que vaya registrando en su tabla de ruteo.
* Al darle un peso a cada gateway, se puede determinar mayor prioridad para algún adsl
* Si se cae un ADSL, automaticamente Linux lo detecta y desvia el tráfico para los restantes vinculos, cosa que con la opción 1 no ocurre.

Sugerencias

* Configurar los procedimientos en scripts para que se inicien automaticamente luego de reiniciado el servidor

* Crear scripts que puedan verificar el estado del Modem ADSL y reinciarlo en caso de que la conexión a internet se haya cortado.

* Instalar herramientas para monitorear el tráfico por cada ADSL, no es sencillo ya que la unica forma de determinar el trafico que proviene de cada ADSL es a través de la capa de Enlace por la MAC Address, mis sigerencias son pmacct y rrdtool para las gráficas.

link original: Blog de Martin Russo

Incrementar iluminacion pantalla LCD de notebook

February 29th, 2008

algunas veces, los monitores de las notebooks se ve oscura cuando la utilizamos con las baterias, pero hay una manera de incrementar “a mano” la iluminacion de la siguiente manera:

cat /proc/acpi/video/VID/LCD/brightness
y nos dara el valor actual..

para iluminar o cambiar la iluminacion, hacer lo siguiente:

echo -valor- > /proc/acpi/video/VID/LCD/brightness

y listo..

Buscar palabra o texto dentro de un archivo

February 12th, 2008

para buscar alguna palabra o texto dentro de un archivo, lo podemos hacer con los siguientes comandos :

grep -srniH cadena-a-buscar *

buscara en TODOS los archivos (va a tardar claro :P)

* r - Hace la busqueda en forma recursiva
* s - No mostrar mensajes de error
* n - Muestra el número de línea de la ocurrencia
* i - Hacer la busqueda en modo Case sensitive, es decir, ignora mayúsculas y minúsculas
* H - Muestra el nombre del archivo de cada concordancia:

Eliminar el “marron” en el login de Ubuntu

January 27th, 2008

Buscando customizar mi notebook, me encontre que un detalle: entre el “despues” de loguearme y el destktop, me aparecia el color amarronado tipico de ubuntu…

como yo quiero tener todo oscuro (va, negro…) y no encontraba donde debia cambiar los valores de colores, me pasaron esta “receta”:

editar /etc/gdm/gdm.conf y /etc/gdm/PreSession/Default

Y después de editarlos, buscar el valor #dab082 y reemplazarlos por #000000 quedo listo!

salutes

Links en firefox

January 27th, 2008

no te a pasado, de abrir un link, marcado como nueva ventana y que esta se abra en una nueva solapa en el firefox ?
esta es la receta:

En la barra de direcciones ponés about:config y te va a aparecer una lista muy larga de opciones.
buscas : browser.link.open_newwindow

(está ordenado alfabéticamente, sino podés usar el filtro para encontrar esta opción entre todas)

cambiá el valor (que debe estar en 2 o 3) a 1. Eso es todo.

browser.link.open_newwindow=1 (abre todo en la misma ventana/pestaña)
browser.link.open_newwindow=2 (abre los links marcados como nueva ventana en una nueva ventana)
browser.link.open_newwindow=3 (abre los links marcados como nueva ventana en una nueva pestaña)

fuente:

ícono de la “papelera de reciclaje” al escritorio

January 16th, 2008

cómo agregar el ícono de la papelera en el escritorio.

Si usas KDE:

* Vamos al escritorio y clickeamos con el botón derecho del mouse y elegimos “Crear nuevo” -> “Archivo de texto“, no especificamos ningún nombre y lo abrimos.
* A continuación agregamos estas líneas de texto en el archivo:
[Desktop Entry]
Comment=Contains removed files
EmptyIcon=trashcan_empty
Encoding=UTF-8
Icon=trashcan_full
Name=Trash
Type=Link
URL=trash:/
* Ahora vamos a “Archivo” -> “Guardar como…” y le ponemos este nombre al archivo “Trash.desktop” (sin las comillas), una vez que guardamos el archivo al ir al escritorio ya tenemos el ícono de la papelera.
* Podemos elimiar el archivo de texto que nos quedó en el escritorio.

Si usas Gnome:

* Apretamos Alt+F2 para abrir un terminal y ejecutar este comando: “gconf-editor” (sin comillas) y le damos a enter.
* En la ventana que se nos abre tenemos que navegar por el árbol de directorios hasta apps/nautilus/desktop.
* Una vez ahí tildamos la opción “trash_icon_visible” y listo, ya aparece el ícono en el escritorio.