Vamos a crear la máquina virtual como hicimos anteriormente en Instalación automatizada basada en medio de almacenamiento extraíble.
En vagrant creamos una máquina que tenga una ip estática 192.168.100.3 que va a ser la tarjeta de red por la que funcionará pxe, en mi caso no creó esa ip y la tuve que escribir a mano en el /etc/network/interfaces, la otra tarjeta de red es la de vagrant-libvirt que será la que nos conecte al exterior.
Para proceder a configurar el protocolo TFTP Y DHCP para que sea el host el que conceda ip a la máquina y establezca la conexión al preseed, utilizando dnsmasq
apt install dnsmasq
Establecemos en el fichero /etc/dnsmaq.conf con los siguientes parámetros:
dhcp-range=192.168.100.100,192.168.100.200,255.255.255.0
Establecemos el fichero con el que va a bootear el dhcp:
dhcp-boot=pxelinux.0
Habilitamos el tftp:enable-tftp
Establecemos una ruta donde va a albergar nuestro Debian:tftp-root=/srv/tftp
Creamos la carpeta en /srvsudo mkdir /srv/tftp
a continuación instalamos el wget y lo usamos en /srv/tftp
wget http://ftp.debian.org/debian/dists/bullseye/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar -zxf netboot.tar.gz
(para descomprimir los archivos)rm netboot.tar.gz
srv/tftp/debian-installer/amd64/boot-screens/txt.cfg
En este fichero de configuración utilizamos los siguientes parámetros:
label install
menu label ^Install
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet
label unattended-gnome
menu label ^Instalacion Debian Desatendida Preseed
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz hostname=preseed domain=preseed preseed/url=192.168.100.5/preseed.cfg locale=en_US.UTF-8 console-setup/charmap=UTF-8 console-setup/ask_detect=false keyboard-configuration/xkb-keymap=us --
En este label he puesto la url del servidor apache que vamos a utilizar, para que descargue el preseed y lo inyecte en la instalación.
Instalamos apache2:sudo apt install apache2
luego copiamos el preseed, lo ponemos en /var/www/html/
junto al index.html, hacemos la página HTML que albergue el preseed y la ruta ya está establecida en el txt.cfg
Una vez hecho esto, para que nuestra máquina que se conecta a la tarjeta de red estática que hemos creado, necesitamos establecer unas reglas de nftables que nos ayudará a conseguir que la máquina que conecte con el servidor pxe salga al exterior para descargar las dependencias.
Para ello, debemos activar el bit de forwarding que se halla en /etc/sysctl.conf
y descomentamos #net.ipv4.ip_forward=1
Instalamos y habilitamos nftables(Todo esto siendo root):
apt install nftables
systemctl start nftables.service
systemctl enable nftables.service
nft add table nat
nft list tables
ahora realizamos las reglas de nftables para conseguir que esas máquinas tengan internet:nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
nft add rule ip nat postrouting oifname "eth0" ip saddr 192.168.100.0/24 counter masquerade
Ahora guardamos los cambios: nft list ruleset > /etc/nftables.conf
Ahora en virt-manager procedemos a crear y enlazar una máquina a una red aislada:
<network connections="2">
<name>red_muy_aislada</name>
<uuid>b0083374-5cb6-4a8d-bd3c-32cf0d870b54</uuid>
<bridge name="virbr3" stp="on" delay="0"/>
<mac address="52:54:00:e9:be:50"/>
</network>
debemos arrancarla por red como prioridad, luego de esto funcionará perfectamente nuestra instalación desatendida.