Creación del escenario

  • Primero creamos la imagen inicial.
virt-install --connect qemu:///system --cdrom /home/alejandrogv/Escritorio/ISOS/debian-11.1.0-amd64-netinst.iso --network network=bridge --name servidor --memory 1024 --vcpus 1 --disk size=10
  • Ahora con el volumen que se ha creado crearemos las imagenes de los clientes y el servidor.
sudo qemu-img create -b /var/lib/libvirt/images/servidor.qcow2 -f qcow2 /var/lib/libvirt/images/server.qcow2

sudo qemu-img create -b /var/lib/libvirt/images/servidor.qcow2 -f qcow2 /var/lib/libvirt/images/cliente1.qcow2

sudo qemu-img create -b /var/lib/libvirt/images/servidor.qcow2 -f qcow2 /var/lib/libvirt/images/cliente2.qcow2
  • Y creamos las máquinas a partir de estas imagenes
sudo virt-install --connect qemu:///system --name server --memory 1024 --vcpus 1 --disk /var/lib/libvirt/images/server.qcow2 --import

sudo virt-install --connect qemu:///system --name cliente1 --memory 1024 --vcpus 1 --disk /var/lib/libvirt/images/cliente1.qcow2 --import

sudo virt-install --connect qemu:///system --name cliente2 --memory 1024 --vcpus 1 --disk /var/lib/libvirt/images/cliente2.qcow2 --import
  • Hemos creado dos redes muy aisladas que vamos a añadir al servidor y los distintos clientes.
virsh -c qemu:///system attach-interface --domain server --persistent network dhcp1
virsh -c qemu:///system attach-interface --domain server --persistent network dhcp2

virsh -c qemu:///system attach-interface --domain cliente1 --persistent network dhcp1
virsh -c qemu:///system attach-interface --domain cliente2 --persistent network dhcp2

Configuración del servidor dhcp.

  • Primero instalamos el servicio.
apt install isc-dhcp-server
  • Nos dirigimos al fichero /etc/default/isc-dhcp-server y añadimos las dos interfaces que usaremos para esta práctica.
INTERFACESv4="ens8 ens9"
  • Ahora vamos al fichero /etc/dhcp/dhcpd.conf donde añadiremos la concesión de las dos redes.
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.2 192.168.100.253;
  option domain-name-servers 1.1.1.1, 1.0.0.1;
  option routers 192.168.100.1;
  option broadcast-address 192.168.100.253;
  default-lease-time 43200;
  max-lease-time 43200;
}

subnet 192.168.200.0 netmask 255.255.255.0 {
  range 192.168.200.2 192.168.200.253;
  option domain-name-servers 1.1.1.1, 1.0.0.1;
  option routers 192.168.200.1;
  option broadcast-address 192.168.200.253;
  default-lease-time 3600;
  max-lease-time 3600;
}
  • Reiniciamos el servicio. Y entramos en los clientes para configurar su interfaz tal que así en ambos.
auto ens8
allow-hotplug ens8
iface ens8 inet dhcp
  • Al reiniciar los clientes comprobamos que se la ha concedido dirección.
debian@debian:~$ ip a

2: ens8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:81:11:a4 brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.100.2/24 brd 192.168.100.253 scope global dynamic ens8
       valid_lft 43139sec preferred_lft 43139sec
    inet6 fe80::5054:ff:fe81:11a4/64 scope link 
       valid_lft forever preferred_lft forever

debian@debian:~$ ip a

2: ens8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:21:6e:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.200.2/24 brd 192.168.200.253 scope global dynamic ens8
       valid_lft 43132sec preferred_lft 43132sec
    inet6 fe80::5054:ff:fe21:6e04/64 scope link 
       valid_lft forever preferred_lft forever
  • Vamos a visualizar la lista de concesiones, que se encuentra en /var/lib/dhcp/dhcp.leases.
lease 192.168.100.2 {
  starts 1 2022/03/21 09:56:06;
  ends 1 2022/03/21 21:56:06;
  cltt 1 2022/03/21 09:56:06;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 52:54:00:81:11:a4;
  uid "\377\000\201\021\244\000\001\000\001)\313\0106RT\000\201\021\244";
  client-hostname "debian";
}
lease 192.168.200.2 {
  starts 1 2022/03/21 09:56:52;
  ends 1 2022/03/21 10:56:52;
  cltt 1 2022/03/21 09:56:52;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 52:54:00:21:6e:04;
  uid "\377\000!n\004\000\001\000\001)\313\010dRT\000!n\004";
  client-hostname "debian";
}

Configuración de SNAT.

  • Vamos a hacer que el servidor sirva como router y NAT, para ello lo primero que tenemos que hacer es activar el bit de forwarding.
root@debian:~# echo 1 > /proc/sys/net/ipv4/ip_forward
  • Y añadimos la regla de iptables que nos servirá como SNAT.
root@debian:~# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens8 -j MASQUERADE
root@debian:~# iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens9 -j MASQUERADE
  • Hacemos ping desde los clientes a fuera.
debian@debian:~$ ping www.google.es
PING www.google.es (142.250.185.3) 56(84) bytes of data.
64 bytes from mad41s11-in-f3.1e100.net (142.250.185.3): icmp_seq=1 ttl=113 time=48.7 ms
64 bytes from mad41s11-in-f3.1e100.net (142.250.185.3): icmp_seq=2 ttl=113 time=47.5 ms
^C
--- www.google.es ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 47.465/48.079/48.693/0.614 ms
  • Vamos a ver las rutas.
debian@debian:~$ ip r
default via 192.168.100.1 dev ens8 
192.168.100.0/24 dev ens8 proto kernel scope link src 192.168.100.2

debian@debian:~$ ip r
default via 192.168.200.1 dev ens8 
192.168.200.0/24 dev ens8 proto kernel scope link src 192.168.200.2

root@debian:~# ip r
default via 172.22.0.1 dev ens3 
172.22.0.0/16 dev ens3 proto kernel scope link src 172.22.9.142 
192.168.100.0/24 dev ens8 proto kernel scope link src 192.168.100.1 
192.168.200.0/24 dev ens9 proto kernel scope link src 192.168.200.1

Los clientes toman una configuración, y a continuación apagamos el servidor dhcp. ¿qué ocurre con el cliente windows? ¿Y con el cliente linux?

Los clientes toman una configuración, y a continuación cambiamos la configuración del servidor dhcp (por ejemplo el rango). ¿qué ocurriría con un cliente windows? ¿Y con el cliente linux?

Realiza un playbook con ansible que configure de forma automática el servidor, para que haga de servidor DHCP y de router-NAT