Práctica 3 - Redes de Computadoras 2022-2#

Equipo-BASJ-MAMM-MELE-MOGJ#

  • Bautista Sandoval Juan Carlos 314275541
  • Martínez Mendoza Miguel Angel 314133225
  • Mendoza López Edgar Omar 308341209
  • Monter Gallardo Jessica 305116941

Explicacion de la topologia de red utilizada#

Configuración#

NAT#

  1. Deshabilitar servidor DHCP de la red host-only de VirtualBox. nat settings 1

  2. Añadir dirección IP estática en la interfaz host-only. nat settings 2

  3. Habilitar IP forward. nat settings 3

  4. Configurar iptables nat settings 4

  5. Guardar reglas de manera persistente. nat settings 5

Forwarder DNS#

  1. Instalar el programa dnsmasq. apt -qy install dnsmasq

  2. Crear copia de seguridad de la configuración. cp -v /etc/dnsmasq.conf ~/dnsmasq.conf.orig

  3. Editar el archivo /etc/dnsmasq.conf. ``` # https://linux.die.net/man/8/dnsmasq

    Archivo que contiene las reglas para resolver DNS#

    El archivo puede tener cualquier nombre#

    resolv-file=/etc/resolv-upstream.conf

    Asigna una dirección IP a un nombre DNS arbitrario#

    address=/gateway.local/192.168.56.254 address=/dns.local/192.168.56.254

    Especificar la red por donde escuchará#

    Al ser un DNS local será la interfaz interna#

    interface=eth0 bind-interfaces ```

  4. Crear el archivo /etc/resolv-upstream.conf con direcciones IP de DNS públicos. nameserver 1.1.1.1 nameserver 8.8.8.8 nameserver 9.9.9.9

  5. Reiniciar servicio de red. systemctl restart dnsmasq

  6. Verificar que el servicio esté en ejecución. systemctl status dnsmasq

  7. Modificar el archivo /etc/resolv.conf. nameserver 127.0.0.1

  8. Verificar resolución de DNS. ``` root@debian-11-local:~# dig example.com. @127.0.0.1 ; <<>> DiG 9.16.22-Debian <<>> example.com. @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29532 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION: ;example.com. IN A

    ;; ANSWER SECTION: example.com. 15 IN A 100.97.148.194

    ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat May 07 04:46:28 EDT 2022 ;; MSG SIZE rcvd: 45

    root@debian-11-local:~# dig gateway.local. @127.0.0.1 ; <<>> DiG 9.16.22-Debian <<>> gateway.local. @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36231 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;gateway.local. IN A

    ;; ANSWER SECTION: gateway.local. 0 IN A 192.168.56.254

    ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat May 07 04:47:27 EDT 2022 ;; MSG SIZE rcvd: 58

    root@debian-11-local:~# dig example.com. @1.1.1.1 ; <<>> DiG 9.16.22-Debian <<>> example.com. @1.1.1.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35824 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION: ;example.com. IN A

    ;; ANSWER SECTION: example.com. 15 IN A 100.97.148.194

    ;; Query time: 0 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Sat May 07 04:48:25 EDT 2022 ;; MSG SIZE rcvd: 45

    root@debian-11-local:~# ; <<>> DiG 9.16.22-Debian <<>> gateway.local. @1.1.1.1 ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53074 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION: ;gateway.local. IN A

    ;; ANSWER SECTION: gateway.local. 15 IN A 100.97.148.195

    ;; Query time: 0 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Sat May 07 04:49:26 EDT 2022 ;; MSG SIZE rcvd: 47 ```

Servidor DHCP#

  1. Instalar el software. apt -qy install isc-dhcp-server

  2. Crear una copia del archivo de configuración original. cp -v /etc/dhcp/dhcpd.conf ~/dhcpd.conf.orig

  3. Modificar el archivo /etc/dhcp/dhcpd.conf. ``` option domain-name "ciencias.local" option domain-name-servers 192.168.56.254;

    No se dará servicio en la red externa (NAT de VirtualBox)#

    subnet 10.0.2.0 netmask 255.255.255.0 { }

    Rango de direcciones a asignar#

    subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.100 192.168.56.200; option routers 192.168.56.254; } ```

  4. Modificar el archivo /etc/default/isc-dhcp-server. INTERFACESv4="enp0s8"

  5. Reiniciar el servicio de red. service isc-dhcp-server restart

  6. Verificar que el servicio esté en ejecución. systemctl status isc-dhcp-server

Pruebas de conectividad con el cliente#

  1. Reiniciar interfaz para obtener una nueva dirección por DHCP. [root@centos-8 ~]# ifdown enp0s3 [root@centos-8 ~]# ifup enp0s3

  2. Instalar utilerias de red. yum -y install net-tools elinks

  3. Verificar configuración de red. ``` [root@centos-8 ~]# ifconfig -a enp0s3: flags=4163 mtu 1500 inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 inet6 fe80::a00:27ff:fe64:2554 prefixlen 64 scopeid 0x20 ether 08:00:27:64:25:54 txqueuelen 1000 (Ethernet) RX packets 126 bytes 21606 (21.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 207 bytes 20234 (19.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    enp0s8: flags=4163 mtu 1500 inet6 fe80::a00:27ff:fea6:254 prefixlen 64 scopeid 0x20 ether 08:00:27:a6:02:54 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20 bytes 2384 (2.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 16 bytes 1344 (1.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 16 bytes 1344 (1.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    virbr0: flags=4099 mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:69:ef:da txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ```

    [root@centos-8 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 enp0s8 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

    ``` [root@centos-8 ~]# cat /etc/resolv.conf

    Generated by NetworkManager#

    search local nameserver 10.0.2.3 ```

  4. Verificar conectividad.

    Conectividad local [root@centos-8 ~]# ping -c 4 192.168.56.254 [root@centos-8 ~]# ping -c 4 gateway.local [root@centos-8 ~]# ping -c 4 dns.local

    Resolución DNS [root@centos-8 ~]# dig example.com. @192.168.56.254 [root@centos-8 ~]# dig example.com. @dns.local [root@centos-8 ~]# dig example.com.

    Conectividad externa [root@centos-8 ~]# ping -c 4 1.1.1.1 [root@centos-8 ~]# ping -c 4 example.com. [root@centos-8 ~]# links -dump http://example.com/

Reservar dirección IP en un servidor DHCP#

  1. Descargar la imagen de Linux Alpine.

  2. Crear la máquina virtual.

    • 1 vCPU
    • 256 MB de RAM
    • Sin disco persistente, iniciar desde la imagen ISO
    • Interfaz de red host-only (sin NAT)
  3. Iniciar sesión con usuario root. ``` Welcome to Alpine Linux 3.15 Kernel 5.15.32-0-lts on an i686 (/dev/tty1)

    localhost login: root ```

  4. Configurar el nombre del host. hostname alpine

  5. Obtener la dirección MAC con el comando ip link. alpine:~# ip link 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 08:00:27:b8:64:69 brd ff:ff:ff:ff:ff:ff

  6. En la máquina de Debian, modificar el archivo /etc/dhcp/dhcpd.conf para reservar una dirección IP. host alpine { hardware ethernet 0e:45:5a:65:14:8f; fixed-address 192.168.56.200; option host-name "alpine.ciencias.local"; }

  7. Reiniciar servicio y verificar que esté en ejecución. service isc-dhcp-server restart systemctl status isc-dhcp-server

  8. Verificar la dirección reservada del cliente en la VM Alpine.

  9. Levantar la interfaz de red. ip link set eth0 up

    • Solicitar una dirección nueva al servidor DHCP. alpine:~# udhcpc -i eth0 udhcpc: started, v1.34.1 udhcpc: broadcasting discover udhcpc: broadcasting select for 192.168.56.200, server 192.168.56.254 udhcpc: lease of 192.168.56.200 obtained from 192.168.56.254, lease time 600
    • Verificar que la interfaz de red tenga la dirección reservada. alpine:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 0e:45:5a:65:14:8f brd ff:ff:ff:ff:ff:ff inet 192.168.56.200/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fd60:c153:ae78:3482:c45:5aff:fe65:148f/64 scope global dynamic flags 100 valid_lft 2591965sec preferred_lft 604765sec inet6 fe80::c45:5aff:fe65:148f/64 scope link valid_lft forever preferred_lft forever
  10. Verificar conectividad. test 1 test 2 test 3 test 4

Preguntas#

  • ¿Cómo se obtiene una dirección IP del servidor DHCP? Como sabemos el protoolo DHCP(Dynamic Host Configuration Protocol) es uno de los más utilizados por los routers para obtener una dirección IP por DHCP. Este protocolo de red utiliza la arquitectura cliente servidor. Por lo tanto se tienen uno o varios servidores de DHCP y también uno o varios clientes, que se deberan de comunicar entre ellos para correctamente para que el servidor de DHCP brinde información a los direrentes clientes conectados. La comunicación entre el servidor DHCP y los clientes DHCP que tengamos conectados en la red se realiza a través del protocolo UDP, en el caso del servidor DHCP usamos el protocolo UDP puerto 67, en el caso de los clientes usamos el protocolo UDP en el puerto 68. Cuando conectamos un equipo por primera vez a la red no tiene direccionamiento IP, por tanto, deberemos 'buscar' el servidor DHCP por toda la red, ya que tampoco tenemos información sobre el protocolo ARP en un primer momento. Por este motivo, lo primero que hará el cliente es enviar un DHCP DISCOVERY con dirección IP de origen 0.0.0.0 y dirección IP de destino 255.255.255.255 que es la IP de broadcast global. Si existe un servidor y está funcionando correctamente, le enviará una respuesta llamada DHCP OFFER. Este es el datagrama de respuesta del servidor al cliente ante la petición de obtener parámetros por el protocolo. En este caso la dirección IP de origen será la del propio servidor, que generalmente también actúa de router, la IP de destino será la 255.255.255.255 también, el puerto de origen el 67 y el puerto de destino el 68. En este paquete tendremos la dirección IP privada que se le puede proporcionar y se involucra a la dirección MAC del equipo. Esta comunicación es de tipo unicast generalmente, aunque de forma opcional puede ser broadcast. Una vez que el cliente recibe el OFFER, le enviará un DHCP REQUEST de vuelta. En este caso el cliente selecciona la configuración recibida por el OFFER y una vez más el cliente solicita la IP que indicó el servidor anteriormente. Esta comunicación también es broadcast, porque todavía no tiene una dirección IP privada válida. Por último, el servidor le enviará un DHCP ACK al cliente, diciéndole que lo ha recibido correctamente e incluye toda la información que hayamos configurado en el servidor, como la duración de la conexión, información sobre los servidores DNS y más.
  • ¿Cuáles son las ventajas y desventajas de un forwarder en la red local? Las ventajas del forwarder, es que aunque el paquete recibido no este destinado para el equipo lo recibe y lo redireccionara hacia internet, no lo descartara como es lo usual, es decir funcionara como routeador. Con lo cual la ventaja es justamente eso que el equipo puede actuar como router. La desventaja es que puede haber una sobrecarga en el equipo, ya que habra mucho trafico sobre este equipo, ya que otros equipos lo podran tomar como router.
  • Explicar cómo se envía una petición desde el cliente hasta un destino fuera de la red host only. En nuestro caso, lo que se hace en el caso de Debian y Alpine, es obtener una IP por medio de DHCP, posteriormente se comunicaran por medio de vboxnet0, a la maquina virtual de Debian, la cual hara un forward de su petición, hacia una red externa(internet).

Captura de tráfico#

Conclusiones#

Compara las capturas de tráfico y escribe tus conclusiones. - ¿Hay alguna diferencia en el tráfico de las capturas de red? En general siempre va a ver diferencias entre una maquina y otra, pero siempre mantienen el mismo nucleo, es decir los procedimiento son muy similares. - ¿Qué parte de tráfico de DHCP es broadcast y unicast? Cuando se hace el DHCP-DISCOVER, el cliente no sabe la dirección ip ni MAC del servidor DHCP, por lo tanto el cliente envia un datagrama UDP de broadcast para que responda el servidor, este mensaje se dirige a todos los clientes que se encuentren en el mismo dominio de broadcast. En el DHCP-OFFER, es servidor DHCP recibe el mensaje DISCOVER de un cliente donde contiene la petición de asignación de una dirección IP temporal. En este caso el servidor busca una dirección IP disponible en su pool y le envia dicho OFFER al cliente, en este caso, la respuesta se la regresa al cliente de forma unicast en capa 2 y en capa 3 en forma de broadcast, esto se debe a que en capa 2 ya es conocida la dirección MAC de ambos equipos, pero en la capa 3 como el cliente todavia no tiene dirección IP asignada se manda a broadcast. - ¿Cómo es que funciona ARP? El protocolo ARP(Address Resolution Protocol), se usa para de vincular una dirección MAC o dirección fisica, con una dirección IP o dirección lógica. Es decir se encarga de permitir que un dispositivo conectado a una red pueda obtener una ruta MAC de otro equipo que está conectado a esa misma red, es decir, se encarga de 'localizar' donde están los demás dispositivos cableados o inalámbricos en la red, preguntando por la dirección MAC de cada uno de ellos enviando un paquete a la dirección de broadcast que es FF:FF:FF:FF:FF:FF. El funcionamiento general de ARP es preguntar por cierta dirección IP por medio de bradcast, dando su dirección para el que tenga dicha dirección pueda responder, entonces el equipo que tiene dicha dirección envia un paquete unicast al equipo que estaba preguntando diciendo que el tiene esa dirección IP y enviandole ademas su dirección MAC. - ¿Cómo es que llega una petición y respuesta de PING desde la máquina CentOS hasta un servidor de internet? Lo primero que hace la maquina CentOS es pedir una dirección IP, al DHCP, recordemos que todo el trafico de CentOS, se hace por medio de la maquina virtual de Debian, por lo tanto una vez obtenida la dirección IP, entonces al hacer ping hacia otra maquina, lo primero que se hace es pasar la solicitud a la maquina de debian, la cual hace un ICMP, en la cual va mandando diferentes TTL, iniciando en 1 hasta cierto rango, en donde espera encontrar a la maquina con cierta dirección, si la encontramos entonces lo indicamos en la respuesta de la solicitud en caso contrario, habremos superado cierto tiempo y mandamos un mensaje de fallo.