miércoles, 1 de abril de 2009

Laboratorio de DHCP con helper address

Ya sabemos que los routers no dejan pasar los broadcasts, por lo que no podríamos tener un servidor de DHCP fuera del {es:Dominio_de_difusión|dominio de broadcast} local. Si no hubiese una solución factible como la que vamos a presentar ahora tendríamos la necesidad de tener un server escuchando en cada subred de nuestra LAN.

Cisco propone una solución que básicamente lo que hace es atrapar los broadcasts (que llegan a las interfaces que a nosotros nos interesen) y reenviarlos como {es:Unicast|unicast} a una dirección IP que nosotros indiquemos.

En este caso tenemos la siguiente distribución de equipos:

  • R2 es un servidor DHCP que tiene varios pooles configurados.
  • R0 es un router de tránsito que hará la conversión broadcast/unicast antes mencionada.
  • R1 emula un equipo que quiere aprender la dirección IP de dos de sus interfaces mediante DHCP.

Veamos las configuraciones:

R2:

ip dhcp excluded-address 192.168.10.1
ip dhcp excluded-address 192.168.11.1
!
ip dhcp pool pepito
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
domain-name pepito
!
ip dhcp pool juancito
network 192.168.11.0 255.255.255.0
domain-name juancito
default-router 192.168.11.1
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.252
duplex auto
speed auto
!
ip route 192.168.10.0 255.255.255.0 192.168.1.1
ip route 192.168.11.0 255.255.255.0 192.168.1.1

R0:

interface FastEthernet0/0
description Enlace a R1
no ip address
duplex auto
speed auto
!
interface FastEthernet0/0.10
encapsulation dot1Q 10
description VLAN 10 de R1
ip address 192.168.10.1 255.255.255.0
 ip helper-address 192.168.1.2
!
interface FastEthernet0/0.11
encapsulation dot1Q 11
description VLAN 11 de R1
ip address 192.168.11.1 255.255.255.0
 ip helper-address 192.168.1.2
!
interface FastEthernet0/1
description Enlace a R2
ip address 192.168.1.1 255.255.255.252
duplex auto
speed auto
!

R1:

interface FastEthernet0/0
description Enlace a R0
no ip address
duplex auto
speed auto
!
interface FastEthernet0/0.10
encapsulation dot1Q 10
description VLAN 10 de R0
 ip address dhcp
!
interface FastEthernet0/0.11
encapsulation dot1Q 11
description VLAN 10 de R0
 ip address dhcp
!

El comando ip helper-address configurado en las interfaces de R0 hace que este reenvíe las peticiones DHCP (y por defecto otros protocolos más) hacia la IP 192.168.1.2 que es el servidor DHCP.

Es muy importante notar que para que R2 entregue las direcciones DHCP tiene que saber como llegar a las redes que entrega, por esto las rutas estáticas que se configuraron en R2 son fundamentales, y en caso de no conocerse dichas redes el servidor DHCP no funcionará.

Ahora vemos que pasa en R1 al momento de levantar las interfaces:
R1#
*Mar  1 00:13:03.315: %SYS-5-CONFIG_I: Configured from console by console
R1#sh ip int bri
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  up                    up
FastEthernet0/0.10         unassigned      YES DHCP   up                    up
FastEthernet0/0.11         unassigned      YES DHCP   up                    up      
FastEthernet0/1            unassigned      YES unset  up                    up
R1#
*Mar  1 00:15:18.907: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0.10
assigned DHCP address 192.168.10.2, mask 255.255.255.0, hostname R1

R1#
*Mar  1 00:15:23.091: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0.11
assigned DHCP address 192.168.11.2, mask 255.255.255.0, hostname R1

R1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  up                    up
FastEthernet0/0.10         192.168.10.2    YES DHCP   up                    up
FastEthernet0/0.11         192.168.11.2    YES DHCP   up                    up      
FastEthernet0/1            unassigned      YES unset  up                    up

Ahora vemos el lease en R2:


R2#show ip dhcp pool 

Pool pepito :
Utilization mark (high/low)    : 100 / 0
Subnet size (first/next)       : 0 / 0
Total addresses                : 254
 Leased addresses               : 1
Pending event                  : none
1 subnet is currently in the pool :
Current index        IP address range                    Leased addresses
192.168.10.3         192.168.10.1     - 192.168.10.254    1

Pool juancito :
Utilization mark (high/low)    : 100 / 0
Subnet size (first/next)       : 0 / 0
Total addresses                : 254
 Leased addresses               : 1
Pending event                  : none
1 subnet is currently in the pool :
Current index        IP address range                    Leased addresses
192.168.11.3         192.168.11.1     - 192.168.11.254    1

R2#show ip dhcp binding 
Bindings from all pools not associated with VRF:
IP address          Client-ID/       Lease expiration        Type
Hardware address/
User name
192.168.10.2        0063.6973.636f.2d63.    Mar 02 2002 12:15 AM    Automatic
3430.312e.3039.3266.
2e30.3030.302d.4661.
302f.302e.3130
192.168.11.2        0063.6973.636f.2d63.    Mar 02 2002 12:15 AM    Automatic
3430.312e.3039.3266.
2e30.3030.302d.4661.
302f.302e.3131

Espero que lo implementen pronto.

¡Hasta la próxima!

24 comentarios:

Ariel Weher dijo...

Gracias Damián por la idea para implementar este LAB.

fede dijo...

muy interesante este ejmplo Ariel, tengo problemas con el comando ip helper-address y este ejemplo me ayudó mucho :D
¿¿sabes si el comando ip helper-address funciona en Packet Tracer??

Gracias de nuevo, saludos:D

Ariel Weher dijo...

En el Packet Tracer el helper-address funciona, ya que si haces el 'simulation' vas a ver que el broadcast viaja. Lo que me parece que no funciona bien es el dhcp-server con redes remotas.

fede dijo...

Hola ariel,
el tema del DHCP me esta dando algunos problemas.
El servidor DHCP(R2) tiene que saber como llegar a las redes que entrega(VLANs 10 y 11), pero ¿R1 no deberia tambien tener una ruta estática a R2?

Gracias, saludos:D

Ariel Weher dijo...

En el lab R1 simboliza un cliente (una PC) que tiene un cliente DHCP. Ruta estática no hace falta porque el cliente recibe la default (0.0.0.0/0) del DHCP server.
Este default gateway se entrega con el parámetro default-router de cada pool del server.
Piensa que en el instante inicial R1 no tiene configurada una IP (y por ende tampoco tiene rutas a ningún lado).
Saludos

antonio dijo...

hola ariel,
me decidi a implementar este sencillo ejemplo sobre DHCP sin embargo a la hora de enviar el pakee DHCP a R2, este me dice(en el modo simulacion):
"The DHCP server does not have a pool configured for the received port. It drops the packet." y lo elimina, no entiendo que es lo que pasa, me puedes explicar que ocurrio??

Gracias de antemano Ariel:D

Ariel Weher dijo...

Con Packet Tracer nunca logré hacer andar este tipo de laboratorio. De hecho armé este post con equipos por pedido de un colega instructor de CCNA, y para sacarnos la duda de si esto se podía implementar o no.
El resultado del comando ip helper-address es satisfactorio, dado que el broadcast que manda la pc se reenvía como unicast al servidor DHCP remoto. Sin embargo parece que el router configurado como DHCP server no soporta tener un pool que pertenezca a una red no conectada.
Sin embargo el ejemplo publicado aquí fue armado con equipos reales y funciona correctamente.
Saludos!

antonio dijo...

si, si en modo simulacion, como bien dices, puede verse como efectivamente el helper-adress transforma el multicasta en unicast....me volvi loco intentando hacerlo funcionar pero el servidor DHCP no parecer soportar la red remota
quiza en GSN3 si funcione esta practica...lo probaste??

Gracias Ariel:D
Saludos¡¡¡¡

Ariel Weher dijo...

Te podría asegurar que si funciona en equipos reales, funciona en dynamips y sus derivados...

Saludos

Ataques a servidores DHCP | CapaOcho.Net dijo...

[...] Este tipo de ataque tiene más posibilidades de éxito cuando hay un servidor DHCP centralizado en una red apartada de los clientes y el router que hace de default gateway para cada LAN hace relay de DHCP. Para conocer detalles sobre relay de DHCP ver: este post. [...]

Dalmiro dijo...

Hola, gracias por el ejemplo!
Creés que esto podría funcionar en la versión 5.1 del Packet Tracer?
Gracias

Ariel Weher dijo...

Yo lo probé y no me anduvo. Lo que no recuerdo es si era la 5.1

Saludos

Dalmiro dijo...

Nosotros lo probamos y no nos anduvo, aunque leímos en internet que si podría funcionar con un servidor de dhcp, en lugar de hacerlo desde el router. Lo probaste?

Ariel Weher dijo...

Sinceramente no lo probé.
Si lo haces y quieres compartir el archivo .pkt lo pego aquí para que todos puedan verlo en acción.
Saludos y gracias.

Anónimo dijo...

Jajajjajajaja tenia mucho tiempo de saber como hacer para la comunicación en un dhcp remoto pero habia podido GRACIAS..... Me funciono EXCELENTE Yujuuuuuu muy bueno..... DX

Anónimo dijo...

Amigo las url de las imagenes estan rotas.

Ariel S. Weher dijo...

Gracias por avisar

leonel dijo...

Lo he probado y funciona con packet tracer en la version 5.2

Anónimo dijo...

Vengo leyendo los comentarios, yo tmb me volvi loco con estos tipos de LAB, en PT 5.0 no lo pude correr.

Slds

Anónimo dijo...

Compañero una pregunta, en mi red tengo funcionando esta solucion para varios segmentos que comparten el mismo server DHCP, cada segmento lo relaciono con un ambito y todo va excelente, el problema es que tengo una aplicacion cliente-servidor, los clientes encuentran el server por broadcast y tengo que aplicar la misma estrategia para que hice con DHCP para esto, lo que aun no se es, si introduzco otro ip helper-address para el server de la aplicacion entraria en conflicto con el de DHCP, espero me haga entender, los clientes y el server estan en distintas VLAN.

Ariel Weher dijo...

EL comando ip helper address funciona con ocho protocolos a la vez entre los cuales está el DHCP.

En IOS puedes habilitar la traducción de broadcast a unicast de otros puertos diferentes para permitir otros protocolos.

Podes leer algo sobre esto en: http://www.cisco.com/univercd/cc/td/doc/product/software/ssr83/rpc_r/48383.htm#xtocid670622

Ante cualquier duda no temas escribime un mail a la dirección de contacto que se encuentra en el margen derecho.

Saludos

Daniel Paez Sanchez dijo...

Hola, gracias por tu aporte...
He probado con los comandos aqui citados, cuando pongo "show ip int br" me aparecen FastEthernet0/0.10 y FastEthernet0/0.11 como Method: DHCP y Status: up, pero ip address: unassigned, las apago y las vuelvo a levantar, pero con el mismo resultado, que puedo hacer?

Anónimo dijo...

Hola. He implementado este ejemplo en un packet tracer 6.1 y en su mayoría funcionó, el único problema es que en el cliente dhcp sólo la sub-interfaz 0.11 está tomando direccionamiento, la subinterfaz 0.10 sigue unassigned. Verifiqué todos los comandos citados. Si tienes alguna idea a qué se debe este problema te agradeceré compartor.
Saludos.

CiberForaneo dijo...

Buen material, ¿la configuración del R2 no se puede hacer en el R0 para evitar el uso de un router mas?

Publicar un comentario