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

martes, 31 de julio de 2012

Alinear particiones linux


Particiones alineadas

Después de ejecutar fdisk -l aparece un mensaje similar a este:

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 byes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000e1f0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63       96388       48163+  83  Linux
Partition 1 does not start on physical sector boundary.
/dev/sda2           96389      594404      249007+  82  Linux Swap
Partition 2 does not start on physical sector boundary.
/dev/sda3          594405    40596254    20000925   83  Linux
Partition 3 does not start on physical sector boundary.
/dev/sda4        40596255  1250263727   604833736+  83  Linux
Partition 4 does not start on physical sector boundary
....

Todos los sectores donde empiezan las particiones deben ser múltiplo de 8. Caso contrario, está mal alieada la partición o particiones.

Fdisk en versiones anteriores de modo predeterminado gestiona los tamaños de las particiones sin alinear al tamaño del sector. Herramientas modernas de particionado utilizan libparted > 2.1 que de forma automática realizan alineamiento compatible 1Mb.

Las nuevas unidades de sectores 4096 bytes

Logical block size: 512 bytes
Physical block size: 4096 bytes

Alinear particiones pasa por reparticionar el disco duro y este proceso es posible realizarlo en Linux sin perder un solo dato. Utilizando un disco externo de 120Gb montado en /media/recuperacion copiar todos los datos de la partición de datos:

# cp -R /media/datos/* /media/recuperacion/

Características:
Disco duro 500 GB 9 particiones distribuidas de la manera siguiente. Las particiones sda8 de datos y sda9 tmp se crearán despues de recuperar el sistema:

$ ls -l /dev/disk/by-label

lrwxrwxrwx 1 root root 10 jul 31 10:12 datos -> ../../sda8
lrwxrwxrwx 1 root root 10 jul 31 10:12 gentoob -> ../../sda1
lrwxrwxrwx 1 root root 10 jul 31 08:10 gentooh -> ../../sda7
lrwxrwxrwx 1 root root 10 jul 31 08:10 gentoor -> ../../sda3
lrwxrwxrwx 1 root root 10 jul 31 08:10 gentoot -> ../../sda9
lrwxrwxrwx 1 root root 10 jul 31 10:12 ubuntuh -> ../../sda6
lrwxrwxrwx 1 root root 10 jul 31 10:12 ubuntur -> ../../sda2

Desde la instalación de gentoo se crean y montan los directorios ubuntur y ubuntuh:
# mkdir /media/ubuntur
# mkdir /media/ubuntuh
# mount -v -t ext3 /dev/sda2 /media/ubuntur
# mount -v -t ext3 /dev/sda6 /media/ubuntuh
# mkdir /media/recuperacion/ubuntu

Entrar en los directorios y realizar los backups:
# cd /media/ubuntur
# tar czvf /media/recuperacion/ubuntu/ubuntu-raiz.tar.gz *
# cd ..
# cd /media/ubuntuh
# tar czvf /media/recuperacion/ubuntu/ubuntu-home.tar.gz *
# cd ..

Al finalizar los backups desmontar las particiones
# umount /media/ubuntuh
# umount /media/ubuntur

Reiniciar y desde la instalación ubuntu realizar los mismos pasos:
Crear directorios y montarlos:
# mkdir /media/gentoob
# mkdir /media/gentoor
# mkdir /media/gentooh
# mount /dev/sda1 /media/gentoob
# mount /dev/sda3 /media/gentoor
# mount /dev/sda7 /media/gentooh
# mkdir /media/recuperacion/gentoo

Realizar los backup
# cd /media/gentoob
# tar czvf /media/recuperacion/gentoo/gentoo-boot.tar.gz *
# cd ..
# cd /media/gentoor
# tar czvf /media/recuperacion/gentoo/gentoo-raiz.tar.gz *
# cd ..
# cd /media/gentooh
# tar czvf /media/recuperacion/gentoo/gentoo-home.tar.gz *

Desmontar particiones
# umount /media/gentoob /media/gentoor /media/gentooh

Realizado el backup de las particiones abrir gparted y copiar el tamaño aproximado de las particiones:

sda1 ext2 97 Mb
sda2 ext3 25 GB
sda3 ext3 25 GB
sda4 extended 415 Gb
sda5 swap 2 GB
sda6 ext3 20 Gb
sda7 ext3 20 Gb
sda8 ext3 200 Gb
sda9 reiserfs 8 Gb
sin asignar 165 Gb

Reiniciar con un livecd, en este caso el livedvd gentoo linux 13.0
Después de la carga del sistema utilizando fdisk particionar el disco. La versión incluida en el mencionado livedvd inicia por defecto desde 2048 bytes. Versiones anteriores empiezan desde 63 bytes en cuyo caso no se acepta el valor por defecto y se sustituye por 64 bytes.

Crear, formatear particiones, hacer sda1 arrancable. Primero eliminar todas las particiones.
# fdisk /dev/sda
Crear las particiones utilizando fdisk
Crear los sistemas de ficheros
Crear e inicializar swap.
# mkswap /dev/sda5
# swapon /dev/sda5


Conmutar el indicador de iniciable.

Abrir un terminal y pasarse a root:
# sudo su

Restaurar particiones:
formatear partición, crear directorios y montarlos
# mkfs.ext2 /dev/sda1
# mkdir /media/{gentoob,gentoor,gentooh,ubuntur,ubuntuh}
# mount -t ext2 /dev/sda1 /media/gentoob
# cd /media/gentoob
# tar xzvf /media/recuperacion/gentoo/gentoo-boot.tar.gz
# mkfs.ext3 /dev/sda2
# mount /dev/sda2 /media/ubuntur
# cd /media/ubuntur
# tar xzvf /media/recuperacion/ubuntu/ubuntu-raiz.tar.gz
# mkfs.ext3 /dev/sda3
# mount /dev/sda3 /media/gentoor
# cd /media/gentoor
# tar xzvf /media/recuperacion/gentoo/gentoo-raiz.tar.gz
# cd ..
# mkfs.ext3 /dev/sda6
# mount /dev/sda6 /media/ubuntuh
# cd /media/ubuntuh
# tar xzvf /media/recuperacion/ubuntu/ubuntu-home.tar.gz
# cd ..
# mkfs.ext3 /dev/sda7
# mount /dev/sda7 /media/gentooh
# cd /media/gentooh
# tar xzvf /media/recuperacion/gentoo/gentoo-home.tar.gz
# cd ..

Desmontar particiones:
# umount /media/gentoob /media/gentooh /media/gentoor

Reinstalar grub y cambiar los uuid para ubuntu en los archivos /boot/grub/menu.lst y /etc/fstab.

# mount -v -t ext2 /dev/sda1 /media/gentoor/boot
# mount -v -t ext3 /dev/sda7 /media/gentoor/home

Montar el sistema de ficheros /proc para permitir a la instalación utilizar la información proporcionada por el kernel incluso dentro del chroot y montar de forma transparente el sistema de ficheros /dev.

# mount -t proc none /media/gentoor/proc
# mount -o bind /dev /media/gentoor/dev

Entrar en el nuevo entorno de instalación chrooting:
# chroot /media/gentoor /bin/bash
# env-update
>>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"

Actualizar /etc/mtab que contiene la información relativa a todos los ficheros montados:
# grep -v rootfs /proc/mounts > /etc/mtab

Instalar grub:
# grub-install --no-floppy /dev/sda

Salir del chroot y reiniciar
# exit
# umount /media/gentoor/boot /media/gentoor/home
# umount /media/gentoor/proc /media/gentoor/dev
# umount /media/gentoor
# reboot

Crear el sistema de ficheros reiserfs para la partición tmp se puede realizar una vez iniciado el sistema. En Gentoo con la utilidad reiserfsprogs. Comentar esta linea en /etc/fstab y descomentarla despues de crear el sistema de fichero:

# /dev/sda9 /tmp reiserfs notail,noatime,nodev,nosuid,noexec 0 0

Creo el sistema de ficheros reiserfs para particion tmp:
# emerge reiserfsprogs
# mkreiserfs -f --l "gentoot" /dev/sda9

Utilizar gparted para crear la particion de datos. Crear directorio /media/datos y agregar entrada al archivo /etc/fstab
# vi /etc/fstab
/dev/sda8 /media/datos ext3  users,defaults,nodev,nosuid 0 2


# mount -a

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *        2048      200703       99328   83  Linux
/dev/sda2          200704    52629503    26214400   83  Linux
/dev/sda3        52629504   105058303    26214400   83  Linux
/dev/sda4       105058304   976773167   435857432    5  Extendida
/dev/sda5       105060352   109254655     2097152   83  Linux
/dev/sda6       109256704   151199743    20971520   83  Linux
/dev/sda7       151201792   193144831    20971520   83  Linux
/dev/sda8       193146880   617873407   212363264   83  Linux
/dev/sda9       617875456   634652671     8388608   83  Linux



Linux es genial!.

miércoles, 25 de julio de 2012

Udev


Como configura Linux el hardware

Fuente: Oliver Frommel, Rene Rebe, Klaus Knopper

Linux heredó de UNIX la maxima "todo es un fichero". Esta abstracción permite a los programas utilizar nodos de dispositivos para acceder al hardware del ordenador como si se tratara de un fichero ordinario.

La tabla de texto pci.ids se encuentra en
/usr/share/misc/pci.ids
Puede comprobar que es un fichero con más de 20,000 líneas:
# wc -l /usr/share/misc/pci.ids
20460 /usr/share/misc/pci.ids

La mayoría de los componentes hardware PCI contienen unas id's de fabricante y producto. Estas id's se expresan como dos números hexadecimales.

# lspci -n

# lspci -v

En la actualidad la tabla legible se mantiene fuera del kernel y las id's de fabricante y producto se leen desde el bus del sistema.

Para detectar el hardware se necesita un mapeo entre las id's del PCI y el nombre del módulo del kernel a cargar a través de modprobe. Busca en la tabla pci.ids los nombres de los módulos a partir de las id's del PCI y carga los módulos listados allí.

Udev es el moderno demonio de detección hardware en Linux. Utiliza una funcionalidad compilada en el kernel. Udev escanea el sistema y revisa la lista de módulos, y con la id PCI de fabricante y producto carga el módulo para esa tarjeta.

# modinfo iwl3945
Muestra los parámetros del módulo, licencia, autor, alias pci, dependencias, firmware, etc.

# modprobe iwl3945

# lsmod | grep iwl3945


Linux es genial!.

viernes, 13 de julio de 2012

Instalar flash x86_64

Fuente: http://forums.gentoo.org/viewtopic-t-195629.html

Si al intentar instalar adobe-flash en Gentoo este aparece como masked se debe a que primero debe aceptarse la licencia (software propietario), al archivo /etc/portage/package.license:

>=www-plugins/adobe-flash-11.2.202.236 AdobeFlash-10.3

Esto es posible hacerlo de la manera tradicional, agregando la línea anterior al archivo package.license o utilizando --auntoumask-write
# emerge -av adobe-flash --autounmask-write

Mantenimiento del fichero world.
Algunos paquetes no se agregan al fichero world, por razones diferentes. La función de la utilidad regenworld tiene es regenerar el fichero world a partir de los paquetes instalados:

# regenworld
add to world: app-emulation/emul-linux-x86-baselibs
add to world: media-sound/alsa-utils
add to world: app-portage/ufed
add to world: app-text/mupdf
add to world: www-plugins/adobe-flash

Please review differences between old and new files, and replace
the old file if desired.

  old: /var/lib/portage/world  new: /var/lib/portage/world.whfb96.tmp
# cp /var/lib/portage/world.whfb96.tmp /var/lib/portage/world.

Sacando información al sistema
$ emerge --info
Utilidades eix
El website de los usuarios linux de Monovár (Alicante)
Fuente: http://www.monovarlinux.org nos describe como podemos desinstalar gnome o kde con la ayuda de eix:.
# emerge eix

Analizando portage

# eix-update

Listar todos los paquetes pertenecientes a la categoría gnome-base 

# eix -C gnome-base -–only-names –-installed


Eliminar todos los paquetes de gnome-base y gnome-extra utilizando emerge y eix:

emerge -C `eix -C gnome-base –only-names –installed`
emerge -C `eix -C gnome-extra –only-names –installed`
revdep-rebuild

El mismo concepto es aplicable a otros entornos gráficos como kde:

emerge -C `eix -C kde-base –only-names –installed`
emerge -C `eix -C kde-misc –only-names –installed`
revdep-rebuild

Linux es genial!.