Practica Parte 1 Virtualización:
Vamos a crear una infraestructura con varias máquinas virtuales y contenedores donde vamos a instalar un servidor DHCP para configurar de forma dinámica la configuración de red.

- Cliente 1: Debian 12.
- Cliente 2: Windows 10.
1. Creación de las plantillas para las máquinas clientes.
1.1 Crea con virt-install una máquina virtual de Debian 12 con formato qcow2 y un tamaño de 3GiB.
- La máquina debe tener un usuario debian con contraseña debian que puede utilizar sudo sin contraseña.
- Instala el servidor ssh en la máquina.
- En el usuario debian copia tu clave pública para que podamos acceder sin introducir la contraseña por ssh.
Antes de comenzar, hay que tener un bridge br0 ya creado, para saber como hacerlo pincha aquí . Gracias a Jose Domingo por un trabajo excelente.
Para crear la máquina:
virt-install --connect qemu:///system \ --virt-type kvm \ --name deboriginal \ --cdrom ~/Descargas/Sistemas\ Operativos/debian-12.2.0-amd64-netinst.iso\ --os-variant debian10 \ --disk size=3 \ --memory 1024 \ --vcpus 1
- name: Nombre que tendrá la máquina.
- cdrom: La ubicación de la imagen ISO para instalar el sistema.
- os-variant: El tipo de sistema.
- disk size: El tamaño que tendrá el disco.
- memory: El tamaño que tendrá la memoria RAM.
- vcpus: El número de núcleos o cores que tendrá la máquina.
Le he puesto el usuario debian, para que no pida contraseña editando el archivo visudo:
sudo visudo
Añadiendo justo como aparece en la imagen de abajo:
debian ALL=(ALL:ALL) NOPASSWD: ALL

Luego he utilizado ssh-copy-id para poder copiar mi clave pública a la máquina destino a la cual me quiero conectar (la que he creado más arriba). Al hacer esto como ya sabemos, permite la conexión a la máquina sin utilizar contraseña.
ssh-copy-id usuario@ipdestino

1.2 Convierte la máquina virtual en una plantilla llamada plantilla-cliente. El hostname de la máquina debe ser plantilla-cliente. ¿Cuánto ocupa el volumen de la plantilla en disco?.
Lo primero es eliminar la información de mi máquina llamada deboriginal con sysprep, algo necesario ya que permite eliminar la información del sistema para que pueda utilizarse como una plantilla.
sudo virt-sysprep -d deboriginal --hostname plantilla-cliente

Con los datos eliminados, hay que quitarle los privilegios de escritura al disco, ya que debe ser solo de lectura para que pueda utilizarse como una plantilla, y no se permita hacer cambios en el. El disco en este caso se llama deboriginal.qcow2. Hecho esto, lo he renombrado a plantilla-cliente, y al intentar arrancarlo, muestra el error de que no puede, por lo que es correcto.
sudo chmod -w /var/lib/libvirt/images/deboriginal.qcow2
virsh -c qemu:///system domrename deboriginal plantilla-cliente
virsh -c qemu:///system start plantilla-cliente

- Nota: el cambio de nombre es del host o nombre de la máquina. El nombre del disco sigue siendo el mismo deboriginal.qcow2.
Ahora hay que utilizar virt-sparsify desde /var/lib/libvirt/images. Esto permite comprimir la imagen ocupando mucho menos espacio en disco, por lo que genera un nuevo disco llamado debcomprimida.qcow2:
virt-sparsify --compress deboriginal.qcow2 debcomprimida.qcow2

El siguiente paso es editar la plantilla para que use el nuevo disco comprimido llamado debcomprimido.qcow2:
virsh -c qemu:/// edit plantilla-cliente
Sustituyendo el nombre del disco comprimido, como aparece en la imagen de abajo:

Y como se ve ha pasado a ocupar mucho menos espacio, de 3GB, ha pasado a 450MB aproximadamente:
virsh -c qemu:///domblkinfo plantilla-cliente vda --human

No hay que olvidar de que a este disco, tambien hay que quitarle los permisos de escritura para que no arranque la máquina.
sudo chmod -w /var/lib/libvirt/images/debcomprimida.qcow2

2. Creación del escenario.
El objetivo es crear el escenario que contiene un bridge, una máquina Debian que hará de router, 2 contenedores que harán de servidor WEB y DHCP, y dos máquinas clientes. En la siguiente imagen se ve la estructura:

2.1 Crea una red muy aislada, que se llame red-intra que creará el puente br-intra. Esta red se tiene que iniciar cada vez que encendemos el host.
El primer paso es crear el fichero que va a contener los datos de la red:
sudo nano /usr/share/libvirt/networks/red-intra.xml
El archivo debe tener este contenido:
<network>
<name>red-intra</name>
<bridge name='br-intra'/>
</network>
Como las anteriores veces, hay que crear un nuevo archivo xml para declarar y crear la red-intra. Hecho esto se define para que se inicie automáticamente y se inicia:
virsh -c qemu:///system net-define red-intra.xml
virsh -c qemu:///system net-autostart red-intra
virsh -c qemu:///system net-start red-intra
root@debian:/usr/share/libvirt/networks# virsh -c qemu:///system net-define red-intra.xml
La red red-intra se encuentra definida desde red-intra.xml
root@debian:/usr/share/libvirt/networks# virsh -c qemu:///system net-autostart red-intra
La red red-intra ha sido marcada para iniciarse automáticamente
root@debian:/usr/share/libvirt/networks# virsh -c qemu:///system net-start red-intra
La red red-intra se ha iniciado

2.2 Crea con virt-install la máquina router con Debian 12:
- Está conectada a la red pública (al bridge br0) y la red-intra.
- Esta máquina utiliza un disco en formato raw de 10 Gb.
- El hostname de esta máquina debe ser router-tunombre.
- Se debe poder acceder a ella por ssh con el usuario root sin que te pida contraseña (configura tu clave pública).
- Debes configurar la segunda interfaz de red con direccionamiento estático para que tenga la dirección 192.168.200.1.
- Está máquina se debe iniciar cada vez que arrancamos el host.
Para crear el disco raw de 10GB:
virsh -c qemu:///system vol-create-as discos 10gb.raw --format raw 10G
virsh -c qemu:///system vol-list discos --details
root@debian:/usr/share/libvirt/networks# virsh -c qemu:///system vol-create-as discos 10gb.raw --format raw 10G Se ha creado el volumen 10gb.raw root@debian:/usr/share/libvirt/networks# virsh -c qemu:///system vol-list discos --details Nombre Ruta Tipo Capacidad Alojamiento ---------------------------------------------------------------------- 10gb.raw /var/discos/10gb.raw archivo 10,00 GiB 10,00 Gi
Para crear la clonación en base de la plantilla:
virt-clone --connect=qemu:///system --original plantilla-cliente --name router-andres --auto-clone --file /var/discos/10gb.raw
Para crear la máquina router-andres:
virt-install --connect qemu:///system \
--virt-type kvm \
--name router-andres \
--os-variant debian10 \
--cdrom /home/debian/Descargas/Sistemas\ Operativos/debian-12.2.0-amd64-netinst.iso \
--disk /var/discos/10gb.raw \
--network bridge=br0,model=virtio \
--network network=red-intra,model=virtio \
--memory 1024 \
--vcpus 1
Para ver que la máquina router-andres tiene un disco raw:
virsh -c qemu:///system dumpxml router-andres
debian@debian:/usr/share/libvirt/networks$ virsh -c qemu:///system dumpxml router-andres
<domain type='kvm' id='2'>
<name>router-andres</name>
<uuid>e1140c30-95b7-497b-ac20-b8cd53091a38</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://debian.org/debian/10"/>
</libosinfo:libosinfo>
</metadata>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-q35-7.2'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<vmport state='off'/>
</features>
<cpu mode='host-passthrough' check='none' migratable='on'/>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/discos/10gb.raw' index='2'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
O tambien desde Virt Manager:
<disk type="file" device="disk">
<driver name="qemu" type="raw"/>
<source file="/var/discos/10gb.raw" index="2"/>
<backingStore/>
<target dev="vda" bus="virtio"/>
<alias name="virtio-disk0"/>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</disk>

Para activar el inicio automático y ver más información de la máquina:
virsh -c qemu:///system autostart router-andres
virsh -c qemu:///system dominfo router-andres
debian@debian:/usr/share/libvirt/networks$ virsh -c qemu:///system autostart router-andres
Domain 'router-andres' marked as autostarted
debian@debian:/usr/share/libvirt/networks$ virsh -c qemu:///system dominfo router-andres
Id: 2
Nombre: router-andres
UUID: e1140c30-95b7-497b-ac20-b8cd53091a38
Tipo de sistema operatuvo: hvm
Estado: ejecutando
CPU(s): 1
Hora de la CPU: 24,2s
Memoria máxima: 1048576 KiB
Memoria utilizada: 1048576 KiB
Persistente: si
Autoinicio: activar
Guardar administrado: no
Modelo de seguridad: apparmor
DOI de seguridad: 0
Etiqueta de seguridad: libvirt-e1140c30-95b7-497b-ac20-b8cd53091a38 (enforcing)
Hay que permitir que la máquina router haga SNAT con iptables para poder brindarle salida a internet a las máquinas:
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o enp1s0 -j MASQUERADE
- Nota: no esta permanente, si se reinicia la máquina router, hay que volver a introducir la regla, o hacerla permanente usando por ejemplo el paquete iptables-persistent con:
sudo netfilter-persistent save
3. Contenedores:
Crea dos contenedores LXC conectados a la red red-intra.
-
ServidorWeb: Es un contador creado a partir de la plantilla Ubuntu 22.04 Jammy. Configura su red de forma estática. Su dirección IP debe ser la 192.168.200.3
-
ServidorDHCP: Es un contador creado a partir de la plantilla Debian Bookworm. Configura su red de forma estática. Su dirección IP debe ser la 192.168.200.2.
3.1 Servidor Web.
Para crear el contenedor servidorweb e iniciarlo:
sudo lxc-create -n servidorweb -t ubuntu -- -r jammy
lxc-start servidorweb
root@debian:/usr/share/libvirt/networks# sudo lxc-create -n servidorweb -t ubuntu -- -r jammy Checking cache download in /var/cache/lxc/jammy/rootfs-amd64 ... Copy /var/cache/lxc/jammy/rootfs-amd64 to /var/lib/lxc/servidorweb/rootfs ... Copying rootfs to /var/lib/lxc/servidorweb/rootfs ... Generating locales (this might take a while)... es_ES.UTF-8... done Generation complete. Creating SSH2 RSA key; this may take some time ... 3072 SHA256:N3Zo8cxOjwHliLX6C53FH3xVL1B7ydFxWdRVF6x8zlk root@debian (RSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:JzIUGFZAhOLGE+dDpLYu8UyPsEoU2ipYPbhEkWKVqLM root@debian (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:hPenKINpWVlhueZTk5EQM1jgnYeCvjw9XSQQVE5NOvo root@debian (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Current default time zone: 'Etc/UTC' Local time is now: Sun Oct 22 14:27:02 UTC 2023. Universal Time is now: Sun Oct 22 14:27:02 UTC 2023. ## # The default user is 'ubuntu' with password 'ubuntu'! # Use the 'sudo' command to run tasks as root in the container. ## root@debian:/usr/share/libvirt/networks# lxc-start servidorweb root@debian:/usr/share/libvirt/networks#
Ahora para conectar el contenedor servidorweb a la red-intra , hay que modificar el archivo del contenedor en /var/lib/lxc/servidorweb/config y añadir en la parte de lxc.net.0.link = br-intra ya que corresponde a la red intra.
Quedando así:
# Network configuration lxc.net.0.type = veth lxc.net.0.hwaddr = 00:16:3e:ac:a2:7f lxc.net.0.link = br-intra lxc.net.0.flags = up
Ahora reinicio el contenedor y ya pertenece a esa red correctamente. Ahora para darle una dirección estática es modificar el archivo /etc/netplan/10-lxc.yaml con lo siguiente:
network: ethernets: eth0: dhcp4: no addresses: [192.168.200.3/24] gateway4: 192.168.200.1 version: 2
Para aplicar los cambios es con:
sudo netplan apply
Para activar que los contenedores se inicien automáticamente es incluyendo en su archivo de configuración en /var/lib/lxc/contenedor/config la línea lxc.start.auto = 1 y reiniciar el equipo.
3.2 Servidor DHCP.
Para crear el contenedor Debian 12 servidordhcp:
lxc-create -n servidordhcp -t debian -- -r bookworm
Con el contenedor creado hay que modificar si archivo de configuración en /var/lib/lxc/servidordhcp/config y activar la limitación de memoria, el autostart y que se conecte a la red intra y para ello hay que añadir las lineas:
lxc.net.0.link = br-intra lxc.start.auto = 1 lxc.cgroup2.memory.max = 512M
Luego en el archivo /etc/network/interfaces (ya que es Debian) para que tome la direccion 192.168.200.2:
auto eth0 iface eth0 inet static address 192.168.200.2 netmask 255.255.255.0
Y el resultado final es:

Para entrar a la máquina router-andres sin que pida la contraseña he hecho lo mismo que en pasos anteriores:
ssh-copy-id debian@192.168.1.198 (red de casa):
- Nota: la ip corresponde a la interfaz de entrada que deberia ser 172.22.X.X (la interfaz de la izquierda de la máquina router que se ve en la imagen del escenario al principio, pero ese direccionamiento solo ocurre cuando se realiza conectado al servidor DHCP del instituto.

Para conectarme a la máquina router y posteriormente al servidordhcp: (Pasando la clave pública siendo el mismo usuario usando ssh -A):

La salida del comando ip a en router:

Para hacer SNAT y que los contenedores tengan salida a internet hay que poner una regla de iptables en el router:
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o enp1s0 -j MASQUERADE
- Donde enp1s0 es la interfaz de salida a internet 172.22 (de la que hablé más arriba).
Luego hay que activar el bit forwarding editando /etc/sysctl.conf descomentando la línea:
net.ipv4.ip_forward = 1
Y aplicando el cambio con:
sudo sysctl -p
Una vez hecho eso, desde el contenedor ya se puede salir al exterior, por ejemplo desde el servidor web:

Para comprobar la regla de iptables creada antes:
sudo iptables -t nat -L -n

4. Creación de las máquinas clientes.
4.1 Crea una nueva máquina virtual llamada cliente1 a partir de la plantilla plantilla-cliente que tenga un volumen de 5G. Tienes que tener en cuenta los siguientes aspectos:
- Antes de crear la máquina virtual redimensiona su sistema de fichero para que ocupe el espacio completo del disco.
- La máquina se conecta a la red red-intra.
- La máquina tiene una configuración estática de red.
- La máquina debe tener el hostname cliente1-tunombre.
Compruebo de nuevo el espacio que ocupa la plantilla, creo el volumen de 5GB y redimensiono el sistema de ficheros:
virsh -c qemu:///system domblkinfo plantilla-cliente vda --human
virsh -c qemu:///system vol-create-as discos cliente1.qcow2 5G --format qcow2 --backing-vol /var/lib/libvirt/images/debcomprimida.qcow2 --backing-vol-format qcow2
sudo qemu-img resize /var/discos/cliente1.qcow2 5G
root@debian:/var/lib/libvirt/images# virsh -c qemu:///system domblkinfo plantilla-cliente vda --human
Capacidad: 3,000 GiB
Ubicación: 446,457 MiB
Físico: 448,201 MiB
root@debian:/var/lib/libvirt/images# virsh -c qemu:///system vol-create-as discos cliente1.qcow2 5G --format qcow2 --backing-vol /var/lib/libvirt/images/debcomprimida.qcow2 --backing-vol-format qcow2
Se ha creado el volumen cliente1.qcow2
root@debian:/var/lib/libvirt/images# sudo qemu-img resize /var/discos/cliente1.qcow2 5G
Image resized.
Para crear la máquina:
virt-install --connect qemu:///system \
--virt-type kvm \
--name cliente1-andres \
--os-variant debian10 \
--disk path=/var/discos/cliente1.qcow2 \
--network network=red-intra,model=virtio \
--memory 1024 \
--vcpus 1 \
--import
Para ver que el disco de la máquina tiene hecho el backing store es viendo si tiene el parámetro backing file con:
sudo qemu-img info /var/discos/cliente1.qcow2
root@debian:/var/lib/libvirt/images# sudo qemu-img info /var/discos/cliente1.qcow2 image: /var/discos/cliente1.qcow2 file format: qcow2 virtual size: 5 GiB (5368709120 bytes) disk size: 12.4 MiB cluster_size: 65536 backing file: /var/lib/libvirt/images/debcomprimida.qcow2 backing file format: qcow2 Format specific information: compat: 0.10 compression type: zlib refcount bits: 16
Para redimensionar el sistema de ficheros a 5GB, copio el disco cliente1.qcow2 y creo uno nuevo llamado newcliente1.qcow2, le aplico la redimensión y le vuelvo a cambiar el nombre que tenia el original:
cd /var/discos/
cp cliente1.qcow2 newcliente1.qcow2
virt-resize --expand /dev/sda1 cliente1.qcow2 newcliente1.qcow2
mv newcliente1.qcow2 cliente1.qcow2
Así:
root@debian:/var/lib/libvirt/images# cd /var/discos/
root@debian:/var/discos# ls
10gb.raw cliente1.qcow2
root@debian:/var/discos# cp cliente1.qcow2 newcliente1.qcow2
root@debian:/var/discos# virt-resize --expand /dev/sda1 cliente1.qcow2 newcliente1.qcow2
root@debian:/var/discos# ls
10gb.raw cliente1.qcow2 newcliente1.qcow2
root@debian:/var/discos# mv newcliente1.qcow2 cliente1.qcow2
root@debian:/var/discos# ls
10gb.raw cliente1.qcow2


Ahora le he dado una ip estática 192.168.200.5 y le he cambiado el hostname a cliente1-andres:

La máquina cliente1 haciendo ping al exterior:

Practica Parte 2: DHCP
2.1 Instalación del servidor DHCP:
Instala un servidor DHCP en el contenedor servidorDHCP con las siguientes características:
- Rango de direcciones: 192.168.200.10 - 192.168.200.200.
- Máscara de red: 255.255.255.0
- Duración de la concesión: 30 minutos
- Puerta de enlace: 192.168.200.1
- Servidor DNS: 172.22.0.1
Para poder realizar la instalación del servidor DHCP, necesitamos instalar:
sudo apt install isc-dhcp-server
Esto dará un error, pero es lo habitual ya que no está configurado. Para ello lo primero es especificar la interfaz, en mi caso es eth0:
En /etc/default/isc-dhcp-server:
INTERFACESv4="eth0"
Luego hay que ir al archivo de configuración /etc/dhcp/dhcpd.conf y añadir lo siguiente para cumplir lo que se pide:
subnet 192.168.200.0 netmask 255.255.255.0 {
default-lease-time 1800;
max-lease-time 1800;
range 192.168.200.10 192.168.200.200;
option subnet-mask 255.255.255.0;
option routers 192.168.200.1;
option domain-name-servers 172.22.0.1;
}
-
max-lease-time: Tiempo máximo en segundos que un cliente puede solicitar; se usa el menor valor entre lo solicitado y el máximo.
-
min-lease-time: Tiempo mínimo en segundos que un cliente puede solicitar; se usa el mayor valor entre lo solicitado y el mínimo.
-
default-lease-time: Tiempo de concesión por defecto si el cliente no solicita un periodo específico.
-
option dhcp-renewal-time: Tiempo en segundos hasta que el cliente entra en estado RENEWING (T1).
-
option dhcp-rebinding-time: Tiempo en segundos hasta que el cliente entra en estado REBINDING (T2).
-
option routers: Dirección de la puerta de enlace para acceso a internet.
-
option domain-name-servers: IPs de los servidores DNS para el cliente.
-
option domain-name: Nombre de dominio enviado al cliente.
-
option subnet-mask: Máscara de subred enviada al cliente.
-
option broadcast-address: Dirección de difusión de la red.
Hecho esto se reinicia el servicio para aplicar los cambios, y comprobamos que no haya errores:
sudo systemctl restart isc-dhcp-server
systemctl status isc-dhcp-server
Cuando el servidor entrega direcciones ip a los clientes, se añaden a un registro en un fichero de concesiones en /var/lib/dhcp/dhcpd.leases, por ejemplo:
root@servidordhcp:/home/debian# cat /var/lib/dhcp/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.4.3-P1
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
lease 192.168.200.10 {
starts 2 2023/10/24 14:58:42;
ends 2 2023/10/24 15:28:42;
tstp 2 2023/10/24 15:28:42;
cltt 2 2023/10/24 14:59:11;
binding state free;
hardware ethernet 52:54:00:e5:2b:15;
uid "\377\000\345+\025\000\001\000\001,\311p\221RT\000\345+\025";
}
lease 192.168.200.12 {
starts 2 2023/10/24 15:03:25;
ends 2 2023/10/24 15:33:25;
cltt 2 2023/10/24 15:03:25;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 52:54:00:94:ba:61;
uid "\001RT\000\224\272a";
set vendor-class-identifier = "MSFT 5.0";
client-hostname "DESKTOP-CTM6CPA";
}
lease 192.168.200.11 {
starts 2 2023/10/24 15:52:12;
ends 2 2023/10/24 15:54:12;
cltt 2 2023/10/24 15:52:12;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 52:54:00:e5:2b:15;
client-hostname "cliente1-andres";
}
lease 192.168.200.12 {
starts 2 2023/10/24 15:03:25;
ends 2 2023/10/24 15:33:25;
tstp 2 2023/10/24 15:33:25;
cltt 2 2023/10/24 15:03:25;
binding state free;
hardware ethernet 52:54:00:94:ba:61;
uid "\001RT\000\224\272a";
set vendor-class-identifier = "MSFT 5.0";
}
lease 192.168.200.11 {
starts 2 2023/10/24 15:52:12;
ends 2 2023/10/24 16:22:12;
cltt 2 2023/10/24 15:52:12;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 52:54:00:e5:2b:15;
client-hostname "cliente1-andres";
}
lease 192.168.200.10 {
starts 2 2023/10/24 15:52:14;
ends 2 2023/10/24 16:22:14;
cltt 2 2023/10/24 15:52:14;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 52:54:00:e5:2b:15;
uid "\377\000\345+\025\000\001\000\001,\311p\221RT\000\345+\025";
client-hostname "cliente1-andres";
}
Ahora, en los equipos clientes, lo único que hay que comprobar, es que engan activado el uso de dhcp. En el caso de Debian, en el archivo /etc/network/interfaces:
sudo nano /etc/network/interfaces
Que tenga este contenido (suponiendo que su interfaz sea eth0):
auto eth0
iface eth0 inet dhcp
Y para solicitar una nueva ip hay que usar dhclient, o especificando la interfaz:
dhclient
dhclient eth0
Y para liberar la ip:
dhclient -r
Para solicitar una neuva ip en una máquina Windows:
ipconfig /release
ipconfig /renew
Aquí se ve comolos clientes debian y windows no tienen ip, y y luego toman una ip del servidor dhcp y que también tienen acceso a internet:



2.2 Reserva para el servidor Web:
Actualmente el servidor web servidorWeb tiene una configuración de red estática. Vamos a configurar una reserva para esta máquina:
-
Configura de forma adecuada el servidor dhcp para que ofrezca al servidor Web la misma IP (reserva) que habíamos configurado de forma estática.
-
Modifica la configuración de red del servidor Web para que tome la configuración de red de forma dinámica.
Para lograr esto hay que añadr en el archivo de configuración /etc/dhcp/dhcpd.conf:
host servidordhcp {
hardware ethernet 00:16:3e:ac:a2:7f;
fixed-address 192.168.200.3;
}
sudo systemctl restart isc-dhcp-server
Y ahora se ve como el servidor web mantiene su ip incluso renovandola:

2.3 Instalación del servidor Web:
Para ello sigue los siguientes pasos:
-
Instala el servidor apache2 en el contenedor servidorWeb.
-
Crea en tu host un directorio en /srv/web con un fichero index.html.
-
Monta ese directorio en el directorio /var/www/html del contenedor servidorWeb.
-
Configura en el router una regla de DNAT para que podamos acceder al servidor Web desde el exterior. (La configuración debe ser persistente.)
Para poder instalar el servidor apache2 en el contenedor, hay que acceder a el e instalarlo con:
lxc-attach -n servidorWeb
sudo apt update
sudo apt install apache2
systemctl start apache2
Ahora en nuestro equipo host (fuera del contenedor) creo un archivo index de ejemplo:
mkdir -p /srv/web
echo "<h1>Bienvenido a mi servidor web</h1>" > /srv/web/index.html
En el archivo de configuracion del servidor web /var/lib/lxc/servidorWeb/config hay que añadir y reiniciarlo:
lxc.mount.entry=/srv/web var/www/html none bind 0 0
Para que el servidor haga nat, donde eth1 es la interfaz que conecta con la red externa:
auto eth1
iface eth1 inet static
address 172.22.0.1
netmask 255.255.0.0
post-up iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o enp1s0 -j MASQUERADE