
Actualmente estoy ejecutando el servidor ISC-DHCP v3 en Ubuntu 8.04. Lo que intento hacer es registrar quién obtuvo qué dirección IP y cuándo.
Actualmente, en el archivo de registro de DHCP puede ver lo siguiente:
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
Me gustaría llegar al punto en el que veo esto o algo similar:
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 (TestPC001) via eth0
Necesito registrar el host que obtuvo la dirección IP y cuándo (el archivo de registro tiene marcas de tiempo pero las eliminé para esta publicación) con fines históricos.
En mi archivo dhcpd.conf tengo la siguiente declaración de host:
host TestPC001 {
hardware ethernet d0:50:56:ac:74:71;
fixed-address 208.x.x.75;
}
Si alguien sabe cómo hacer esto con DHCP3, sería genial. Estoy abierto a sugerencias sobre aplicaciones de terceros que hagan esto. Una cosa a tener en cuenta: el archivo dhcpd.conf se genera dinámicamente usando una aplicación de terceros que funciona con RADIUS, por lo que las declaraciones del host pueden cambiar y cambiarán, por lo que no puedo simplemente mirar el archivo si hay un problema con alguien en la red. y obtener su nombre.
Respuesta1
Lo he descubierto.
Agregar lo siguiente al archivo dhcpd.conf
if known {
log (info, concat ("HOSTNAME: ", host-decl-name, " on ",binary-to-ascii (10, 8, ".", leased-address)," at ", binary-to-ascii (16, 8, ":", substring (hardware, 1, 6))));
}
Resultará en (he eliminado las marcas de tiempo para mayor claridad):
HOSTNAME: TestPC001 on 208.x.x.75 at d0:50:56:ac:74:71
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
Respuesta2
ISC DHCP almacena los arrendamientos asignados en un archivo (normalmente /var/run/dhcp/dhcpd.leases o similar).
Se documenta el contenido del expediente de arrendamientos:
http://linux.die.net/man/5/dhcpd.leases
y hay un módulo Perl disponible para analizar el contenido del archivo de arrendamiento:
http://search.cpan.org/~cvicente/Text-DHCPLeases-v0.3/lib/Text/DHCPLeases.pm
Toda la información que busca está en el archivo de arrendamientos, por lo que podría escribir fácilmente un programa para analizar los datos y almacenarlos en algún lugar para el historial. Si no desea hacer esto en tiempo real, probablemente pueda ejecutarlo con una frecuencia no inferior a la mitad del tiempo de arrendamiento, menos un poco (ya que se espera que los clientes renueven su contrato de arrendamiento a mitad de camino).
Espero que el análisis sea tan ligero que puedas ejecutarlo con frecuencia sin preocupaciones. También puede ser elegante ejecutando md5sum en el archivo, almacenando el resultado en algún lugar, luego verificando los cambios una vez por minuto y copiando el archivo de arrendamiento a un directorio donde un programa pueda analizarlo cada vez que cambie.
Respuesta3
ISC DHCPD registra el nombre del cliente, siempre que el cliente incluya su nombre de host en la solicitud DHCP.
No menciona qué sistema operativo están ejecutando sus clientes. Los clientes Linux generalmente no incluyen su nombre de host en la solicitud DHCP, por lo que debe agregar
send host-name "hostname";
para usted /etc/dhcp3/dhclient.conf
. (Su distribución puede estar configurada de manera diferente).
Los clientes de Windows incluyen el nombre de su computadora en la solicitud DHCP.
Respuesta4
Basta con mirar el archivo /var/lib/dhcpd/dhcpd.leases. Creo que lo que busca en los archivos de registro está presente allí.