Páginas

martes, 14 de agosto de 2012

Redes con virtualbox


Enrutamiento estático a través de subredes con virtualbox.

Escenario: Dos subredes privadas que recorrer, y no todas están conectadas al mismo router. Proporcionarles acceso de unas a otras creando rutas estáticas.



Primero instalar virtualbox utilizando ubuntu como sistema anfitrión. Crear una máquina virtual a partir de una iso basada en debian 5.0 i386 sin entorno gráfico.


Configuración de la red.
Adaptador1 NAT (ip asignada automáticamente por vbox)
Adaptador2 Red interna (red1 ip fija)
Adaptador3 Red interna (red2 ip fija)




A partir de la vmdebian clonar las 3 máquinas virtuales para la realización de la práctica.

Listar el nombre de las máquinas virtuales
$ vboxmanage list vms
"vmdebian" {3a26e53a-c24b-48a4-80b9-f83b38b23cb2}
"vmdebian1" {e8282c78-50f1-4ab9-be73-98f99042b41c}
"vmdebian2" {7f15dc6e-6481-4b5f-8d7c-f1ddeb3e0992}
"vmdebian3" {3661155b-83f2-4ee9-a5a4-ce06887c05e8}

Cambiar la red por defecto asignada por virtualbox.
$ vboxmanage modifyvm "vmdebian1" --natnet1 "192.168.11/24"
$ vboxmanage modifyvm "vmdebian2" --natnet1 "192.168.12/24"
$ vboxmanage modifyvm "vmdebian3" --natnet1 "192.168.13/24"

Los nombres de las vm serán router{1,2,3}. Las ip's de las interfaces eth1 y eth2 serán fijas y los ficheros de configuración de las interfaces como se ve más abajo.

router1

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth1 iface eth1 inet static
address 172.16.1.1 netmask 255.255.255.0 network 172.16.1.0 broadcast 172.16.1.255 gateway 172.16.1.1

router2

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth1 iface eth1 inet static
address 172.16.1.222 netmask 255.255.255.0 network 172.16.1.0 broadcast 172.16.1.255 gateway 172.16.1.222
allow-hotplug eth2 iface eth2 inet static
address 172.16.2.222 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.222

router3

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth2 iface eth2 inet static
address 172.16.2.1 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.1

Status de todas las interfaces:
router1
# ifconfig -a
router2
# ifconfig -a


router3
# ifconfig -a


Crear las rutas estáticas. Comandos para establecer las rutas:

router1
# route add -net 172.16.2.0/24 gw 172.16.1.222 eth1

router3
# route add -net 172.16.1.0/24 gw 172.16.2.222 eth2

En el router2
Activar el reenvío IP desde la línea de comando. Configurarlo de forma permanente en /etc/sysctl.conf e iniciarlo inmediatamente:

# echo 1 > /proc/net/ipv4/ip_forward
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
:wq
# sysctl -p

Para conservar permanentemente las rutas estáticas y no tener que escribir de nuevo todos los comandos route agregarlas al fichero de configuración /etc/network/interfaces en la stanza para su interfaz correspondiente.

router1
# vim /etc/network/interfaces
up route add -net 172.16.2.0/24 gw 172.16.1.222 eth1
:wq

router3
# vim /etc/network/interfaces
up route add -net 172.16.1.0/24 gw 172.16.2.222 eth2
:wq

Verificar las rutas con route:
router1
# route -n


router2
# route -n


router3
# route -n


Haciendo ping desde los diferentes hosts:

router1
# ping -c3 172.16.2.222
# ping -c3 172.16.2.1


router2
# ping -c3 172.16.2.1
# ping -c3 172.16.1.1


router3
# ping -c3 172.16.1.222
# ping -c3 172.16.1.1


Habilitar la comunicación entre todas las redes:

router1
route add -net 192.168.12.0/24 gw 172.16.1.222 eth1
route add -net 192.168.13.0/24 gw 172.16.1.222 eth1


router2
route add -net 192.168.11.0/24 gw 172.16.1.1 eth1
route add -net 192.168.13.0/24 gw 172.16.2.1 eth2


router3
route add -net 192.168.12.0/24 gw 172.16.2.222 eth2
route add -net 192.168.11.0/24 gw 172.16.2.222 eth2


Para eliminar
# route del -net direccion_red/mascara

Ejemplo router3
# route del -net 192.168.11.0/24

Linux es genial!.

miércoles, 8 de agosto de 2012

Script personalizado

Registros del consumo de memoria en el servidor

Gestionar servicio mediante niveles de ejecución.
El nivel por defecto en un servidor Debian es el nivel 2, será conservado como nivel por defecto y personalizar el nivel 3 para que la aplicación se inicie automáticamente.

Crear directorio scripts.
# mkdir /opt/scripts
# vim /opt/scripts/memoria


#!/bin/bash
while true
do
hora=$(date "+%H: %M: %S - ")
echo -n $hora >> /var/log/memoria.log
grep Dirty /proc/meminfo >> /var/log/memoria.log
sleep 25
done

Permisos de ejecución a la aplicación:
# chmod +x /opt/scripts/memoria
# ls -l /opt/scripts/memoria
-rwxr-xr-x 1 root root 162 2012-08-08 09:53 /opt/scripts/memoria

Creación del script de inicio personalizado (archivo de gestión del servicio):
# vim /etc/init.d/memoria
#!/bin/bash
case $1 in
start)
/opt/scripts/memoria & echo " * inicializando... ;; stop) pkill memoria ;; esac

Hacer archivo ejecutable.
# chmod +x /etc/init.d/memoria

Comprobar el funcionamiento del programa ejecutando el correspondiente servicio:
# /etc/init.d/memoria start
 * inicializando...

Contenido del archivo /var/log/memoria.log
# tail -f /var/log/memoria.log
09: 57: 16 -Dirty:         44 kB 09: 57: 41 -Dirty:        156 kB 09: 58: 06 -Dirty:        168 kB 09: 58: 31 -Dirty:        332 kB 09: 58: 56 -Dirty:        164 kB 09: 59: 21 -Dirty:        376 kB 09: 59: 46 -Dirty:        140 kB 10: 00: 11 -Dirty:        148 kB 10: 00: 36 -Dirty:        248 kB 10: 01: 01 -Dirty:         12 kB

# pgrep -l memoria
10095 memoria

# /etc/init.d/memoria stop
# pgrep -l memoria
#

Modificar nivel personalizado:
Crear un enlace de parada en el nivel 0
Crear enlace de parada en el nivel 1
Crear enlace de parada en el nivel 2
Crear enlace de inicio en el nivel 3 (nivel funcional completo con la aplicación memoria)
Crear enlace de parada en el nivel 6
root@zeus:/etc/rc0.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc0.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:45 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc0.d# cd ../rc1.d/
root@zeus:/etc/rc1.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc1.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:45 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc1.d# cd ../rc2.d/
root@zeus:/etc/rc2.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc2.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:46 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc2.d# cd ../rc3.d/
root@zeus:/etc/rc3.d# ln -s ../init.d/memoria S95memoria
root@zeus:/etc/rc3.d# ls -l S95memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:47 S95memoria -> ../init.d/memoria
root@zeus:/etc/rc3.d# cd ../rc4.d/
root@zeus:/etc/rc4.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc4.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:49 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc4.d# cd ../rc5.d/
root@zeus:/etc/rc5.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc5.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:49 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc5.d# cd ../rc6.d/
root@zeus:/etc/rc6.d# ln -s ../init.d/memoria K05memoria
root@zeus:/etc/rc6.d# ls -l K05memoria
lrwxrwxrwx 1 root root 17 2012-08-08 11:49 K05memoria -> ../init.d/memoria
root@zeus:/etc/rc6.d#

Linux es genial!.