Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas

jueves, 9 de enero de 2014

Proxmox, KVM, Windows y licencia ROK para servidor HP

Al instalar un servidor Windows 2012 Server (licencia Essential ROK para HP) virtualizado con KVM sobre un servidor HP ProLiant ML310e Gen8 v2 con Proxmox instalado me he encontrado con un mensaje parecido a: "Esta licencia de Windows es solo para servidores HP".

Las licencias ROK son precisamente para eso, pero la licencia permite virtualizar sobre hardware HP esa licencia, en la propia web de HP explica como hacerlo sobre VMware pero no dice nada para otros sistemas de virtualización.

Vamos a utilizar el siguiente manual: http://jamar.org/2012/09/28/installing-windows-2008-hp-oem-as-kvm-guest/ con la diferencia que en Proxmox no tenemos los ficheros .xml de configuración de las máquinas virtuales KVM sino que tenemos ficheros .conf bastante diferentes.

Con el comando dmidecode sobre el servidor Proxmox extraemos la información necesaria (en negrita he marcado la información relevante):

# dmidecode | more
SMBIOS 2.7 present.
84 structures occupying 2717 bytes.
Table at 0xF3FCB000.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: HP
        Version: P78
        Release Date: 09/01/2013

[...]
Handle 0x0100, DMI type 1, 27 bytes
System Information
        Manufacturer: HP
       Product Name: ProLiant ML310e Gen8 v2

        Version: Not Specified
        Serial Number: CZXXXXXXY2     
        UUID: 30303734-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        Wake-up Type: Power Switch
        SKU Number: XXXXXX-800     
        Family: ProLiant

[...]

Con esta información editamos el fichero de configuración de nuestra máquina virtual y añadimos una opción más: args:

# cat /etc/pve/qemu-server/100.conf
args: -smbios type=0,vendor=HP,version=P78,date=09/01/2013 -smbios type=1,manufacturer=HP,product="ProLiant ML310e Gen8 v2",serial=CZXXXXXXY2,sku=XXXXXX-800

balloon: 2048
boot: dcn
bootdisk: virtio0
cores: 2
ide0: cdrom,media=cdrom
ide1: local:iso/virtio-win-0.1-74.iso,media=cdrom,size=59836K
memory: 6144
name: Win2012
net0: virtio=9A:2A:73:58:B2:CC,bridge=vmbr0
ostype: win8
sockets: 1
virtio0: local:100/vm-100-disk-1.qcow2,format=qcow2,cache=writeback,size=100G
virtio1: local:100/vm-100-disk-3.qcow2,format=qcow2,cache=writeback,size=100G

En el siguiente enlace tenemos todas las opciones disponibles para los ficheros de configuración: http://pve.proxmox.com/wiki/Manual:_vm.conf

Con esta configuración ya podemos arrancar y completar nuestra instalación.

Más referencias:
Link indispensable para instalar windows 2012 server sobre Proxmox: http://pve.proxmox.com/wiki/Windows_2012_guest_best_practices
http://forum.proxmox.com/threads/6943-Windows-OEM-and-SMBIOS


lunes, 2 de septiembre de 2013

Truco: Clonar máquina virtual openvz

Truco rápido para clonar un máquina virtual de un contenedor openvz en un sistema con proxmox:

# vzdump 100 -storage backup --stdout | vzrestore - 101

Copia la instancia con id 100 y crea una nueva con el id 101.
Para terminar, desde el gui del proxmox, cambiamos el hostname y el dns domain (pestaña DNS) y en la pestaña RED cambiamos la MAC de la tarjeta de red.

Para terminar arrancamos la máquina y cambiamos la configuración de red y de hostname.

jueves, 21 de junio de 2012

ZFS en ubuntu

IMPORTANTE: No lo recomiendo para entornos en producción.

Después de las pruebas realizadas y varios "kernel panics" he decidido no utilizarlo todavía en producción, es una lastima pero no me la juego.

Proceso de instalación de zfs:
# add-apt-repository "deb http://ppa.launchpad.net/zfs-native/stable/ubuntu oneiric main "
# aptitude update
# aptitude safe-upgrade -s
# aptitude install ubuntu-zfs
Creación del pool:
# zpool create cabina_emc /dev/mapper/mpath6-part1
Comprobamos el pool recién creado:
# zpool status -v
pool: cabina_emc
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
cabina_emc ONLINE 0 0 0
mpath6-part1 ONLINE 0 0 0

errors: No known data errors

Creamos un sistema de ficheros (dataset):

# zfs create cabina_emc/backup
Establecemos el punto de montaje:

# zfs set mountpoint=/media/cabina_emc cabina_emc
# zfs set mountpoint=/media/cabina_emc/backup cabina_emc/backup
Realizamos varias comprobaciones:

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
cabina_emc 169G 838G 30K /media/cabina_emc
cabina_emc/backup 169G 838G 169G /media/cabina_emc/backup
# zfs mount cabina_emc/backup


# mount
cabina_emc/backup on /media/cabina_emc/backup type zfs (rw,xattr)
# df -h
S.ficheros Tam. Usado Disp. % Uso Montado en
cabina_emc/backup 1007G 169G 838G 17% /media/cabina_emc/backup
Listado de paquetes instalados:
# dpkg -l \*zfs*|grep iiii libzfs1 0.6.0.56-0ubuntu1~oneiric1 Native ZFS filesystem library for Linux
ii ubuntu-zfs 6~oneiric Native ZFS filesystem metapackage for Ubuntu.
ii zfs-dkms 0.6.0.56-0ubuntu1~oneiric1 Native ZFS filesystem kernel modules for Linux
ii zfsutils 0.6.0.56-0ubuntu1~oneiric1 Native ZFS management utilities for Linux

Solución de errores:

Si os aparece un error como este:
Apr 24 10:37:57 Mercurio kernel: [1018898.922590] vmap allocation for size 4198400 failed: use vmalloc= to increase size.

Editamos el  fichero: /etc/default/grub y añadimos el valor vmalloc.
# nano /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="vmalloc=512M"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Actualizamos grub y reiniciamos el sistema:
# update-grub
# reboot
Comprobamos que el cambio surge efecto:

# cat /proc/meminfo
MemTotal: 2062236 kB
MemFree: 274552 kB
Buffers: 69436 kB
Cached: 1494816 kB
SwapCached: 12 kB
Active: 982260 kB
Inactive: 641228 kB
Active(anon): 46772 kB
Inactive(anon): 16796 kB
Active(file): 935488 kB
Inactive(file): 624432 kB
Unevictable: 47012 kB
Mlocked: 47012 kB
HighTotal: 1585096 kB
HighFree: 113960 kB
LowTotal: 477140 kB
LowFree: 160592 kB
SwapTotal: 1783144 kB
SwapFree: 1783132 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 106140 kB
Mapped: 16844 kB
Shmem: 1364 kB
Slab: 57488 kB
SReclaimable: 36392 kB
SUnreclaim: 21096 kB
KernelStack: 2232 kB
PageTables: 2916 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2814260 kB
Committed_AS: 359632 kB
VmallocTotal: 524288 kB
VmallocUsed: 26680 kB
VmallocChunk: 281000 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8184 kB
DirectMap2M: 503808 kB

Referencias:
http://hub.opensolaris.org/bin/download/Community+Group+zfs/docs/zfsadmin.pdf
http://zfsonlinux.org/faq.html
http://tech.libresoft.es/doku.php/manejozfs

miércoles, 13 de junio de 2012

Iscsi y mutlipath con una cabina EMC VNXe 3300

Disponemos de la red configurada como vimos en este artículo: http://blog.rubensalazar.net/2012/05/bridges-bonding-y-lacp.html

Debemos tener configurados los switches con las vlans correctamente para no tener problemas de red. Este tema no es objeto de este artículo.

En la cabina EMC hemos definido dos servidores iSCSI cada uno de ellos definido por dos ips, dos interfaces de red y cada uno asignado a un controlador diferente (storage processor) de forma que aseguramos la máxima redundancia.

Antes de seguir comentar que la consola de administración web de la cabina EMC ¡está hecha en flash!!!!!!!!!  lo que provoca mis mas sinceras maldiciones en arameo. ¿A estás alturas todavía con estas capulladas?.

Continuamos creando los espacios de almacenamiento, no voy a entrar más en la configuración de la cabina ya que cada una tiene su propio gestor y forma de configuración, de todos modos os pongo varios screenshots.

iSCSI Servers

Storages

Permisos de acceso a un Storage



















Como podemos ver en la imagen anterior hay un servidor con acceso a ese storage.
Vamos con la configuración del servidor para que pueda acceder a este recurso.

Instalamos el software necesario:

# aptitude install open-iscsi scsitools multipath-tools open-iscsi-utils
Editamos el fichero de configuración de open-scsi cambiando la propiedad node.startup de manual a automatic:
# nano /etc/iscsi/iscsid.conf
# To request that the iscsi initd scripts startup a session set to "automatic".
node.startup = automatic
Como hemos visto anteriormente tenemos dos servidores iSCSI:
  • iSCSIServer00: con dos ips 10.0.1.254 y 10.0.2.254
  • iSCSIServer01: ips 10.0.1.253 y 10.0.2.253

Realizamos el discover de los targets iSCSI de los servidores:
# iscsiadm -m discovery -t st -p 10.0.1.254
# iscsiadm -m discovery -t st -p 10.0.2.254
# iscsiadm -m discovery -t st -p 10.0.2.253
# iscsiadm -m discovery -t st -p 10.0.1.253
Comprobamos:
# iscsiadm -m node
10.0.1.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.2.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.1.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
10.0.2.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
Si listamos los dispositivos todavía no tendremos ninguno en nuestro sistema:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
Nos falta realizar el proceso de login:

# iscsiadm -m node -L all
Volvemos a listar los dispositivos:
# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 jun  6 12:26 mpath0 -> ../dm-2
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
A partir de este momento: crear particiones, formatear y añadir la entrada en /etc/fstab.

Para añadir más volúmenes y que el sistema los reconozca primero creamos el disco virtual y le damos acceso al host desde la cabina, para que lo reconozca el sistema realizamos logout y volvemos a hacer login (mucho cuidado con hacer los siguientes pasos si hay volúmenes montados de la cabina en este servidor, primero desmontar las unidades o se pueden perder datos):

# iscsiadm -m node --logout
Logging out of session [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging out of session [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging out of session [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging out of session [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Logout of [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Logout of [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Logout of [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Logout of [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
# iscsiadm -m node -L all
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
Volvemos a listar los dispositivos y veremos que nos aparece un nuevo volúmen:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root      140 jun  6 12:25 ./
drwxr-xr-x 18 root root     4520 jun  6 12:25 ../
crw-------  1 root root  10, 236 abr 30 14:33 control
brw-rw----  1 root disk 252,   3 jun  6 12:25 mpath0
brw-rw----  1 root disk 252,   2 jun  6 12:25 mpath1
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-swap -> ../dm-1 

jueves, 17 de mayo de 2012

Acceso a una cabina de almacenamiento HP EVA 4100 con multipath

Disponemos de un servidor con dos tarjetas de Fiber Channel, cada una de estás tarjetas está conectada a un switch de fibra distinto y cada switch está conectado a los dos controladores de la EVA.
Vamos a ver como configurar el servidor con Ubuntu 10.04 para proporcionar acceso a la cabina en alta disponibilidad con multipath de forma que, desde el servidor, trabajaremos con un único dispositivo de almacenamiento por cada disco virtual que la EVA presente al servidor.
El esquema de conexión es el siguiente:



Comprobamos que el servidor dispone de las dos tarjetas conectadas:

# lspci| grep Fiber
01:08.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
02:09.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
El kernel cargará el módulo lpfc como driver para estás tarjetas:

root@Mercurio:/etc/modprobe.d# lsmod |grep lpfc
lpfc                  526920  24
scsi_transport_fc      52158  1 lpfc
En mi caso, en está versión de ubuntu no es necesario, pero si tenéis problemas con lpfc podéis crear el archivo /etc/modprobe.d/lpfc.conf para configurar su comportamiento:

# cat /etc/modprobe.d/lpfc.conf
#options lpfc lpfc_use_msi=0 lpfc_log_verbose=0xffff
options lpfc lpfc_use_msi=0
Para instalar multipath:

# aptitude install multipath-tools scsitools
Configuramos multipath con el siguiente fichero, tiene una sección específica para nuestra EVA 4100:
# cat /etc/multipath.conf
##
## This is a template multipath-tools configuration file
## Uncomment the lines relevent to your environment
##


## Use user friendly names, instead of using WWIDs as names.
defaults {
        user_friendly_names yes
}


blacklist {
root@Mercurio:~# cat /etc/multipath
multipath/      multipath.conf 
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st|eth|br)[0-9]*"
       devnode "^hd[a-z][[0-9]*]"
#       devnode "^sd[c-d][[0-9]*]"
       devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}


devices {
        device {
                vendor "HP"
                product "HSV200"
                path_grouping_policy group_by_prio
                getuid_callout "/lib/udev/scsi_id -g -u /dev/%n"
                path_checker directio
                path_selector "round-robin 0"
                prio alua
                rr_weight uniform
                failback immediate
                hardware_handler "0"
                no_path_retry 12
                rr_min_io 100
       }
}
Podemos reiniciar el servidor o utilizar la utilidad rescan-scsi-bus para encontrar dispositivos y que los agrege al sistema. También debemos utilizar está utilidad si presentamos más discos virtuales desde la EVA al servidor.
Cuando "despresentamos" discos virtuales se pueden utilizar con la opción -r pero por mis pruebas el resultado no siempre es bueno y requiere reiniciar el servidor.

Con el siguiente comando comprobamos el estado del multipath:
# multipath -ll
mpath2 (3600508b40006c54300011000003f0000) dm-2 HP,HSV200
size=57G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:1 sdm 8:192 active ready running
| `- 5:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:1 sdf 8:80 active ready running
`- 6:0:1:1 sdp 8:240 active ready running
mpath8 (3600508b40006c5430001100000520000) dm-0 HP,HSV200
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 5:0:1:3 sdh 8:112 active ready running
| `- 6:0:1:3 sdr 65:16 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 6:0:0:3 sdo 8:224 active ready running
`- 5:0:0:3 sde 8:64 active ready running
mpath7 (36006048c0b49c13af746348067dac3bb) dm-7 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 7:0:0:1 sdl 8:176 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 8:0:0:1 sdk 8:160 active undef running
mpath6 (36006048c33fbd15cdb351637f9c6ab26) dm-5 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 10:0:0:1 sdi 8:128 active undef running
`-+- policy='round-robin 0' prio=1 status=active
`- 9:0:0:1 sdj 8:144 active ready running
mpath5 (3600508b40006c54300011000004c0000) dm-1 HP,HSV200
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:2 sdn 8:208 active ready running
| `- 5:0:0:2 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:2 sdg 8:96 active ready running
`- 6:0:1:2 sdq 65:0 active ready running
Como podéis ver hay otra cabina que dará para otro artículo, de momento no le hacemos caso.
Vemos el estado de los caminos posibles a cada disco y que todos están activos, sin encontrásemos alguno en fallo deberíamos revisar el hardware. (Os recomiendo revisar primero los latiguillos de fibra y comprobar los leds de las tarjetas para ver si alguno está apagada).

Listamos los discos y particiones:


# ll /dev/mapper/
crw------- 1 root root 10, 236 2012-05-14 15:35 control
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2 -> ../dm-2
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2-part1 -> ../dm-3
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5 -> ../dm-1
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5-part1 -> ../dm-6
lrwxrwxrwx 1 root root       7 2012-05-16 15:55 mpath6 -> ../dm-5
lrwxrwxrwx 1 root root       8 2012-05-16 15:55 mpath6-part1 -> ../dm-11
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7 -> ../dm-7
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7-part1 -> ../dm-8
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8 -> ../dm-0
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8-part1 -> ../dm-4
Aquí ya vemos particiones pero si es un disco nuevo utilizamos fdisk sobre, por ejemplo, /dev/mapper/mpath2 y generamos una partición /dev/mapper/mpath2-part1
Después creamos el sistema de ficheros y ya podemos motarla he incluirla en el /etc/fstab. Os recomiendo utilizar los UUID de los discos desde el fstab, para averiguarlos:
# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 0059c482-d8b9-4d88-8d98-f15b71318077 -> ../../md3
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 056f57cb-1b77-4df5-a023-1f20c41c21e7 -> ../../md4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 13776bb7-2242-4068-a41f-e919baff3a86 -> ../../dm-4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 156c04a8-199e-41f5-b974-3ba3a4b5e635 -> ../../sdb7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 2c0bdeca-617e-4e3a-b31a-31442ac63ff7 -> ../../md2
lrwxrwxrwx 1 root root 11 2012-05-17 02:07 2df684f9-1798-4e21-960b-304933b46637 -> ../../dm-11
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 3b9a2cb0-32c3-4be9-a787-340e106041d5 -> ../../dm-3
lrwxrwxrwx 1 root root 10 2012-05-17 02:07 465081f7-2591-4456-a972-847d813e4d0c -> ../../dm-8
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 510ed901-d0a3-4585-b594-002d9a78b61b -> ../../dm-6
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 57bc797f-74f8-467e-9145-200cdcafe180 -> ../../sda7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 7c6e736b-9f82-4107-b127-62831384d9ce -> ../../md1
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 a04ca2ee-97fc-4644-8dd3-3184fead0f2c -> ../../md0

Como podemos ver aquí tenemos montados nuestros sistemas de ficheros:

# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/md4 on /tmp type ext3 (rw)
/dev/md1 on /boot type ext3 (rw)
/dev/mapper/mpath2-part1 on /media/admine type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath5-part1 on /media/faxing type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath6-part1 on /media/backup type ext4 (rw,acl,user_xattr,errors=remount-ro)/dev/mapper/mpath8-part1 on /media/F type ext4 (rw,acl,user_xattr,usrquota,errors=remount-ro)
/dev/md2 on /var type ext3 (rw)
/dev/md3 on /home type ext3 (rw)
Si después queréis utilizar acceso concurrente desde dos servidores ocfs2 funciona muy bien.

viernes, 4 de mayo de 2012

Bridges, bonding y LACP

Vamos a ver como configurar las interfaces de red en modo bridge, utilizando interfaces conectadas a dos switches distintos para aumentar la disponibilidad del sistema y en modo bonding LACP para aumentar el ancho de banda total de esa conexión.
Además veremos la configuración específica de los switches.

Primer servidor con Ubuntu 12.04, vamos a configurar dos bondings y un bridge con 6 interfaces en total (eth0 hasta eth5).
El esquema de conexión es el siguiente:


Necesitamos tener instalados algunos paquetes:
# aptitude install bridge-utils ifenslave-2.6

Modificamos el fichero /etc/network/interfaces:
auto br0
iface br0 inet static

address 192.168.164.21
netmask 255.255.255.0
network 192.168.164.0
broadcast 192.168.164.255
gateway 192.168.164.1
# # dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.100.182 192.168.100.189 192.168.100.183
dns-search rubensalazar.net

bridge_ports eth0 eth1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp on

Reiniciamos el servicio de red:
# /etc/init.d/networking restart

Podemos comprobar si ha funcionado :
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001b78976e50       yes             eth0
                                                                             eth1
La configuración en los switches es idéntica en los dos, con un show run vemos la configuración de esa interfaz:
interface GigabitEthernet0/6
 switchport access vlan 7
 switchport mode access
 spanning-tree portfast

Pasamos a configurar los bondings, añadimos en el fichero /etc/network/interfaces:

auto bond0
iface bond0 inet static
slaves eth2 eth3
bond_mode 4
bond_miimon 100
bond_updelay 200
bond_downdelay 200
address 10.0.1.21
netmask 255.255.255.0
auto bond1
iface bond1 inet static
slaves eth4 eth5
bond_mode 4
bond_miimon 100
bond_updelay 200
bond_downdelay 200
address 10.0.2.21
netmask 255.255.255.0
auto eth2
iface eth2 inet manual
          bond-master bond0
auto eth3
iface eth3 inet manual
           bond-master bond0

auto eth4
iface eth4 inet manual
           bond-master bond1

auto eth5
iface eth5 inet manual
          bond-master bond1

El modo 4 indica el tipo de bonding que configuramos, podéis encontrar más información en:
http://en.wikipedia.org/wiki/Link_Aggregation_Control_Protocol#Link_Aggregation_Control_Protocol
http://systemadmin.es/2009/04/los-modos-de-bonding

Volvemos a reiniciar el servicio de red y comprobamos que funcionan:
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)


Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200


802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 17
Partner Key: 2
Partner Mac Address: 00:19:e8:e8:02:00


Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:26:55:d8:b5:99
Aggregator ID: 1
Slave queue ID: 0


Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:26:55:d8:b5:9b
Aggregator ID: 1
Slave queue ID: 0

# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)


Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200


802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 17
Partner Key: 2
Partner Mac Address: 00:1e:14:db:05:80


Slave Interface: eth4
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:26:55:d8:b5:98
Aggregator ID: 1
Slave queue ID: 0


Slave Interface: eth5
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:26:55:d8:b5:9a
Aggregator ID: 1
Slave queue ID: 0

La configuración de los switches es más compleja, definimos dos port channels, uno por cada red:
interface Port-channel1
 switchport access vlan 8
 switchport mode access
 spanning-tree portfast
!
interface Port-channel2
 switchport access vlan 9
 switchport mode access
 spanning-tree portfast
interface GigabitEthernet0/7
 switchport access vlan 8
 switchport mode access
 channel-group 1 mode active
 spanning-tree portfast
!
interface GigabitEthernet0/8
 switchport access vlan 8
 switchport mode access
 channel-group 1 mode active
 spanning-tree portfast
!
interface GigabitEthernet0/9
 switchport access vlan 9
 switchport mode access
 channel-group 2 mode active
 spanning-tree portfast
!
interface GigabitEthernet0/10
 switchport access vlan 9
 switchport mode access
 channel-group 2 mode active
 spanning-tree portfast

martes, 19 de octubre de 2010

Fail2ban

Fail2ban permite evitar ataques de diccionario o de denegación de servicio en nuestros sistemas.
Monitoriza ficheros de log del sistema y permite aplicar reglas de firewall si detecta un posible ataque bloqueando el acceso al servidor desde la ip del atacante.

La instalación desde Debian es muy sencilla:

# aptitude install fail2ban

Para configurarlo editamos el siguiente fichero:

# nano /etc/fail2ban/jail.conf

En este fichero encontramos una primera sección con parámetros globales de configuración, si en las secciones posteriores no se indican todas las opciones utilizará las que hemos definido en esta sección.

Las secciones posteriores determinan los servicios que queremos monitorizar y las acciones que se realizarán si se sobrepasan los reintentos máximos permitidos, por ejemplo el servicio de ssh se configurara:

[ssh]

enabled = true
port    = 222

filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6


Como podéis comprobar he cambiado el número de puerto estándar para que se adecue al sistema.

Otros servicios activados:

[ssh-ddos]

enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

[postfix]

enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log

[couriersmtp]

enabled  = true
port     = smtp,ssmtp
filter   = couriersmtp
logpath  = /var/log/mail.log

[courierauth]

enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = courierlogin
logpath  = /var/log/mail.log

[sasl]

enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = sasl
logpath  = /var/log/mail.log

En Debian es muy sencillo configurar fail2ban ya que la configuración por defecto es muy exacta, en casi todos estos servicios lo único que he hecho es poner la opción enabled a true.

Para poner más de una ip en la opción ignoreip hay que separar las ips/subredes mediante espacios.

Tras los cambios reiniciar el servicio para que asuma la nueva configuración:

# /etc/init.d/fail2ban restart

Instalación para CentOS5.5:

Desde la web oficial de fail2ban obtenemos un repositorio para centos desde donde nos podemos descargar un rpm: http://download.fedora.redhat.com/pub/epel/5/i386/repoview/fail2ban.html
He probado a instalarlo y pide muchos prerrequisitos, entre ellos shorewall. En mi caso no estoy interesado en utilizar shorewall por lo que he buscado otras opciones.

Buscando en rpmforge podemos encontrar varias versiones de fail2ban:
http://rpms.arrfab.net/rpmforge/packages/fail2ban/

Con esto podemos proceder a la instalación:

[root@centos55 ~]# wget http://rpms.arrfab.net/rpmforge/packages/fail2ban/fail2ban-0.8.2-3.el5.rf.noarch.rpm

[root@centos55 ~]# rpm -Uvh fail2ban-0.8.2-3.el5.rf.noarch.rpm
advertencia:fail2ban-0.8.2-3.el5.rf.noarch.rpm: CabeceraV3 RSA/SHA1 signature: NOKEY, key ID 9def3191
error: Error de dependencias:
        gamin-python se necesita para fail2ban-0.8.2-3.el5.rf.noarch

Como podemos tenemos dependencias pendientes y no nos permite la instalación, lo solucionamos:
[root@centos55 ~]# yum install gamin-python

Cuando termine repetimos el comando de instalación del rpm:

[root@centos55 ~]# rpm -Uvh fail2ban-0.8.2-3.el5.rf.noarch.rpm
advertencia:fail2ban-0.8.2-3.el5.rf.noarch.rpm: CabeceraV3 RSA/SHA1 signature: NOKEY, key ID 9def3191
Preparando...    ############################## [100%]
   1:fail2ban    ############################## [100%]

Tras la instalación procedemos a la configuración, en el caso de CentOS no es tan exacta y tenemos que modificar más parámetros, a continuación tenéis varios ejemplos:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=info@mimaquina.com, sender=fail2ban@vps.
mimaquina.com]
#logpath  = /var/log/sshd.log
logpath  = /var/log/secure
maxretry = 5

[proftpd-iptables]

enabled  = true
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
           sendmail-whois[name=ProFTPD, dest=info@
mimaquina.com]
#logpath  = /var/log/proftpd/proftpd.log
logpath  = /var/log/secure
maxretry = 6

[qmail-iptables]

enabled = true
filter = qmail
action = iptables[name=QMAIL, port=smtp, protocol=tcp]
         sendmail-whois[name=QMAIL, dest=info@mimaquina.com]
logpath = /var/log/maillog
maxretry = 6

Tenemos que reiniciar el servicio tras los cambios:

[root@centos55 fail2ban]# service fail2ban restart
Stopping fail2ban:                       [  OK  ]
Starting fail2ban:                       [  OK  ]
[root@
centos55 fail2ban]# service fail2ban status
Fail2ban (pid 6057) is running...
Status
|- Number of jail:      3
`- Jail list:           proftpd-iptables, qmail-iptables, ssh-iptables



;-)

lunes, 30 de agosto de 2010

Protección de borrado de ficheros desde consola.

Todos los que solemos trabajar con servidores utilizamos la consola como medio principal para gestionarlos.
Safe-rm y libtrash (del que hablaré en otro post) nos pueden ayudar ante un error desafortunado desde consola, los cuales pueden ser muy frecuentes sobretodo cuando estás haciendo 28 cosas a la vez y/o estás siendo interrumpido continuamente.

Safe-rm nos impide borrar cualquier fichero que se encuentre en una lista de directorios protegidos, impidiendo que un rm -rf * erróneo destruya partes imprescindibles del sistema.

Para instalarlo desde debian o ubuntu:
root@encelado:~# aptitude install safe-rm

El listado de directorios los podemos configurar mediante: /etc/safe-rm.conf  o ~/.safe-rm
La configuración de directorios/ficheros protegidos por defecto es:
/
/bin
/boot
/dev
/etc
/home
/initrd
/lib
/proc
/root
/sbin
/sys
/usr
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/local/bin
/usr/local/include
/usr/local/sbin
/usr/local/share
/usr/sbin
/usr/share
/usr/src
/var


Vamos a realizar una comprobación básica:

root@encelado:~# echo "/prueba" >> /etc/safe-rm.conf
root@encelado:~# less /etc/safe-rm.conf
root@encelado:~# mkdir /prueba

root@encelado:~# rm -rf /prueba/
safe-rm: skipping /prueba/


Mas información:
http://www.safe-rm.org.nz/
http://code.google.com/p/safe-rm/