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
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?