Instalación e Configuración dun Servidor PXE: Diferenzas entre revisións

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura
Liña 447: Liña 447:
</source>
</source>


*Obtivémola de [[https://www.plop.at/images/ploplinux/splash.png aquí]] , pero vale calquera imaxe 640x480
Obtivémola de [[https://www.plop.at/images/ploplinux/splash.png aquí]] , pero vale calquera imaxe 640x480


*<b>Teclas aceleradoras:</b>
*<b>Teclas aceleradoras:</b>
Liña 455: Liña 455:
</source>
</source>


*Definimos a cor vermella
Definimos a cor vermella
*O premer D xa se selecciona esta opción
O premer D xa se selecciona esta opción


*<b>Mensaxe de axuda o seleccionar a opción</b>
*<b>Mensaxe de axuda o seleccionar a opción</b>

Revisión como estaba o 16 de marzo de 2016 ás 11:20

Introducción

Un Servidor PXE (Preboot eXecution Environment), permite a un equipo cliente arrancar un SO a travé da rede. Isto pode ser útil nos seguintes casos:

  • O equipo cliente non ten unidade de CD e queremos arrancar dende un CD-Live.
  • O equipo cliente non ten disco duro e queremos que colla o SO dende a rede
  • Ter diferentes utilidades, como memtest ou antivirus, preparadas para ser executadas sobre un equipo independentemente do que teña instalado.

Funcionamento

  1. No equipo cliente escollemos arrancar por PXE
  2. O Cliente PXE busca un servidor DHCP na rede
  3. Unha vez localizado, o servidor asignalle á máquina cliente unha IP, netmask, gw
  4. Mediante o protocolo TFTP o servidor envía á máquina cliente o SO
  5. O cliente co que lle manda o servidor é capaz de arrancar un minisistema na RAM.

Para instalar un Servidor PXE precisamos instalar:

  • Servidor DHCP
  • Servidor TFTP


Proceso de arranque do Servidor PXE en Detalle

Pxe1.png
  1. O cliente envía por broadcast unha menaxe DHCPDISCOVER
  2. O Servidor DHCP responde coa IP, next-server, filename
  3. O Cliente solicita unha petición TFTP a next-server solicitando filename.
  4. O Servidor TFTP responde e envía o filename o cliente.

Configuracións de Rede Iniciais

  • Empregaremos Virtualbox para simular ambos equipos.
  • O Servidor terá instalado un sistema Debian Jessie actualizado
  • O Servidor terá dúas tarxetas de rede, A configuración da rede do servidor será
Conexión de Área Local 1 Conexión de Área Local 2
  • Está conectada a rede NAT
  • IP: 10.0.2.15
  • Netmask:255.255.255.0
  • GW:10.0.2.2
  • Está conectada a rede interna (intnet)
  • IP: 172.20.4.100
  • Netmask:255.255.0.0
  • A rede interna intnet, non proporciona DHCP.
  • Se arrancamos unha 2º MV conectada a intnet co SystemRescueCd e lle asignamos unha ip compatible
ifconfig enp0s3 172.20.4.1 netmask 255.255.0.0
  • Veremos que ten rede co servidor
ping 172.20.4.100

Acceso dende o equipo real á MV con NAT

A 1º tarxeta de rede da MV está configurada por NAT, polo que non podemos comunicar o equipo real coa MV.

Para facelo podemos empregar redireccionamento de portos (port forwarding). Redireccionaremos o porto TCP/2222 da máquina real o porto TCP/22 (SSH) da máquina virtual.

Port forwarding1.png
Port forwarding2.png

Como deixamos host IP baleiro, calquera máquina que se conecte o porto 2222 da nosa máquina comunicarase coa MV

Na máquina real comprobamos que temos o porto aberto

root@debianRojas:/home/rojas# netstat -nap | grep 2222 
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      9967/VirtualBox

Para que a configuración sexa efectiva é preciso apagar a máquina e o virtualbox. Logo reiniciamos a máquina.

Na nosa máquina temos que instalar un servidor ssh

apt-get install ssh

E permitir o acceso ssh do root

/etc/ssh/sshd_config 
PermitRootLogin yes

Conectámonos dende o equipo real

ssh -p 2222 root@127.0.0.1

Instalación do Servidor PXE

Instalamos un servidor dhcp

  • Instalamos o paquete necesario
apt-get install isc-dhcp-server
  • Modificamos os arquivos de configuración correspondentes
/etc/default/isc-dhcp-server

INTERFACES=”eth1”

/etc/dhcp/dhcpd.conf

# Ocomentamos para que non espere un timeout
#option domain-name "example.org"; 
#option domain-name-servers ns1.example.org, ns2.example.org;

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

authoritative;    # O descomentamos

# Definimos un rango de direccións a asignar entre 10 e 20.


subnet 172.20.0.0 netmask 255.255.0.0 {

        range 172.20.2.10 172.20.2.20;

	 # Servidor PXE
	 next-server 172.20.4.100;
	 filename “pxelinux.0”;

        }
  • Iniciamos o Servicio DHCP
	
	/etc/init.d/isc-dhcp-server restart
  • Arrancamos o cliente co SRCD e colle a IP 172.20.2.10

Instalando o servidor tftp

	
apt-get install tfptd-hpa
  • O seu arquivo de configuración é
	
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
  • Iniciamos o servidor
	
/etc/init.d/tftpd-hpa start
  • Os directorio onde serviremos as imaxes de arranque é /srv/tfp
  • Descargamos a imaxe de instalación de Debian strecth 64 bits para arrancar pola rede
	
cd /srv/tftp
wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar xzf netboot.tar.gz
  • Aparecen as seguines carpetas e arquivos
	
debian-installer  ldlinux.c32  pxelinux.0  pxelinux.cfg  version.info
  • O seu significado é o seguinte:
    • debian-installer: Contén o núcleo do sistema
    • pxelinux.0: É o cargador de arranque a través da rede, forma parte do proxecto syslinux
    • pxelinux.cfg/default: É o arquivo de configuración de pxelinux, onde lle indica que kernel arrancar. Posteriormente empregaremos este arquivo para crear menús.

Comprobamos

  • Iniciamos a máquina cliente coa súa tarxeta configurada na rede interna e arrancamos
Comprobamos1.png
Comprobamos2.png

Como deixamos host IP baleiro, calquera máquina que se conecte o porto 2222 da nosa máquina comunicarase coa MV

  • Comeza o proceso de instalación de Debian correctamente
  • Problema: Non temos acceso a Internet.
  • Solución: Temos que facer que o servidor PXE enrute a eth1 a eth0 para que así a rede interna teña acceso a Internet.

Configurar Enrutamento no Servidor PXE

  • En /etc/sysctl.conf descomentamos
net.ipv4.ip_forward=1
  • Creamos un script coa nosa configuración personalizada
/etc/iptables-script.sh
#Configuración para enmascarar os paquetes recibidos da rede interna
iptables -t nat -A POSTROUTING -s 172.20.0.0/16 -o eth0 -j MASQUERADE
  • Dámoslle permiso de execución
chmod +x /etc/iptables-script.sh
  • Facemos que se execute o inicio
vi /etc/rc.local

#Cargamos a configuración de iptables
/etc/iptables-script.sh
  • Modificamos a configuración do servidor DHCP
option domain-name-servers 8.8.8.8; # DNS
subnet 172.20.0.0 netmask 255.255.0.0 {
  range 172.20.2.10 172.20.2.20;
  option routers 172.20.4.100; #Porta de enlace (Ten que ser o servidor PXE)
 …..
}

Creando unha configuración Mulitidistro

Agora xa temos un servidor PXE funcional que nos permite arrancar por rede a instalación de Debian, pero queremos que nos apareza un menú que nos permitar arrancar a nosa máquina con varias imaxes a través da rede.

Reconfiguracion do instalador de Debian

Para elo imos a deixar o noso /srv/tftp como sigue:

  • Creamos unha carpeta boot onde teremos unha carpeta por cada sistema arrancable.
  • Creamos dentro de boot a carpeta strecht64 (A nosa distribución debian). Movemos todo o contido da instalación de Debian a /srv/tftp/boot/stretch64.
  • Para poder arrancar pola rede, necesitamos algúns arquivos de inicio, que forman parte do paqute syslinux
    • Poderíamos descargalos de aquí e descomprimir os que necesitásemos
    • En vez diso, imos a reempregar os que xa veñen coa instalación por rede do Debian que temos descargado.
  • Creamos unha carpeta para os arquivos necesarios para o arranque
mkdir /srv/tftp/libs
  • Copiamos os seguintes arquivos
cp strecht64/debian-installer/amd64/pxelinux.0 /srv/tftp
cd strecht64/debian-installer/amd64/boot-screens/
cp libcom32.c32 /srv/tftp/libs
cp libutil.c32 /srv/tftp/libs
cp vesamenu.c32 /srv/tftp/libs
cp splash.png /srv/tftp/libs
cp ldlinux.c32 /srv/tftp
  • Creamos un arquivo baleiro para o menú
touch pxelinux.cfg/default
  • A estructura de arquivos quedaría como sigue
usuario@debian:/srv/tftp# tree 
.
├── boot
│   └── stretch64
│      └── debian-installer
│          └── amd64
│                  ├── boot-screens
│               └── grub
├── libs
│   ├── libcom32.c32
│   ├── libutil.c32
│   ├── vesamenu.c32
│   └── splash.png
├── ldlinux.c32
├── pxelinux.0
└── pxelinux.cfg
    └── default

Editamos o arquivo pxelinux.cfg/default e creamos un menú para o noso debian

#Ruta onde se almacenan as librerias necesarias para o arranque
path ../libs
#Menu de arranque grafico
default libs/vesamenu.c32
prompt 0
timeout 300

#imaxe de fondo 640x480 pixels
MENU BACKGROUND libs/splash.png
MENU TITLE Benvido a PXE

LABEL Debian Stretch 64
    MENU LABEL Debian Stretch 64
      KERNEL boot/stretch64/debian-installer/amd64/linux
      APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz
Debian boot1.png

Pasándolle parámetros o instalador Debian

De este xeito xa non teremos que escoller o idioma de instalación

LABEL Debian Stretch 64
        MENU LABEL Debian Stretch 64
        KERNEL boot/stretch64/debian-installer/amd64/linux
        APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8

Engadindo o System Rescue CD

Queremos ter un menú multinivel coas seguintes opcións

  • Instaladores
    • Debian Stretch 64
  • Live-CD
    • System Rescue CD

O SRCD non é tan sinxelo de configurar como a imaxe netboot de Debian. Nese caso, todo o que necesitaba para arrancar era o núcleo, pero o SRCD necesita durante o seu arranque acceder o arquivo sysrcd.dat. Por iso será necesario instalar un servidor NFS para compartilo na rede.

Instalación dun servidor NFS

  • Instalamos o paquete necesario
apt-get install nfs-kernel-server
  • No arquivo de configuración compartimos unha carpeta como só lectura
/etc/exports
/srv/nfs/srcd   172.20.0.0/255.255.0.0(ro,sync)
  • Reiniciamos o servicio
/etc/init.d/ssh restart

Preparación dos arquivos do SRCD

  • Primeiro creamos a carpeta onde se almacenará o arranque do SRCD.
mkdir /srv/tftp/boot/srcd
  • Descargamos unha iso do SRCD e montámola na máquina virtual.
mount /dev/sr0 /media/cdrom
  • Copiamos os arquivos necesarios para o arranque á carpeta /srv/tftp/boot/srcd
cp /media/cdrom/isolinux/initram.igz /srv/tftp/boot/srcd
cp /media/cdrom/isolinux/rescue* /srv/tftp/boot/srcd
  • Copiamos o resto de arquivos necesarios a /srv/nfs/srcd
cp /media/cdrom/sysrcd.dat /srv/nfs/srcd
cp /media/cdrom/sysrcd.md5 /srv/nfs/srcd


Modificamos o arquivo de configuración

Modificamos o menú de arranque pxelinux.cfg/default

######################
# Opcións Xerais
######################

#Ruta onde se almacenan as librerias necesarias para o arranque
path ../libs
#Menu de arranque grafico
default libs/vesamenu.c32 
prompt 0
timeout 300

#imaxe de fondo 640x480 pixels
MENU BACKGROUND libs/splash.png.1
MENU COLOR HOTKEY      1;36;44    #fc0000 #00000000 
MENU TITLE Benvido a PXE

#####################
# Definición do menú
#####################
MENU BEGIN INSTALADORES
 MENU TITLE INSTALADORES
  LABEL Debian Stretch 64
 	MENU LABEL ^Debian Stretch 64
        KERNEL boot/stretch64/debian-installer/amd64/linux
	APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8
   	TEXT HELP
  		Instala Debian Stretch 64 bits.
   	ENDTEXT

   LABEL volver
 	MENU LABEL ^Volver
 	MENU EXIT
   
        TEXT HELP
  		Volta o menu principal.
   	ENDTEXT
MENU END
   
MENU BEGIN LIVE-CD
 MENU TITLE LIVE-CD
    LABEL SystemRescueCD
	 MENU LABEL ^System Rescue Cd 64
	 KERNEL boot/srcd/rescue64 setkmap=es
	 APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.4.100:/srv/nfs/srcd
         TEXT HELP
		Inicia o System Rescue CD con idioma castelan.
         ENDTEXT

    LABEL volver
 	MENU LABEL ^Volver
 	MENU EXIT

        TEXT HELP
  		Volta o menu principal.
   	ENDTEXT


   MENU END


Multiboot1.png
Multiboot2.png

Menú Principal

Menú Live-CD

Melloras visuais no arquivo de configuración

Introducimos as seguintes modificacións:

  • Cambiamos a imaxe de fondo
MENU BACKGROUND libs/splash.png.1

Obtivémola de [aquí] , pero vale calquera imaxe 640x480

  • Teclas aceleradoras:
 MENU COLOR HOTKEY      1;36;44    #fc0000 #00000000 
 MENU LABEL ^Debian Stretch 64

Definimos a cor vermella O premer D xa se selecciona esta opción

  • Mensaxe de axuda o seleccionar a opción
TEXT HELP
         Instala Debian Stretch 64 bits.
ENDTEXT