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