Pruebas de reenvío con DHCP relay

Fecha: 1 de diciembre del 2017

 

Escenario

 

Este laboratorio lo realicé para replicar y simular una configuración encontrada en un chasis Cisco 6500 en producción.

Despúes de analizarla con mi compañero Agustín Santarelli (flamante CCNP) sospechábamos de que el propósito de que

en algunos caso el relay apuntara a un broadcast y en otros a la dirección de red era para dar servicio desde varios

servidores en simultáneo y dar redundancia al DHCP. Asumimos que es desprolijo.

La quitamos e implementamos el método tradicional (unicast a uno o varios servidores).

 

No podía faltar el “ver que pasa”. La configuración inicial era en interfaces VLAN, aquí se simula en un router 1841

pero al fin y al cabo es lo mismo. Lo que vamos a probar es lo siguiente:

 

ip helper-address 192.168.1.10    (método unicast tradicional)

ip helper-address 192.168.1.255 (broadcast)

ip helper-address 192.168.1.0      (…)

 

 

 

Pruebas de DHCP

 

1.- Con el relay apuntando directamente al server:

 

1.1.- Configuración del relay:

 

Cisco-1841#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

Cisco-1841(config)#int Gi0/1

Cisco-1841(config-if)#ip helper-address 192.168.1.10

Cisco-1841(config-if)#end

Cisco-1841#

 

1.2.- Verificación del relay:

 

Cisco-1841#sh runn int gi0/1

Building configuration...

 

Current configuration : 158 bytes

!

interface GigabitEthernet0/1

 ip address 192.168.2.1 255.255.255.0

 ip helper-address 192.168.1.10

!

end

 

Cisco-1841#

 

1.3.- Verificación en el PC:

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Dirección IPv4. . . . . . . . . . . . . . . . . . . . . . .: 192.168.2.100

   Máscara de subred . . . . . . . . . . . . . . . . . . : 255.255.255.0

   Puerta de enlace predeterminada . . . . . . .: 192.168.2.1

 

C:\>

 

1.4.- Verificación en el DHCP server:

 

DHCP-Server#sh ip dhcp bind

Bindings from all pools not associated with VRF:

IP address          Client-ID/              Lease expiration        Type

                    Hardware address/

                    User name

192.168.2.100       0100.1b38.fe8a.c7       Jun 14 2014 08:47 PM    Automatic

DHCP-Server#

 

1.5.- Captura de la sesión:

 

 

Frame 3: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0

Ethernet II, Src: 30:e4:db:53:2b:20, Dst: 00:0d:65:8f:85:ee   (trama unicast)

Internet Protocol Version 4, Src: 192.168.2.1, Dst: 192.168.1.10 (el server declarado)

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Discover)

    Message type: Boot Request (1)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 1

    Transaction ID: 0x301599ce

    Seconds elapsed: 0

    Bootp flags: 0x0000 (Unicast)

    Client IP address: 0.0.0.0

    Your (client) IP address: 0.0.0.0

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Discover)

    Option: (61) Client identifier

    Option: (50) Requested IP Address

    Option: (12) Host Name

    Option: (60) Vendor class identifier

    Option: (55) Parameter Request List

    Option: (255) End

    Padding: 0000000000000000

 

2.- Prueba con el relay en broadcast:

 

2.1.- Configuración del relay:

 

Cisco-1841#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

Cisco-1841(config)#int Gi0/1

Cisco-1841(config-if)#no ip helper-address 192.168.1.10

Cisco-1841(config-if)#ip helper-address 192.168.1.255

Cisco-1841(config-if)#end

Cisco-1841#

 

2.2.- Verificación del relay:

 

Cisco-1841#sh runn int gi0/1

Building configuration...

 

Current configuration : 158 bytes

!

interface GigabitEthernet0/1

 ip address 192.168.2.1 255.255.255.0

 ip helper-address 192.168.1.255

!

end

 

Cisco-1841#

 

2.3.- Verificación en el PC:

 

Se realizó un ipconfig /release para no solicitarle IP al servidor de las pruebas anteriores,

esto es persistente (inclusive contaminó una prueba inicial, ver mas abajo)

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Dirección IPv4. . . . . . . . . . . . . . . . . . . . .: 192.168.2.100

   Máscara de subred . . . . . . . . . . . . . . . . .: 255.255.255.0

   Puerta de enlace predeterminada . . . . . : 192.168.2.1

 

C:\>

 

2.4.- Captura de la sesión:

 

 

Frame 3: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0

Ethernet II, Src: 30:e4:db:53:2b:20, Dst: ff:ff:ff:ff:ff:ff

Internet Protocol Version 4, Src: 192.168.2.1, Dst: 255.255.255.255

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Discover)

    Message type: Boot Request (1)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 1

    Transaction ID: 0xc9a432a4

    Seconds elapsed: 0

    Bootp flags: 0x8000, Broadcast flag (Broadcast)

        1... .... .... .... = Broadcast flag: Broadcast

        .000 0000 0000 0000 = Reserved flags: 0x0000

    Client IP address: 0.0.0.0

    Your (client) IP address: 0.0.0.0

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Discover)

    Option: (61) Client identifier

    Option: (50) Requested IP Address

    Option: (12) Host Name

    Option: (60) Vendor class identifier

    Option: (55) Parameter Request List

    Option: (255) End

    Padding: 0000000000000000

 

3.- Con relay en dirección de red:

 

3.1.- Configuración del relay:

 

Cisco-1841#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

Cisco-1841(config)#int Gi0/1

Cisco-1841(config-if)#no ip helper-address 192.168.1.255

Cisco-1841(config-if)#ip helper-address 192.168.1.0

Cisco-1841(config-if)#end

Cisco-1841#

 

3.2.- Verificación del relay:

 

Cisco-1841#sh runn int gi0/1

Building configuration...

 

Current configuration : 156 bytes

!

interface GigabitEthernet0/1

 ip address 192.168.2.1 255.255.255.0

 ip helper-address 192.168.1.0

 !

end

 

Cisco-1841#

 

3.3.- Verificación en el PC:

 

Se realizó un ipconfig /release para no solicitarle IP al servidor de las pruebas anteriores,

esto es persistente incluso en la registry de Windows.

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Dirección IPv4. . . . . . . . . . . . . . . . . . . . . . : 192.168.2.100

   Máscara de subred . . . . . . . . . . . . . . . . . .: 255.255.255.0

   Puerta de enlace predeterminada . . . . . . : 192.168.2.1

 

C:\>

 

3.4.- Captura de la sesión:

 

 

Frame 5: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0

Ethernet II, Src: 30:e4:db:53:2b:20, Dst: ff:ff:ff:ff:ff:ff

Internet Protocol Version 4, Src: 192.168.2.1, Dst: 255.255.255.255

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Discover)

    Message type: Boot Request (1)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 1

    Transaction ID: 0xc6375160

    Seconds elapsed: 0

    Bootp flags: 0x8000, Broadcast flag (Broadcast)

    Client IP address: 0.0.0.0

    Your (client) IP address: 0.0.0.0

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Discover)

    Option: (61) Client identifier

    Option: (50) Requested IP Address

    Option: (12) Host Name

    Option: (60) Vendor class identifier

    Option: (55) Parameter Request List

    Option: (255) End

    Padding: 0000000000000000

 

4.- Pruebas con dos DHCP servers en la red destino del relay:

 

Al tratarse de un relay apuntando a una dirección broadcast, experimentamos que ocurre al encontarse

mas de un servidor en el segmento de red. Generalmente el cliente adopta la primer oferta que recibe.

 

No se muestran en las capturas, pero la implementación DHCP server en equipos Cisco generalmente

envian un ARP y un ICMP echo (ping) a la dirección que van a ofrecer, si esta no responde la ofrecen, si

la IP responde buscan otra en el pool.

Con la consulta ARP solamente alcanzaría (para que salga el ping primero debe resolverse el ARP),

inclusive es mas efectivo en ambientes con PC con Windows con el firewall activo.

 

 

 

 

 

4.1.- Configuración del segundo DHCP server:

 

2doDHCP-Server#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

2doDHCP-Server(config)#int fa0/0

2doDHCP-Server(config-if)#ip add 192.168.1.11 255.255.255.0

2doDHCP-Server(config-if)#exit

2doDHCP-Server(config)#ip dhcp pool Red-2

2doDHCP-Server(dhcp-config)#network 192.168.2.0 255.255.255.0

2doDHCP-Server(dhcp-config)#default-router 192.168.2.1

2doDHCP-Server(dhcp-config)#exit

2doDHCP-Server(config)#ip dhcp excluded-address 192.168.2.1 192.168.2.199 (DHCP-1 comienza en la .100)

2doDHCP-Server(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.2

2doDHCP-Server(config)#end

2doDHCP-Server#

2doDHCP-Server#ping 192.168.1.2 (verificamos conectividad en el segmento local)

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms

2doDHCP-Server#ping 192.168.2.1 (verificamos alcanzar el segmento remoto)

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms

2doDHCP-Server#

 

4.2.- Prueba en el PC:

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Dirección IPv4. . . . . . . . . . . . . . . . . . . . . . : 192.168.2.100

   Máscara de subred . . . . . . . . . . . . . . . . . .: 255.255.255.0

   Puerta de enlace predeterminada . . . . . . : 192.168.2.1

 

C:\>

 

4.3.- Captura de la sesión:

 

Podemos observar que ante el discover, hay dos ofertas, DHCP-1 ofrece primero y DHCP-2 en segundo lugar,

lo que fuerza a que exista preferencia por el primero (esto generalmente es así).

En esta captura también comentaremos los paquetes inform, los cuales informan a los demas servers que ya

se arrendó una IP y se liberen las ofertas pendientes, ambos servers devueleven el ACK correspondiente.

Estos paquetes se ven con un ID de transacción diferente.

 

 

Frame 11: 352 bytes on wire (2816 bits), 352 bytes captured (2816 bits) on interface 0

Ethernet II, Src: 30:e4:db:53:2b:20, Dst: ff:ff:ff:ff:ff:ff

Internet Protocol Version 4, Src: 192.168.2.1, Dst: 255.255.255.255

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Request)

    Message type: Boot Request (1)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 1

    Transaction ID: 0x868e8262

    Seconds elapsed: 0

    Bootp flags: 0x8000, Broadcast flag (Broadcast)

        1... .... .... .... = Broadcast flag: Broadcast

        .000 0000 0000 0000 = Reserved flags: 0x0000

    Client IP address: 0.0.0.0

    Your (client) IP address: 0.0.0.0

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Request)

        Length: 1

        DHCP: Request (3)

    Option: (61) Client identifier

    Option: (50) Requested IP Address

        Length: 4

        Requested IP Address: 192.168.2.100

    Option: (54) DHCP Server Identifier (preferencia del servidor DHCP-1)

        Length: 4

        DHCP Server Identifier: 192.168.1.10

    Option: (12) Host Name

    Option: (81) Client Fully Qualified Domain Name

    Option: (60) Vendor class identifier

    Option: (55) Parameter Request List

    Option: (255) End

    Option End: 255

 

5.- Prueba de renovación de IP, pero con el servidor DHCP-1 down:

 

 

5.1.- Prueba de renew en la PC:

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Error al renovar la interfaz Conexión de área local: no se puede establecer contacto con el

servidor DHCP. La solicitud superó el tiempo de espera.

 

C:\>

 

 

5.2.- Release de la IP en la PC:

 

Se debe realizar el release debido a que la PC envía un unicast al servidor (salteando el relay) para renovar la IP, este al no estar en línea no responde

y por lo tanto el cliente queda reintentando la renovación hasta llegar al timeout (generalmente mantiene la IP, pero al expirar completamente  el

tiempo de lease la PC queda en APIPA (169.254.x.x/16).

 

C:\>ipconfig /release

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Puerta de enlace predeterminada . . . . . :

 

C:\>

 

 

5.3.- Solicitud de IP en la PC:

 

Al no tener una IP alquilada se genera un DHCP discover y por lo tanto actúa el relay, al llegar a todos los host de la red 1921.68.1.0/24 en server

DHCP-2 escucha la solicitud y la responde, puede observarse que existen tres reintentos por parte del cliente.

 

Al verificar la IP del cliente vemos que es del rango del server DHCP-2 (a partir de la IP 200).

 

C:\>ipconfig /renew

 

Configuración IP de Windows

 

Adaptador de Ethernet Conexión de área local:

 

   Sufijo DNS específico para la conexión. . :

   Dirección IPv4. . . . . . . . . . . . . . . . . . . . . . : 192.168.2.202

   Máscara de subred . . . . . . . . . . . . . . . . . . : 255.255.255.0

   Puerta de enlace predeterminada . . . . . .  : 192.168.2.1

 

C:\>

 

 

Frame 54: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0

Ethernet II, Src: 00:25:45:1e:73:4c, Dst: 30:e4:db:53:2b:20

Internet Protocol Version 4, Src: 192.168.1.11, Dst: 192.168.2.1

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Offer)

    Message type: Boot Reply (2)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 0

    Transaction ID: 0xca41c0ac

    Seconds elapsed: 0

    Bootp flags: 0x8000, Broadcast flag (Broadcast)

    Client IP address: 0.0.0.0

    Your (client) IP address: 192.168.2.202

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Offer)

    Option: (54) DHCP Server Identifier

        Length: 4

        DHCP Server Identifier: 192.168.1.11

    Option: (51) IP Address Lease Time

    Option: (58) Renewal Time Value

    Option: (59) Rebinding Time Value

    Option: (1) Subnet Mask

    Option: (3) Router

    Option: (255) End

    Padding: 0000000000000000000000000000000000000000

 

6.- Captura de solicitud contaminada por no realizar un DHCP release (ipconfig /release):

 

Frame 4: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0

Ethernet II, Src: 30:e4:db:53:2b:20, Dst: ff:ff:ff:ff:ff:ff

Internet Protocol Version 4, Src: 192.168.2.1, Dst: 255.255.255.255

User Datagram Protocol, Src Port: 67 (67), Dst Port: 67 (67)

Bootstrap Protocol (Discover)

    Message type: Boot Request (1)

    Hardware type: Ethernet (0x01)

    Hardware address length: 6

    Hops: 1

    Transaction ID: 0xe52be730

    Seconds elapsed: 0

    Bootp flags: 0x0000 (Unicast) (en lugar de broadcast)

    Client IP address: 0.0.0.0

    Your (client) IP address: 0.0.0.0

    Next server IP address: 0.0.0.0

    Relay agent IP address: 192.168.2.1

    Client MAC address: 00:1b:38:fe:8a:c7

    Client hardware address padding: 00000000000000000000

    Server host name not given

    Boot file name not given

    Magic cookie: DHCP

    Option: (53) DHCP Message Type (Discover)

    Option: (61) Client identifier

    Option: (50) Requested IP Address

    Option: (12) Host Name

    Option: (60) Vendor class identifier

    Option: (55) Parameter Request List

    Option: (255) End

    Padding: 0000000000000000

 

7.- Configuración de los equipos

 

Cisco-1841#sh runn (sólolo relevante al escenario)

Building configuration...

 

Current configuration : 1420 bytes

!

version 15.3

!

hostname Cisco-1841

!

interface GigabitEthernet0/0

 ip address 192.168.1.2 255.255.255.0

!

interface GigabitEthernet0/1

 ip address 192.168.2.1 255.255.255.0

 ip helper-address 192.168.1.10

!

!

control-plane

line con 0

line aux 0

line vty 0 4

!

end

 

Cisco-1841#

 

Catalyst-2950# sh runn (sólolo relevante al escenario)

Building configuration...

 

Current configuration : 3260 bytes

!

version 12.1

!

hostname Catalyst-2950

!

interface FastEthernet0/1

 description DHCP server

 switchport mode access

 spanning-tree portfast

!

interface FastEthernet0/2

 description Cisco-1841

 switchport mode access

 spanning-tree portfast

!

interface FastEthernet0/3

 description 2do DHCP server

 switchport mode access

 spanning-tree portfast

!

---omitido---

!

interface FastEthernet0/24

 description Mirror

 switchport mode access

 no cdp enable (para omitir tramas en las capturas)

 spanning-tree portfast

 spanning-tree bpdufilter enable (para omitir tramas en las capturas)

!

!

line con 0

line vty 0 4

!

monitor session 1 source interface Fa0/2

monitor session 1 destination interface Fa0/24

end

 

Catalyst-2950#

 

DHCP-Server# sh runn (sólolo relevante al escenario)

Building configuration...

 

Current configuration : 926 bytes

!

hostname DHCP-Server

!

ip dhcp excluded-address 192.168.2.1 192.168.2.99

!

ip dhcp pool Red-2

   network 192.168.2.0 255.255.255.0

   default-router 192.168.2.1

!

interface FastEthernet0/0

 ip address 192.168.1.10 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 192.168.1.2

!

line con 0

line aux 0

line vty 0 4

 login

!

end

 

DHCP-Server#

 

2doDHCP-Server# sh runn (sólolo relevante al escenario)

Building configuration...

 

Current configuration : 1226 bytes

!

hostname 2doDHCP-Server

!

ip dhcp excluded-address 192.168.2.1 192.168.2.199 (para diferenciar del DHCP-1)

!

ip dhcp pool Red-2

   network 192.168.2.0 255.255.255.0

   default-router 192.168.2.1

!

interface FastEthernet0/0

 ip address 192.168.1.11 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 192.168.1.2

!

line con 0

line aux 0

line vty 0 4

!

end

 

2doDHCP-Server#

 

 

 

(2017) Smoking chala with uncle Ernst

Rosario, Argentina