Si este fuera un blog maricón y pedagógico, este post arrancaría explicando que: «Se conoce como rogue a todo dispositivo que en tu red local… bla bla bla…» Me chupa un huevo. No te pienso explicar. Googlealo y volvé si querés. Este es un blog porongudo y poco pedagógico.
Yendo al tema; si nunca te pasó todavía, o bien podés considerarte el elegido o bien todavía no tenés la cantidad de horas de vuelo necesarias, pendejo, por que a todos los que vivimos del IT nos toca mas tarde o mas temprano:
Un servidor DHCP que no sabés de donde mierda salió entrega números de IP y te rompe la conectividad en la LAN, o te rompe el acceso a internet o como mínimo, las pelotas. Un serdivor DHCP rogue.
Típicos escenarios:
- Una red lo suficientemente extensa en superficie edificada como para que te sea difícil hacerle un seguimiento exhaustivo.
- Un pelotudo en la última oficinita del fondo del altillo del último piso habilitó por ejemplo la conexión compartida a internet.
- O le pareció buena idea comprarse su propio router wireless por que la señal no le llega bien.
- O algún dispositivo se puso en factory-defaults y se le encendió el DHCP server.
- O alguien fué y se contrató su propia bajada de internet para su sección sin avisarte y el ISP le dió un router con DHCP activado.
- O simplemente te la tiene jurada y te quiere cagar la vida, entonces sin quererlo o intencionalmente se pone a entregar números de IP a tu red.
Acto seguido, pelás tu packet sniffer de cabecera para dar con el hijo de puta que está sirviendo DHCP y con un poco de suerte, la mac addres del dispositivo agendada y una inspección/investigación visual, das con el dispositivo problemático y lo hacés mierda con el hacha que casualmente llevabas con vos desde que te empezó a pasar.
A mi ya me pasó varias veces. Todos los ejemplos que usé arriba son verídicos. Por suerte desde hoy, encontré la que debe ser la forma mas fácil de encontrar al DHCP server problemático y así poder ajusticiarlo: dhcping.
DHCPing como su nombre -obvio- lo indica, hace justamente eso, peticiones DHCP unicast y te avisa: «Acá hay un DHCP server» o «acá no hay un choto». Esto es:
Got answer from: 192.168.1.1
O bien:
no answer
Suena fácil, ¿no? Y se pone peor: Como se trata de una herramienta que en realidad está pensada para diagnosticar servidores DHCP, si le encendés el modo verbose (con el switch «-V»), te escupe con todo esto por ejemplo:
~# dhcping 192.168.1.1 -V setup request packet 250 bytes op: 1 htype: 1 hlen: 6 hops: 0 xid: 7eaa7e53 secs: 0 flags: 0 ciaddr: 0.0.0.0 yiaddr: 0.0.0.0 siaddr: 0.0.0.0 giaddr: 0.0.0.0 chaddr: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 sname : . fname : . option 53 DHCP message type DHCP message type: 3 (DHCPREQUEST) option 50 Request IP address Requested IP address: 0.0.0.0 no answer close
Con lo cual bien te podría servir si estas diagnosticando la tal o cual opción específica dentro de tu DHCP server si por ejemplo no te anda el puto wpad o similar. Armado con todo este conocimiento, vamos a lo que importa.
Encontrar desde que número de IP se responden peticiones DHCP en tu red escaneando un rango específico:
for i in {1..254}; do dhcping -s 192.168.1.$i; done
También podés especificar la dirección de IP desde donde querés falsificar que se origina el request (típicamente, la dirección de IP en donde vas a tener corriendo un packet sniffer), teniendo en cuenta que es a esta dirección a donde te va a llegar el reply del servidor:
for i in {1..254}; do dhcping -s 192.168.1.$i -c 192.168.1.2; done
Y hasta podés falsificar la mac address:
for i in {1..254}; do dhcping -s 192.168.1.$i -c 192.168.1.2 -h 00:1e:8c:be:28:7d; done
Y si te rompe los huevos esperar el time-out de tres segundos -un número muy razonable si me preguntan- que viene preconfigurado por defecto con el programa podés bajarselo por ejemplo uno:
for i in {1..254}; do dhcping -s 192.168.1.$i -t1; done
Parafraseando al manual y a modo de conclusión, acá tenés, juguetito nuevo:
dhcping – send a DHCP request to DHCP server to see if it’s up and running
HOW IT WORKS
The client either sends a DHCPREQUEST or DHCPINFORM packet to the server and waits for an answer. Then, if a DHCPREQUEST was send, it will send a
DHCPRELEASE back to the server.
SECURITY
This program is installed setuid root as it requires the privileges to bind itself to port 68 (bootpc). Root privileges are dropped as soon as the
program has bound itself to that port.