Páginas

domingo, 8 de noviembre de 2009

Hamachi

Hamachi - VPN










Activar en el kernel soporte TUN/TAP y recompilar el nucleo:
Device Drivers  --->
  Network device support  --->
    [*] Universal TUN/TAP device driver support
Verificar la salida de dmesg
# dmesg | grep TUN
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky

Cargar módulo tun
# modprobe tun
# lsmod
Module                  Size  Used by
tun                     7296  0

Comprobar que nuestro kernel ya lo soporta y el dispositivo ha sido creado:
$ ls /dev/net/tun
/dev/net/tun

Para x86_64 bits será necesario instalar:
$ sudo apt-get -y install build-essential ia32-libs upx-ucl

Para x86_32 bits:
$ sudo apt-get -y install build-essential upx-ucl

Descargue la última versión de hamachi desde http://files.hamachi.cc/linux/.

Entre en el directorio donde lo descargó:

$ cd /home/debian/descargas/

Descomprimir el archivo:
$ tar -zxvf hamachi-0.9.9.9-20-lnx.tar.gz

Entramos en el directorio de hamachi
$ cd hamachi-0.9.9.9-20-lnx/


Instalar hamachi
$ sudo make install

Verá este mensaje:
Hamachi is installed

Crear grupo hamachi
$ sudo groupadd hamachi

Agregar root al grupo hamachi
$ sudo gpasswd -a root hamachi

Añadir usuario al grupo hamachi (en mi caso lenny)
$ gpasswd -a $USER hamachi

Cambiando al propietario de la carpeta /home/lenny/.hamachi
$ sudo chown -R $USER:$USER ~/.hamachi

Cambiando permisos
$ sudo chmod 760 /var/run/tuncfg.sock

Cambiando a grupo hamachi
$ sudo chgrp hamachi /var/run/tuncfg.sock

Iniciar tuncfg
$ sudo tuncfg
tuncfg: already running

Si sale este error:
  # /etc/init.d/tuncfg start
 * Starting tuncfg ...
tuncfg: cannot stat() /dev/net/tun -- No such file or directory
tuncfg: visit http://www.hamachi.cc/tuntap for more info  [ !! ]

primero hay que asegurarse que este archivo existe:
# ls -l /var/run/tuncfg.sock
ls: cannot access /var/run/tuncfg.: No such file or directory

No existe, tiene que crearlo:
# touch /var/run/tuncfg.sock


Cambie los permisos:
# chmod 1254 /var/run/tuncfg.sock

Falta crear el device tun:
# mkdir /dev/net
# mknod /dev/net/tun c 10 200

Intentelo de nuevo:
# /etc/init.d/tuncfg start
 * Starting tuncfg ...                [ ok ]

Crear una configuración inicial e indicándole el path de instalación:
$ sudo hamachi-init -c /usr/bin/hamachi
Initializing Hamachi configuration (/usr/bin/hamachi). Please wait ..

generating 2048-bit RSA keypair .. ok
making /usr/bin/hamachi/ directory .. ok
saving /usr/bin/hamachi/client.pub .. ok
saving /usr/bin/hamachi/client.pri .. ok
saving /usr/bin/hamachi/state .. ok

Authentication information has been created. Hamachi can now be started with
'hamachi start' command and then brought online with 'hamachi login'.

Configuracion inicial en home (normalmente no es necesario si lo instala por primera vez, puede obviar este paso):

$ sudo hamachi-init -f
Initializing Hamachi configuration (/home/lenny/.hamachi). Please wait ..

generating 2048-bit RSA keypair .. ok
making /home/lenny/.hamachi directory .. ok
saving /home/lenny/.hamachi/client.pub .. ok
saving /home/lenny/.hamachi/client.pri .. ok
saving /home/lenny/.hamachi/state .. ok

Iniciar el programa:
$ sudo /usr/bin/hamachi start
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok

Login a Hamachi
$ sudo /usr/bin/hamachi login
Logging in ......... ok

Llegado a este punto configure su nick:
$ sudo /usr/bin/hamachi set-nick xenaunix

Acceder a una red existente o crear una nueva.

Unirse a una red existente:
$ sudo /usr/bin/hamachi join NETLENNY
Password:
Joining NETLENNY .. ok

O crear una red nueva:
$ sudo /usr/bin/hamachi create NETGENTOO

Por último, Tras unirnos o crear una red hay que ponerla online:
$ sudo /usr/bin/hamachi go-online NETGENTOO

Ver lista de redes y usuarios:
$ sudo /usr/bin/hamachi list
[NETLENNY]
5.3.129.195
5.7.236.132
5.177.3.194
5.183.232.165
5.205.183.13

Obtener los nicknames
sudo /usr/bin/hamachi get-nicks
Retrieving peers' nicknames ..

Listar usuarios con su nick

$ sudo /usr/bin/hamachi list
[NETLENNY]
5.3.129.195 DEBIANHP
5.7.236.132 NETGENTOO
5.177.3.194 NETLENNY
5.183.232.165 NETARCH
5.205.183.13 NETXENA

Averiguar el estado de hamachi:
$ sudo /usr/bin/hamachi
Hamachi, a zero-config virtual private networking utility, ver 0.9.9.9-20

version : hamachi-lnx-0.9.9.9-20
pid : 4456
status : logged in
nickname : NETGENTOO

También podemos borrar una red creada por nosotros:
$ sudo /usr/bin/hamachi delete NETGENTOO

Comando para desligarnos o desunirnos de una red:
$ sudo /usr/bin/hamachi leave NETLENNY

A continuación un sencillo guión impedirá repetir teclear todos os camandos:
Guardelo en /etc/init.d/ con el nombre de hamachi.

#!/bin/bash
#######################################
### script de inicio, parada y reinicio de hamachi ###
#######################################
case "$1" in
start)
echo "Iniciando hamachi..."
/usr/bin/sudo /sbin/tuncfg
/usr/bin/sudo /usr/bin/hamachi start
/usr/bin/sudo /usr/bin/hamachi login
/usr/bin/sudo /usr/bin/hamachi go-online NETGENTOO
sudo /usr/bin/hamachi set-nick NETGENTOO
;;
stop)
echo "Deteniendo hamachi..."
/usr/bin/sudo /usr/bin/hamachi stop
;;
restart|force-reload)
echo "Reiniciando hamachi..."
/usr/bin/sudo /usr/bin/hamachi start
sleep 1
/usr/bin/sudo /usr/bin/hamachi stop
;;
*)
exit 1
;;
esac
exit 0


Hacerlo ejecutable:
$ sudo chmod +x /etc/init.d/hamachi

Para ejecutarlo:
$ /etc/init.d/hamachi start
Iniciando hamachi...
tuncfg: already running
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok
Logging in .......... ok
Going online in NETGENTOO .. ok
Setting nickname .. ok

Si queremos detener hamachi:
$ /etc/init.d/hamachi stop
Deteniendo hamachi...
Shutting down .. ok

Utilizando restart como parámetro reiniciamos hamachi:
$ /etc/init.d/hamachi restart
Reiniciando hamachi...
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok
Shutting down .. ok

El programa hamachi-gui provee de interfaz gráfica a hamachi.

Descargar de http://hamachi-gui.sourceforge.net/index.html

Instalar hamachi-gui:
$ sudo dpkg -i hamachi-gui_0.9.6-1_amd64-hardy.deb

Ejecute el siguiente comando donde -c le indica a hamachi-gui donde encontrará el programa hamachi, nohup para que al cerrar la terminal el programa continue corriento. Si no se utilizan redirecciones todas las salidas del programa se dirigen a un fichero llamado nohup.out. & Se utiliza para recuperar inmediatamente el control del terminal:
$ sudo nohup hamachi-gui -c /usr/bin/hamachi > /dev/null 2>&1 &

Un script para iniciar la interfaz gráfica?, guardelo como hamachi_gui.sh.:
#!/bin/bash
########################################
### script hamachi-gui ######################
#######################################

echo "Iniciando interfaz grafica..."
/usr/bin/sudo /usr/bin/nohup /usr/bin/hamachi-gui -c /usr/bin/hamachi > /dev/null 2>&1 &

Hágalo ejecutable:
$ sudo chmod +x /etc/init.d/hamachi.

Para ejecutarlo:
$ sudo ./hamachi-gui.sh
[sudo] password for debian:
Iniciando interfaz grafica...

Activar hamachi durante el inicio de GNU-Linux:
$ sudo update-rc.d hamachi defaults

Desactivar hamachi durante el arranque:
$ sudo update-rc.d-f hamachi remove

sábado, 31 de octubre de 2009

Soporte usb virtualbox Debian

Probado en Debian y Ubuntu 9.04 Jaunty

Abra un Terminal y tecleae (vim o su editor favorito):
$ vim /etc/fstab

Agregue estas líneas:
# soporte usb para virtualbox
none /proc/bus/usb usbfs devgid=46,devmode=666 0 0

Guardar y teclear:
$ sudo mount -a

Ahora añada su nombre de USUARIO al grupo virtualbox en el archivo /etc/group
$ vim /etc/group, queda más o menos así (por ejemplo, xena):
vboxusers:x:125:xena

o puede hacerlo desde Sistema -> Administración -> Usuarios y Grupos -> desbloquear -> gestionar grupos -> vboxusers -> Propiedades -> marque el usuario, (por ejemplo, xena ), con el que hace login.

Por último en configuración de virtualbox habilite usb.
Reinicie virtualbox.

miércoles, 28 de octubre de 2009

Cortafuegos conexion a Internet compartida IP WAN estatica

Construir nuestra propia caja cortafuegos en hardware x86 para nuestra conexión a Internet por cable o DSL utilizano nuestra distribución GNU-Linux favorita.

Tendremos una conexión a Internet compartida y un cortafuegos, necesitamos saber que componentes de hardware utilizar.

Aunque existen distribuciones de GNU-Linux especializadas en cortafuegos o firewall para este ensayo utilizaremos:

- Un portatil con GNU-Linux Debian Lenny con dos interfaces de red. Una alámbrica que la llamaremos tal y como la nombre mi sistema "eth0" y otra interface de nombre "wlan0" inalámbrica, la 3945ABG Intel Centrino.
- Un segundo pc de sobremesa con Ubuntu 9.04 instalado y un cable cruzado puente para pasarle la conexión a Internet.

Lo primero es desactivar el cortafuegos si lo tenemos activado. Puede ser necesario instalar los paquetes net-tools, ifrename y Nmap en ambos pc's.

Configuración de tarjetas de interfaz de red en Debian:
Configuramos la tarjeta NIC LAN con una IP estática del tipo c para nuestro esquema de red privada. No asignaremos la dirección LAN con DHCP. Configuraremos la interfaz WAN con la información proporcionado por nuestro ISP, o sea, una dirección ip local estática y una dirección PUBLICA dinámica. No nos conectamos a internet todavía.

Editamos el archivo interfaces con vim, ¿porque vi? porque respeta el formato, para que quede así:
# vim interfaces
## /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# lan interface
auto eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255

#wan interface
auto wlan0
iface wlan0 inet static
address 78.122.0.45
netmask 255.255.255.0
gateway 192.168.153.1

Guardamos y cerramos

Estos datos se los proporciona su ISP

Ahora, fijamos los nombres de las interfaces con ifrename:
Primero buscamos las direcciones MAC de nuestras interfaces con ifconfig
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:21:9b:e2:cd:44
......
wlan0 Link encap:Ethernet HWaddr 00:1f:dd:ff:a0:3c

En este momento introducimos nuestros nombres de interfaces y direcciones MAC en /etc/iftab. Si no existe el archivo iftab deberá crearlo.

# vim /etc/iftab
## /etc/iftab
eth0 mac 00:21:9b:e2:cd:44
wlan0 mac 00:1f:dd:ff:a0:3c

La dirección LAN la dirección de la pasarela o gateway que será instalada en todos los pc's de nuestra LAN.

En el pc de sobremesa con el que queremos compartir la conexión a Internet la configuración de la tarjeta eth0 alámbrica será ip fija gw 10.0.0.10 y los dns de su ISP:
ip 10.0.0.20
netmask 255.255.255.0
gateway 10.0.0.10
dns1 80.58.61.250
dns2 80.58.61.254

Añadiremos estos parámetros del kernel al archivo /etc/sysctl.conf necesarios para la conexión a Internet compartida.
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0

Llamaremos /usr/local/bin/firewall_nat al siguiente guion copielo y hágalo ejecutable en rw para root con chmod 0700. Es justo decir que este guion es obra de Schroder autora de Networking Linux.

#!/bin/sh
##/usr/local/bin/firewall_nat
#iptables firewall script for sharing
#broadband Internet, with no public services

#define variables
ipt="/sbin/iptables"
mod="/sbin/modprobe"
LAN_IFACE="eth0"
WAN_IFACE="wlan0"

#basic set of kernel modules
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#add these for IRC and FTP
$mod ip_nat_ftp
$mod ip_nat_irc
$mod ip_conntrack_ftp
$mod ip_conntrack_irc

# Flush all active rules and delete all custom chains
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X

#Set default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT

$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#this line is necessary for the loopback interface
#and internal socket-based services to work correctly
$ipt -A INPUT -i lo -j ACCEPT

#Enable IP masquerading
$ipt -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

#Enable unrestricted outgoing traffic, incoming
#is restricted to locally-initiated sessions only
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $LAN_IFACE -o $WAN_IFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accept important ICMP messages
$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

#Reject connection attempts not initiated from inside the LAN
$ipt -A INPUT -p tcp --syn -j DROP

Los nuevos parámetros sysctl debe abrirlos:
# /sbin/sysctl -p

Ejecute firewall_nat
# /usr/local/bin/firewall_nat

Conectese a la interfaz WAN utilizando su interfaz wireless:
# /sbin/ifup wlan0
# iwconfig wlan0 essid "WLAN_LIN"
# iwconfig wlan0 essid "WLAN_LIN" key 43303031443230333183303133
# dhclient wlan0

Después de ejecutar dhclient wlan0, Verá algo como:
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/wlan0/00:1f:dd:ff:a0:3c
Sending on LPF/wlan0/00:1f:dd:ff:a0:3c
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPOFFER from 10.185.228.9
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 10.185.228.9
bound to 192.168.1.34 -- renewal in 122773 seconds.

Conectese al portátil desde el pc sobremesa utilizando un cable cruzado, interfaz eth0 y los datos mencionados anteriormente utilizando un gestor de redes o manualmente:
# eth0 pc_sobremesa
ip 10.0.0.20
netmask 255.255.255.0
gateway 10.0.0.10
dns1 80.58.61.250
dns2 80.58.61.254

Ya tiene que poder enviar ping desde y hacia las ip's 10.0.0.20 y 10.0.0.10 y navegar por Internet desde cualquiera de los dos pc's.

Linux es genial!

lunes, 19 de octubre de 2009

Home en una particion separada

Partiremos del supuesto que posee un sistema GNU-Linux en una particion y quiere separar /home del resto del sistema. Supondremos también que ya ha creado esa nueva partición ext3 ó ext4. Lo siguiente será montar la partición la nueva partición para realizar la copia de archivos. Una vez tenemos claro de dónde a dónde vamos a mover, tenemos que tener montada la partición nueva para poder copiar a ella los archivos.

$ sudo mkdir /mnt/soekris
$ sudo mount /dev/sda9 /mnt/soekris

La copiar de archivos se puede realizar desde el propio sistema, utilizando un terminal:

Nos desplazamos a nuestro directorio /home

$ cd /home

Como usuario root:
# cp -ax . /mnt/soekris

Despues de realizada la copia de archivos, renombramos el antiguo /home

$ cd /
# mv /home/  home.antiguo
# mkdir /home

Desmontar:
# umount /dev/sda9 /mnt/soekris

Montamos home en la nueva partición:
# mount /dev/sda9 /home

El siguiente paso es editar el /etc/fstab, para que el sistema monte la particion en cada reinicio.

Usamos el editor que queramos:
# vim /etc/fstab

Y añadimos esta linea al final.
/dev/sda9 /home ext3 defaults 0 2

En Debian squeeze:
21fdbd40-ea93-4597-8af6-a0dcd38559c5  /home  ext3  defaults 0  2
Agregar un usuario nuevo:

Conviertase en root con la orden su


Una vez que usted es un usuario root puede agregar un nuevo usuario con el comando adduser, indicando las opciones seguido del login (nombre de la cuenta a añadir):

# adduser -s /bin/bash -g users -G audio,video,plugdev,portage,usb,cdrom -m hypatia

#  passwd hypatia

Si desea dar al usuario 'susana' una cuenta en su sistema podría ejecutar 'useradd susana' para crear un inicio de sesión para ella.

Ahora establezca una contraseña para la cuenta ejecutando "passwd susana"

Lo siguiente que necesitas hacer es crear un directorio de inicio para ella. Esto normalmente sólo implica la ejecución de:

# mkdir /home/susana
# chown susana:users /home/susana

Esto crea un directorio con el mismo nombre que la cuenta de inicio de sesión bajo el directorio /home. Con chown el directorio pasa a ser propiedad del usuario.
Si se omite el comando chown el usuario no tendrá permiso para guardar archivos dentro de su propio directorio.

miércoles, 7 de octubre de 2009

Enrutamiento estatico subredes

Configuración de enrutamiento estático a través de subredes.

Hay varias formas de conseguirlo. Una de ellas es crear rutas estáticas de router a router. Me explico, supongamos que tienes tres subredes y tres routers:



Router A -- > 192.168.10.100 eth1 subred -- > 10.0.0.0/24
Router B -- > 172.16.5.125 eth1 subred -- > 10.0.1.0/24
Router C -- > 172.24.0.25 eth1 subred -- > 10.0.2.0/24

Cada router va a necesitar dos rutas:

En el Router A las rutas podrian establecerse asi;

# route add -net 172.16.5.0/24 gw 192.168.10.100 eth1
# route add -net 172.24.0.0/24 gw 192.168.10.100 eth1

En el Router B:

# route add -net 192.168.10.0/24 gw 172.16.5.125 eth1
# route add -net 172.24.0.0/24 gw 172.16.5.125 eth1

En el Router C:

# route add -net 192.168.10.0/24 gw 172.24.0.25 eth1
# route add -net 172.16.5.0/24 gw 172.24.0.25 eth1

Desde este momento los hots de las tres subredes pueden comunicarse entre si.
Para eliminar las rutas:
# route del -net 192.168.10.0/24

Debe conocer las mascaras de subred y no cometer errores tipograficos. ¿Y como calcular direcciones?
Hay un programa disponible para cualquier gnu-linux llamado ipcalc que permite averiguar todo lo que necesita saber para una sola red:

$ ipcalc 172.16.5.0/24

Supongamos que quiere dividir una red 172.150.0.0 en tres subredes para 90 hosts, digale a ipcalc su mascara de red y cuantos hosts quiere en cada segmento:

$ ipcalc 172.150.0.0/16 --s 35 25 30

Address: 172.150.0.0 10101100.10010110. 00000000.00000000
Netmask: 255.255.0.0 = 16 11111111.11111111. 00000000.00000000
Wildcard: 0.0.255.255 00000000.00000000. 11111111.11111111
=>
Network: 172.150.0.0/16 10101100.10010110. 00000000.00000000
HostMin: 172.150.0.1 10101100.10010110. 00000000.00000001
HostMax: 172.150.255.254 10101100.10010110. 11111111.11111110
Broadcast: 172.150.255.255 10101100.10010110. 11111111.11111111
Hosts/Net: 65534 Class B

1. Requested size: 35 hosts
Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000
Network: 172.150.0.0/26 10101100.10010110.00000000.00 000000
HostMin: 172.150.0.1 10101100.10010110.00000000.00 000001
HostMax: 172.150.0.62 10101100.10010110.00000000.00 111110
Broadcast: 172.150.0.63 10101100.10010110.00000000.00 111111
Hosts/Net: 62 Class B

2. Requested size: 25 hosts
Netmask: 255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Network: 172.150.0.64/27 10101100.10010110.00000000.010 00000
HostMin: 172.150.0.65 10101100.10010110.00000000.010 00001
HostMax: 172.150.0.94 10101100.10010110.00000000.010 11110
Broadcast: 172.150.0.95 10101100.10010110.00000000.010 11111
Hosts/Net: 30 Class B

3. Requested size: 30 hosts
Netmask: 255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Network: 172.150.0.96/27 10101100.10010110.00000000.011 00000
HostMin: 172.150.0.97 10101100.10010110.00000000.011 00001
HostMax: 172.150.0.126 10101100.10010110.00000000.011 11110
Broadcast: 172.150.0.127 10101100.10010110.00000000.011 11111
Hosts/Net: 30 Class B

Needed size: 128 addresses.
Used network: 172.150.0.0/25
Unused:
172.150.0.128/25
172.150.1.0/24
172.150.2.0/23
172.150.4.0/22
172.150.8.0/21
172.150.16.0/20
172.150.32.0/19
172.150.64.0/18
172.150.128.0/17

Quiere que las rutas estáticas sean persistentes?.

En Debian, agréguelas a /etc/network/interfaces
para su interfaz correspondiente. (Como verá, ésta corresponde a la subred conectada al router A, las B Y C son facilmente deducibles):

auto eth1
iface eth1 inet static
address 192.168.10.100
netmask 255.255.255.0
gateway 12.34.56.78
broadcast 192.168.10.255

up route add -net 172.16.5.0/24 gw 192.168.10.100 eth1
up route add -net 172.24.0.0/24 gw 192.168.10.100 eth1
down route del -net 172.24.0.0/24
down route del -net 172.16.5.0/24

Otra manera de conseguirlo, (aburridamente facil), es tener los tres routers en la misma red, en cuyo caso no será necesario configurar ruta alguna:

Router A - 192.168.10.150 eth1
Router B - 192.168.10.151 eth1
Router C - 192.168.10.152 eth1

¿Y de donde he aprendido todo eso, uhhh que tio que sabe!!
Bibliografía: Carla Schroder "Todo sobre administracion GNU-LINUX" aqui esta todo y mas... os lo recomiendo. Sencillamente imprescindible.