boot from lan

10
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERIA ELECTRICA REDES DE COMPUTADORA (RDC-115) CICLO I-2012 PROXMOX: “Boot From LAN” DOCENTE: Ing. Carlos Osmin Pocasangre. ALUMNOS: Manfred Mauricio González Romero Daniel Alejandro Flores Abrego Marvin Ivan Hernández Vázquez Carlos Mauricio Rodríguez Cruz Ciudad Universitaria, 07 de Junio del 2012.

Upload: manfred-gonzalez

Post on 04-Aug-2015

86 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Boot From LAN

UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERIA ELECTRICA REDES DE COMPUTADORA (RDC-115) CICLO I-2012

PROXMOX:“Boot From LAN”

DOCENTE: Ing. Carlos Osmin Pocasangre.

ALUMNOS: Manfred Mauricio González Romero

Daniel Alejandro Flores Abrego Marvin Ivan Hernández Vázquez Carlos Mauricio Rodríguez Cruz

Ciudad Universitaria, 07 de Junio del 2012.

Page 2: Boot From LAN

MARCO TEORICO

PREBOOT EXECUTION ENVIRONMENT

Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados.

PXE fue introducido como parte del framework Wired for Management por Intel y fue descrito en la especificación (versión 2.1) publicada por Intel y Systemsoft el 20 de septiembre de 1999. PXE utiliza varios protocolos de red como IP, UDP, DHCP y TFTP, y conceptos como Globally Unique Identifier (GUID), Universally Unique Identifier (UUID) y Universal Network Device Interface (UNDI).

El término cliente PXE sólo se refiere al papel que la máquina juega en el proceso de arranque mediante PXE. Un cliente PXE puede ser un servidor, un ordenador de mesa, portátil o cualquier otra máquina que esté equipada con código de arranque PXE.

Representacion Grafica de PXE.

FUNCIONAMIENTO

El firmware del cliente trata de encontrar un servicio de redirección PXE en la red para recabar información sobre los servidores de arranque PXE disponibles. Tras analizar la respuesta, el firmware solicitará al servidor de arranque apropiado el file path de un network bootstrap program (NBP), lo descargará en la memoria RAM del ordenador mediante TFTP, probablemente lo verificará, y finalmente lo ejecutará. Si se utiliza un único NBP para todos los clientes PXE se puede especificar mediante BOOTP sin necesidad de un proxy DHCP, pero aún será necesario un servidor TFTP.

Page 3: Boot From LAN

DISPONIBILIDAD

PXE fue diseñado para funcionar sobre diferentes arquitecturas. La versión 2.1 de la especificación asigna identificadores de arquitectura a seis tipos distintos de sistemas, incluyendo IA-64 y EC Alpha. Aunque la especificación sólo soporta completamente IA-32. Intel incluyó PXE en la EFI para IA-64, creando un estándar de facto con esta implementación.

PROTOCOLO

El protocolo PXE consiste en una combinación de los protocolos DHCP y TFTP con pequeñas modificaciones en ambos. DHCP es utilizado para localizar el servidor de arranque apropiado, con TFTP se descarga el programa inicial de bootstrap y archivos adicionales.

Para iniciar una sesión de arranque con PXE el firmware envía un paquete de tipo DHCPDISCOVER extendido con algunas opciones específicas de PXE al puerto 67/UDP (puerto estándar del servicio DHCP). Estas opciones indican que el firmware es capaz de manejar PXE, pero serán ignoradas por los servidores DHCP estándar.

PROXY DHCP

Si un servicio de redirección PXE (Proxy DHCP) recibe un paquete DHCPDISCOVER extendido, responde con un paquete de difusión DHCPOFFER extendido con opciones PXE al puerto 68/UDP. Este paquete se difundirá hasta que la mayoría de los clientes PXE se auto-configuren mediante DHCP. Los clientes se identificarán con su GUID/UUID.

Un paquete DHCPOFFER extendido contiene:

• un campo PXE Discovery Control para indicar si se debe utilizar Multicasting, Broadcasting, o Unicasting para contactar con los servidores de arranque PXE.

• una lista con las direcciones IP de los servidores de arranque PXE.• un menú en el que cada entrada representa un servidor de arranque PXE.• Un prompt que indica al usuario que pulse [Tecla de función|<F8>]] para ver el menú de arranque.• un tiempo de espera que lanza la primera opción del menú de arranque cuando expira.

El servicio de proxy DHCP debe ejecutarse sobre el mismo servidor que el servicio estándar de DHCP. Puesto que ambos servicios no pueden compartir el puerto 67/UDP, el Proxy DHCP se ejecuta sobre el puerto 4011/UDP y espera que los paquetes DHCPDISCOVER extendidos de los clientes PXE sean paquetes DHCPREQUEST. El servicio estándar DHCP debe enviar una combinación especial de opciones PXE en su paquete DHCPOFFER, de forma que los clientes PXE sepan que deben buscar un proxy DHCP en el mismo servidor, en el puerto 4011/UDP.

Page 4: Boot From LAN

SERVIDOR DE ARRANQUE

Para contactar con cualquier servidor de arranque PXE el firmware debe obtener una dirección IP y el resto de información de un único paquete DHCPOFFER extendido. Tras elegir el servidor de arranque PXE apropiado el firmware envía un paquete DHCPREQUEST extendido mediante multicast o unicast al puerto 4011/UDP o broadcast al puerto 67/UDP. Este paquete contiene el servidor de arranque PXE y la capa de arranque PXE, permitiendo ejecutar múltiples tipos de servidores de arranque mediante un único daemon (o programa) de arranque. El paquete DHCPREQUEST extendido también puede ser un paquete DHCPINFORM.

Si un servidor de arranque PXE recibe un paquete DHCPREQUEST extendido como el descrito anteriormente y si está configurado para el tipo de servidor de arranque PXE y la arquitectura de cliente solicitados, debe responder devolviendo un paquete DHCPACK extendido son opciones específicas de PXE.

El contenido más importante de un paquete DHCPACK extendido es:

• el file path completo para descargar el NBP vía TFTP.• el tipo de servidor de arranque PXE y la capa de arranque PXE.• la configuración multicast TFTP, si debe utilizarse multicast TFTP.

Un servidor de arranque PXE debe soportar Boot Integrity Services (BIS). BIS permite al cliente PXE verificar los NBPs descargados mediante un archivo de checksum que es descargado desde el mismo servidor de arranque que el NBP.

NETWORK BOOTSTRAP PROGRAM

Tras recibir el paquete DHCPACK solicitado, e Network Bootstrap Program es descargado y ejecutado en la RAM del cliente. Tiene acceso a las APIs del firmware PXE (Pre-boot, UDP, TFTP, Universal Network Device Interface, UNDI).

Page 5: Boot From LAN

INSTALACION SERVIDOR PXE EN GNU LINUX (UBUNTU 11.10)

PXE fue introducido como parte del framework Wired for Management por Intel y fue descrito en la especificación (version 2.1) publicada por Intel y Systemsoft el 20 de septiembre de 1999. PXE utiliza varios protocolos de red como IP, UDP, DHCP y TFTP, y conceptos como Globally Unique Identifier (GUID), Universally Unique Identifier (UUID) y Universal Network Device Interface (UNDI).

El término cliente PXE sólo se refiere al papel que la máquina juega en el proceso de arranque mediante PXE. Un cliente PXE puede ser un servidor, un ordenador de mesa, portátil o cualquier otra máquina que esté equipada con código de arranque PXE.

El firmware del cliente trata de encontrar un servicio de redirección PXE en la red para recabar información sobre los servidores de arranque PXE disponibles. Tras analizar la respuesta, el firmware solicitará al servidor de arranque apropiado el file path de un network bootstrap program (NBP), lo descargará en la memoria RAM del ordenador mediante TFTP, probablemente lo verificará, y finalmente lo ejecutará. Si se utiliza un único NBP para todos los clientes PXE se puede especificar mediante BOOTP sin necesidad de un proxy DHCP, pero aún será necesario un servidor TFTP.

Instalar y configurar los servicios:

root@uServer:~#apt-get install vsftpd tftp-hpa nfs-server

Ahora necesitamos un servidor DHCP en nuestra red. Esto se puede realizar de dos formas. Podemos instalar un servidor DHCP en la misma maquina servidor que ejecutara el los servicios de tftp o utilizar un router que tenga servidor DHCP que soporte PXE.

En este caso se utilizo un router con el sistema m0n0wall. m0n0wall es un proyecto dedicado a la creación de un paquete completo para servidor de seguridad , utilizando una como sistema principal, proporcionando características importantes para cortafuego comerciales, cual permite una facilidad de uso y reduciendo los costos de licenciamientos por ser Software Libre.

m0n0wall esta basado en una versión básica de FreeBSD, con servicios web, PHP y maneja un interfaz gráfica GUI, como también su configuración de arranque. La configuración principal es almacenada en archivos XML.

A continuación se presenta un ejemplo de como se realizaría la configuración del servidor DHCP del router m0n0wall de el laboratorio (esta captura no corresponde al m0n0wall del laboratorio).

-Primero la dirección con la que se ingresa al webGui es: https://172.16.2.1:10000-La dirección IP de nuestro servidor tftp es : 172.16.2.244-y el archivo que buscara en nuestro server es: pxelinux.0

Page 6: Boot From LAN

Una vez que ingresamos a la interfase web no dirigimos a la sección de servicios y ahí escogemos DHCP server; a lo cual nos mostrara las opciones que aparecen a la derecha como se ve en la captura.

Salvamos los cambios y con esto terminamos la configurar baica del servidor DHCP de m0n0wall.

Luego ya con el servidor DHCP del router configurado con el soporte a PXE procedemos a a la configuración de los archivo de los distintos servicios.

Primero editaremos con el editor de nuestra preferencia el fichero exports que pertenece a NFS (Network File System) que se encuentra el el directorio /etc.

root@uServer:~#gedit /etc/exports

Y agregamos al final del fichero lo siguiente:

Agregamos los rangos de las ipQue el servidor DHCP asignara:De la 172.16.2.50 a 172.16.2.100

En next server colocaremos la ipDe nuestro servidor tftp:

172.16.2.244

En filename colocamos el nombreDel archivo que buscara la maquina:Pxelinux.0

Page 7: Boot From LAN

}# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) #

/var/ftp/ubuntu_server 172.16.2.0/255.255.255.0(rw,sync) /var/ftp/slitaz 172.16.2.0/255.255.255.0(rw,sync)

“/var/ftp/slitaz” es el directorio donde montaremos el ISO de slitaz. La dirección IP es la de nuestra red y su respectiva mascara. Y las opciones (rw, sync) es para los parametros del host rw son los permisos de escritura y lectura y sync es el modo de sincronización.

Ahora editaremos el archivo de configuración de nuestro servidor tftp:

root@uServer:~#gedit /etc/default/tftp-hpa

En el campo TFTP_DIRECTORY colocaremos el directorio raíz del servidor tftp. En el campo TFTP_ADDRESS la dirección IP de nuestra maquina servidor y el puerto.

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS="172.16.2.244:69" TFTP_OPTIONS="--secure" RUN_DAEMON="yes"

Luego de descargar el ISO de slitaz y ubuntu server los guardamos y renombramos en algún directorios de nuestra carpeta home:

Ahora editaremos el fichero fstab que pertenece a mountd:

root@uServer:~#gedit /etc/fstab

Y añadimos al final del archivo lo siguiente:

/home/ubuntu/slitaz.iso /var/ftp/slitaz udf,iso9660 user,auto,loop 0 0 /home/ubuntu/ubuntu_server.iso /var/ftp/ubuntu_server udf,iso9660 user,auto,loop 0 0

Page 8: Boot From LAN

Ahora crearemos los directorios necesarios, iniciando por los directorios donde se montaremos los ISO de los sistemas operativos:

root@uServer:~#mkdir -p /var/ftp/ubuntu_serverroot@uServer:~#mkdir -p /var/ftp/slitaz

Ahora crearemos los directorios donde se encontrara las configuraciones de nuestro PXE, este sera a partir del directorio raíz del servidor tftp:

root@uServer:~#mkdir -p /var/lib/tftpboot/images/slitazroot@uServer:~#mkdir -p /var/lib/tftpboot/images/ubunturoot@uServer:~#mkdir -p /var/lib/tftpboot/pxelinux.cfg

Ahora de cada distribución que queremos tenemos que copiar su kernel y su initrd en sus respectivas carpetas:

ahora copiaremos los archivos pxelinux.0 y menu.c32 al directorio raiz de nuestro tftp:

root@uServer:~#cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpbootroot@uServer:~#cp /usr/lib/syslinux/menu.c32 /var/lib/tftpboot

Ahora crearemos y editaremos el archivo del menú PXE:

root@uServer:~#gedit /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32 MENU TITLE RDC115/2012 GNU/Linux PXE Installation Server PROMPT 0 TIMEOUT 300

LABEL Ubuntu (SERVER) KERNEL images/ubuntu/vmlinuz APPEND initrd=images/ubuntu/initrd.gz vga=normal boot=casper netboot=nfs nfsroot=172.16.2.244:/var/ftp/ubuntu_server/ ramdisk_size=32768

LABEL Slitaz KERNEL images/slitaz/bzImage APPEND initrd=images/slitaz/rootfs.gz vga=normal boot=casper netboot=nfs nfsroot=172.16.2.244:/var/ftp/slilaz/ ramdisk_size=32768

Page 9: Boot From LAN

Luego de esto le damos todos los permisos al directorio raiz del tftp server:

root@uServer:~#chmod 777 /var/lib/tftpboot -R

Por ultimo reiniciamos todos los servicios para que los cambios surtan efecto:

root@uServer:~#service vsftpd restartroot@uServer:~#service nfs-server restartroot@uServer:~#service tftp-hpa restart

Con esto ya podemos usar nuestro servidor PXE para arrancar desde la LAN.

A continuación se presentan unas capturas del servidor PXE en funcionamiento en una maquina virtual de virtualbox.

Page 10: Boot From LAN