Cómo Crear un Servidor de Backup: Utilizando Clonezilla y PXE - Parte 2

Este es un artículo de dos partes que fue adaptado de los foros ODROID. La primera parte la puedes encontrar en https://magazine.odroid.com/article/how-to-create-a-backup-server-using-clonezilla-and-pxe-part-1/.

PXElinux

En los dos ejemplos anteriores, hemos configurado DHCP para indicar a un cliente PXE que intente iniciar la descarga del archivo denominado "pxelinux.0" desde un servidor específico. Este archivo es parte del paquete pxelinux de los cargadores de arranque. Así que sigue adelante, instala pxelinux en el mismo sistema en el que instales tftp-hpa. Puedes encontrar la página de inicio de Syslinux en https://www.syslinux.org/wiki/index.php ... ux_Project y los documentos de pxelinux en https://www.syslinux.org/wiki/index.php?title=PXELINUX si alguna vez tiene planes para ampliar tu servidor PXE más allá de este pequeño ejercicio de Clonezilla, considera estudiarlo.

Configura tftp-hpa y haz que Clonezilla se inicie en la red

El paquete tftp-hpa es un servidor FTP muy pequeño y liviano que se utiliza casi exclusivamente para arrancar desde una red. Es muy ligero en cuanto a seguridad, así que no lo implementes en un entorno hostil a menos que tenga una o dos capas de seguridad que lo cubran. Al ser tan liviano su configuración es bastante simple, aunque no muy estandarizada. Lo más importante es configurar la carpeta raíz para tftpd. Mucha gente usa ubicaciones como /var/lib/tftpboot o /srv/tftpboot o incluso /opt/tftpboot. He visto ejemplos de configuraciones en las que el usuario crea el directorio /tftp, pero creo que es mejor no saturar el directorio / con más carpetas. Al final, opté por /srv/tftp.root simplemente porque quería que me llamase la atención. Después de instalarlo en la ubicación elegida, crea el directorio y luego edita el archivo de configuración. La ubicación del archivo de configuración varía bastante dependiendo del dispositivo que esté utilizando. Puede ser /etc/default/tftpd-hpa o /etc/xinetd.d/tftp, o incluso /etc/conf.d/in.tftpd, por lo que deberás consultar la documentación de las distribuciones para asegurarte de que lo configures correctamente. A efecto de este “HOWTO” usaré /var/lib/tftpboot como directorio raíz.

En primer lugar, vamos a poner pxeliunx.0 en su lugar. La ubicación de la instalación volverá a depender de tu distribución, pero generalmente estará en algún lugar de /usr/share o /usr/lib. Después de copiarlo, crearemos un directorio para guardar los archivos que extraeremos del archivo .zip de Clonezilla y otro directorio para guardar nuestros parámetros de arranque.

$ sudo cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot
$ sudo mkdir /var/lib/tftpboot/cz
$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg
Luego copia el archivo zip de Clonezilla, extráelo y copie algunos archivos en su ubicación:
$ sudo cp /path/to/clonezilla-live-2.6.0-37-amd64.zip /var/lib/tftpboot/cz/
$ cd /var/lib/tftpboot/cz/
$ sudo unzip -X *.zip
$ sudo cp /var/lib/tftpboot/cz/syslinux/*.c32 /var/lib/tftpboot
Luego crearemos el archivo de configuración del cargador de arranque PXE. Este “HOWTO” no será nada elegante, ni siquiera bonito. Simplemente cargará lo que le digamos después de una cuenta atrás de 10 segundos:
$ cd /var/lib/tftpboot/pxelinux.cfg
$ sudo nano default
Coloca lo siguiente en el archivo de configuración "default" y no olvides cambiar la dirección IP en la última línea. Como nota al margen, encontré esta plantilla en algún lugar online hace algún tiempo atrás, aunque no recuerdo dónde:
# The default menu style - using vesa menu in this example
DEFAULT vesamenu.c32
# If you have a png image in the tftpr directory you can specify it here like so:
# Menu Background image.png
# Prompt user for selection
prompt 0

#Global label identifier
label Clonezilla
        # Set this entry as the default selection
        menu default
        # Actual viewable label text
        MENU LABEL Clonezilla
        # The timeout for the entry is a bit unclear, but 100 should be equivalent to 10 Seconds.  
        TIMEOUT 100
        TOTALTIMEOUT 100
        # The kernel image to load.  This entry would actually reside at /var/lib/tftpboot/cz/live/vmlinuz   
    #The path is relative to /var/lib/tftpboot or your tftp root directory
        kernel cz/live/vmlinuz
        # The initrd relative to the /var/lib/tftpboot directory and specifying the netboot server, protocol, and file
        # In this example the tftp protocol is used on server 192.168.123.1.  The file is filesystem.squashfs
        append initrd=cz/live/initrd.img boot=live username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://192.168.123.1/cz/live/filesystem.squashfs
Ahora reinicia el servicio tftpd e inicia un ordenador cliente con PXE. Debería funcionar.

Lecturas PXE adicionales

https://help.ubuntu.com/community/UbuntuLTSP/ProxyDHCP <== Algo antiguo pero muy bueno https://clonezilla.org/livepxe.php <== El documento que inspiró este HOWTO https://clonezilla.org/clonezilla-SE/ <== Configuración de un servidor Clonezilla dedicado para una implementación a gran escala https://wiki.gentoo.org/wiki/Home_router <== Usando dnsmasq e iptables para convertir un servidor con dos NIC en un router

Parte tres: Creando un servidor de archivos con el sistema de archivos de red

El protocolo de intercambio de archivos más común en todo ecosistema nix* tiene que ser el Sistema de archivos de red. NFS es lo que podríamos llamar tecnología antigua. Las primeras versiones fueron desarrolladas internamente por Sun Microsystems en 1984. Pronto cumplirá 35 años y su última revisión importante fue en 2016. Entonces, ¿por qué todavía se está usando un protocolo de intercambio de archivos tan antiguo? Bueno, por la misma razón por la rueda sigue usandose. Simplemente funciona. Puedes usar NFS para compartir los directorios /home de los usuarios desde un único servidor, por lo que, independientemente del sistema nix* en el que inicien sesión en tu red, tendrán exactamente el mismo contenido en /home/nombre usuario. Puedes usar NFS para almacenar los sistemas de archivos raíz de estaciones de trabajo sin disco o imágenes de máquinas virtuales. Básicamente, cualquier parte del sistema de archivos de un ordenador nix* puede residir remotamente en un servidor NFS. El recurso compartido de red se puede montar en el momento del arranque con una entrada en /etc/fstab o manualmente con el comando "mount".

NFS no es perfecto. En la década de 1980, la mayoría de los esfuerzos de desarrollo del software se centraron en la "funcionalidad" y no en la "seguridad". Aunque ha habido intentos de añadir más seguridad a NFS en los últimos veinte años, ninguna de las soluciones propuestas ha sido fácil de configurar y de mantener. Por lo tanto, en este momento realmente no existe un estándar que aporte seguridad a NFS por defecto. Existe una propuesta interesante (https://tools.ietf.org/html/draft-cel-nfsv4-rpc-tls-01) que podría tener un gran impacto si llega a adoptarse. Por ahora, creo que es más seguro instalar tu servidor de archivos NFS detrás de un buen firewall y restringir el acceso al mismo con una buena configuración. Si tiene tiempo para aprender, puede echar un vistazo a LDAP y Kerberos o incluso RPCSEC GSS.

Casi todas las distribuciones modernas de Linux tienen el servidor NFS integrado en su núcleo como módulo. Lo que les falta es la interfaz de usuario para configurarlo y controlarlo. En Debian, el paquete se llama nfs-kernel-server y en la mayoría del resto de distribuciones se llama nfs-utils. Adelante, instálalo ahora.

El siguiente paso es decidir dónde almacenarás las copias de seguridad y crear el directorio en tu servidor de archivos. Para este “HOWTO” usaré /srv/backups como directorio compartido. Primero, crearemos el directorio y cambiaremos su propiedad al usuario y grupo con menos privilegiados:

$ sudo mkdir /srv/backups
$ sudo chown nobody:nogroup /srv/backups
El archivo de configuración /etc/exports controla qué directorios se comparten y de qué forma los usuarios y/o los ordenadores pueden acceder a ellos. Una copia de la página de guía de /etc/exports la tienes disponible en https://linux.die.net/man/5/exports o ejecutando "man export" en un intérprete de comandos bash.

El archivo exports tiene tres secciones por línea. Empieza con el directorio que compartirá el servidor, seguido de por quién puede acceder a él y el tipo de opciones para compartir y el acceso que tendrá esa persona. A modo de ejemplo:

/foo/bar    lazlo(rw,sync,root_squash)
Significa que tengo acceso de lectura/escritura a /foo/bar, el servidor sincronizará las escrituras pendientes en el disco antes de aceptar una nueva, y si alguien actúa en este recurso compartido como root, su uid y gid cambiarán de root:root (0:0) a nobody:nogroup (65535: 65535) para la acción dada.
Otro ejemplo:

/home/lazlo    *(r,no_root_squash)
Llegado este momento, puedes reiniciar el servicio NFS y montar tu recurso compartido en un sistema remoto. Pruébalo creando algunos archivos y directorios y luego ejecuta "ls -al" para asegurarte de que todo sea propiedad de nobody:nogroup. Para montar manualmente el recurso compartido en el Cliente Linux, deberás instalar el paquete del cliente NFS "nfs-common" en los sistemas basados en Debian. El paquete "nfs-utils" para la mayoría de las distribuciones incluye los programas cliente y servidor. Una vez que lo hayas instalado, puedes crear un nuevo subdirectorio en tu carpeta de inicio y montar el recurso compartido (nos olvide cambiar la dirección IP en el ejemplo):
$ mkdir nfstest
$ sudo mount -t nfs 192.168.123.1:/srv/backups ./nfstest
$ mkdir nfstest/testdir
$ dd if=/dev/zero of=nfstest/testdir/testfile bs=1M count=10000 status=progress
Una vez hecho esto comprueba la propiedad:
$ ls -al nfstest/testdir
El propietario del archivo debe ser nobody y el grupo debe ser nogrup. Si ese es el caso, enhorabuena: estás listo para usar tu servidor de archivos con Clonezilla.

Lecturas Adicionales

Si quieres o lo necesitas, puedes reajustar NFS con una amplia variedad de formas para adaptarlo mejor a tu entorno. Una simple búsqueda en Google de "guía ajustes nfs" te proporcionará una excelente base. Solo recuerda que existen cosas tales como "ajustes excesivos" y "puntos de rendimientos decrecientes".

Be the first to comment

Leave a Reply