Configuración de un 'Servidor de arranque de red PXE' para varias instalaciones de distribución de Linux en RHEL / CentOS 7


Servidor PXE - Entorno de ejecución de prearranque - indica a una computadora cliente que arranque, ejecute o instale un sistema operativo directamente desde una interfaz de red, eliminando la necesidad de grabar un CD/DVD o utilizar un medio físico, o puede facilitar el trabajo de instalar distribuciones de Linux en su infraestructura de red en varias máquinas al mismo tiempo.

  1. CentOS 7 Minimal Installation Procedure
  2. RHEL 7 Minimal Installation Procedure
  3. Configure Static IP Address in RHEL/CentOS 7
  4. Remove Unwanted Services in RHEL/CentOS 7
  5. Install NTP Server to Set Correct System Time in RHEL/CentOS 7

Este artículo explicará cómo puede instalar y configurar un servidor PXE en RHEL / CentOS 7 x64 bits con repositorios de instalación local reflejados, fuentes proporcionadas por la imagen ISO del DVD de CentOS 7, con la ayuda del servidor DNSMASQ .

Que proporciona servicios DNS y DHCP , paquete Syslinux que proporciona cargadores de arranque para el arranque en red, TFTP-Server , que hace imágenes de arranque disponibles para descargar a través de la red utilizando Protocolo de transferencia de archivos trivial (TFTP) y VSFTPD Servidor que alojará la imagen de DVD reflejada localmente montada, que actuará como un RHEL oficial/Repositorio de instalación espejo de CentOS 7 desde donde el instalador extraerá los paquetes requeridos.

Paso 1: instalar y configurar el servidor DNSMASQ

1. No es necesario recordarle que es absolutamente exigente que una de las interfaces de su tarjeta de red, en caso de que su servidor posea más NIC, deba configurarse con una dirección IP estática del mismo rango de IP que pertenece al segmento de red que proporcionará PXE servicios.

Entonces, después de haber configurado su dirección IP estática, actualizado su sistema y realizado otras configuraciones iniciales, use el siguiente comando para instalar el demonio DNSMASQ .

# yum install dnsmasq

2. El archivo de configuración principal predeterminado de DNSMASQ ubicado en el directorio /etc se explica por sí mismo, pero tiene la intención de ser bastante difícil de editar, debido a sus explicaciones muy comentadas.

Primero asegúrese de hacer una copia de seguridad de este archivo en caso de que necesite revisarlo más tarde y, luego, cree un nuevo archivo de configuración en blanco utilizando su editor de texto favorito emitiendo los siguientes comandos.

# mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf

3. Ahora, copie y pegue las siguientes configuraciones en el archivo dnsmasq.conf y asegúrese de cambiar las declaraciones explicadas a continuación para que coincidan con su configuración de red en consecuencia.

interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0

pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot

Las declaraciones que necesita cambiar son las siguientes:

  1. interface – Interfaces that the server should listen and provide services.
  2. bind-interfaces – Uncomment to bind only on this interface.
  3. domain – Replace it with your domain name.
  4. dhcp-range – Replace it with IP range defined by your network mask on this segment.
  5. dhcp-boot – Replace the IP statement with your interface IP Address.
  6. dhcp-option=3,192.168.1.1 – Replace the IP Address with your network segment Gateway.
  7. dhcp-option=6,92.168.1.1 – Replace the IP Address with your DNS Server IP – several DNS IPs can be defined.
  8. server=8.8.4.4 – Put your DNS forwarders IPs Addresses.
  9. dhcp-option=28,10.0.0.255 – Replace the IP Address with network broadcast address –optionally.
  10. dhcp-option=42,0.0.0.0 – Put your network time servers – optionally (0.0.0.0 Address is for self-reference).
  11. pxe-prompt – Leave it as default – means to hit F8 key for entering menu 60 with seconds wait time..
  12. pxe=service – Use x86PC for 32-bit/64-bit architectures and enter a menu description prompt under string quotes. Other values types can be: PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI.
  13. enable-tftp – Enables the build-in TFTP server.
  14. tftp-root – Use /var/lib/tftpboot – the location for all netbooting files.

Para otras opciones avanzadas relacionadas con el archivo de configuración, no dude en leer el manual de dnsmasq.

Paso 2: Instale los cargadores de arranque SYSLINUX

4. Una vez que haya editado y guardado el archivo de configuración principal DNSMASQ , siga adelante e instale el paquete de cargador de arranque Syslinx PXE mediante la ejecución del siguiente comando.

# yum install syslinux

5. Los archivos de cargadores de arranque PXE residen en la ruta absoluta del sistema /usr/share/syslinux , por lo que puede verificarlo enumerando el contenido de esta ruta. Este paso es opcional, pero es posible que deba conocer esta ruta porque en el siguiente paso copiaremos todo su contenido en la ruta del Servidor TFTP .

# ls /usr/share/syslinux

Paso 3: Instale TFTP-Server y complételo con los cargadores de arranque SYSLINUX

6. Ahora, pasemos al siguiente paso e instalemos TFTP-Server y, luego, copiemos todos los archivos de bootloders proporcionados por el paquete Syslinux desde la ubicación indicada arriba a /var/lib/tftpboot ruta emitiendo los siguientes comandos.

# yum install tftp-server
# cp -r /usr/share/syslinux/* /var/lib/tftpboot

Paso 4: Configurar el archivo de configuración del servidor PXE

7. Normalmente, el servidor PXE lee su configuración de un grupo de archivos específicos (archivos GUID - primero, archivos MAC - después, Archivo predeterminado (último) alojado en una carpeta llamada pxelinux.cfg , que debe estar ubicada en el directorio especificado en la declaración tftp-root del archivo de configuración principal de DNSMASQ .

Cree el directorio requerido pxelinux.cfg y complételo con un archivo predeterminado emitiendo los siguientes comandos.

# mkdir /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default

8. Ahora es el momento de editar el archivo de configuración del Servidor PXE con opciones de instalación de distribuciones de Linux válidas. También tenga en cuenta que todas las rutas utilizadas en este archivo deben ser relativas al directorio /var/lib/tftpboot .

A continuación, puede ver un archivo de configuración de ejemplo que puede usar, pero modifique las imágenes de instalación (archivos kernel e initrd), los protocolos (FTP, HTTP, HTTPS, NFS) y las direcciones IP para reflejar los repositorios de origen y las rutas de instalación de su red en consecuencia.

# nano /var/lib/tftpboot/pxelinux.cfg/default

Agregue el siguiente extracto completo al archivo.

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount

label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp

label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append  initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password

label 4
menu label ^4) Boot from local drive

Como puede ver, las imágenes de arranque de CentOS 7 (kernel e initrd) residen en un directorio llamado centos7 relativo a /var/lib/tftpboot (en una ruta absoluta del sistema, esto significaría /var/lib/tftpboot/centos7 ) y se puede acceder a los repositorios del instalador mediante el protocolo FTP en la ubicación de red 192.168.1.20/pub - en este caso, los repositorios se alojan localmente porque la dirección IP es la misma que la dirección del servidor PXE).

La instalación obtiene un espejo de Internet oficial de CentOS 7 (este caso requiere una conexión a Internet disponible en el cliente a través de DHCP y NAT).

Importante: como puede ver en la configuración anterior, hemos utilizado CentOS 7 con fines de demostración, pero también puede definir imágenes de RHEL 7, y las instrucciones y configuraciones completas se basan únicamente en CentOS 7, así que tenga cuidado al elegir la distribución.

Paso 5: agregar imágenes de arranque de CentOS 7 al servidor PXE

9. Para este paso, se requieren el kernel de CentOS y los archivos initrd. Para obtener esos archivos, necesita la imagen CentOS 7 DVD ISO . Entonces, continúe y descargue CentOS DVD Image, colóquelo en su unidad de DVD y monte la imagen en la ruta del sistema /mnt emitiendo el siguiente comando.

repositorios de instaladores locales para fuentes FTP .

# mount -o loop /dev/cdrom  /mnt
# ls /mnt

Si su máquina no tiene unidad de DVD, también puede descargar CentOS 7 DVD ISO localmente usando las utilidades wget o curl desde un espejo CentOS y montarlo.

# wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
# mount -o loop /path/to/centos-dvd.iso  /mnt

10. Una vez que el contenido del DVD esté disponible, cree el directorio centos7 y copie el kernel de arranque de CentOS 7 y las imágenes initrd desde la ubicación del DVD montado en la estructura de la carpeta centos7.

# mkdir /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/vmlinuz  /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/centos7

La razón para usar este enfoque es que, más adelante, puede crear nuevos directorios separados en la ruta /var/lib/tftpboot y agregar otras distribuciones de Linux al menú PXE sin estropear toda la estructura del directorio.

Paso 6: Cree la fuente de instalación del espejo local de CentOS 7

11. Aunque puede configurar espejos de origen de instalación a través de una variedad de protocolos como HTTP, HTTPS o NFS, para esta guía, he elegido el protocolo FTP porque es muy confiable y fácil de configurar con la ayuda del servidor vsftpd .

Instale aún más el demonio vsftpd, copie todo el contenido montado en DVD a la ruta predeterminada del servidor vsftpd (/var/ftp/pub ); esto puede llevar un tiempo dependiendo de los recursos del sistema y agregar permisos legibles para esta ruta emitiendo los siguientes comandos.

# yum install vsftpd
# cp -r /mnt/*  /var/ftp/pub/ 
# chmod -R 755 /var/ftp/pub

Paso 7: iniciar y habilitar daemons en todo el sistema

12. Ahora que la configuración del servidor PXE finalmente ha finalizado, inicie los servidores DNSMASQ y VSFTPD , verifique su estado y habilítelo en todo el sistema para que se inicie automáticamente después de cada reinicio del sistema. ejecutando los siguientes comandos.

# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd

Paso 8: Abra el firewall y pruebe la fuente de instalación FTP

13. Para obtener una lista de todos los puertos que deben estar abiertos en su Firewall para que las máquinas cliente lleguen y arranquen desde el servidor PXE, ejecute el comando netstat y agregue las reglas de CentOS 7 Firewalld de acuerdo con dnsmasq y puertos de escucha vsftpd.

# netstat -tulpn
# firewall-cmd --add-service=ftp --permanent  	## Port 21
# firewall-cmd --add-service=dns --permanent  	## Port 53
# firewall-cmd --add-service=dhcp --permanent  	## Port 67
# firewall-cmd --add-port=69/udp --permanent  	## Port for TFTP
# firewall-cmd --add-port=4011/udp --permanent  ## Port for ProxyDHCP
# firewall-cmd --reload  ## Apply rules

Protocolo FTP seguido de la ubicación de red /pub en la URL archivada y el resultado debe ser como se muestra en la siguiente captura de pantalla.

ftp://192.168.1.20/pub

15. Para depurar el servidor PXE en busca de posibles errores de configuración u otra información y diagnósticos en el modo en vivo, ejecute el siguiente comando.

# tailf /var/log/messages

16. Finalmente, el último paso requerido que debe hacer es desmontar CentOS 7 DVD y quitar el medio físico.

# umount /mnt

Paso 9: configurar los clientes para que arranquen desde la red

17. Ahora sus clientes pueden iniciar e instalar CentOS 7 en sus máquinas configurando Network Boot como dispositivo de inicio principal desde el BIOS de su sistema o presionando una tecla específica durante las operaciones de BIOS POST como se especifica en el manual de la placa base.

Para elegir el arranque en red. Después de que aparezca el primer mensaje PXE, presione la tecla F8 para ingresar a la presentación y luego presione la tecla Enter para avanzar al menú PXE.

18. Una vez que haya llegado al menú PXE, elija el tipo de instalación de CentOS 7, presione la tecla Enter y continúe con el procedimiento de instalación de la misma manera que lo haría desde un dispositivo de arranque de medios locales.

capturas de pantalla puede ver un ejemplo de una instalación remota de cliente a través de VNC.

Eso es todo para configurar un servidor PXE mínimo en CentOS 7 . En mi próximo artículo de esta serie, discutiré otros problemas relacionados con esta configuración del servidor PXE, como cómo configurar instalaciones automatizadas de CentOS 7 usando archivos Kickstart y agregando otras distribuciones de Linux. al menú PXE - Ubuntu Server y Debian 7 .