¿Hay algún comando que pueda usar para preguntarle al servidor dhcpd qué direcciones se han asignado?
21
No, solo puede obtener este lado del servidor de información del servidor DHCP. Esta información está contenida en el archivo .lease del servidor DHCP: /var/lib/dhcpd/dhcpd.leases
si está utilizando el servidor DHCP de ISC.
$ more /var/lib/dhcpd/dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.5-RedHat
lease 192.168.1.100 {
starts 4 2011/09/22 20:27:28;
ends 1 2011/09/26 20:27:28;
tstp 1 2011/09/26 20:27:28;
binding state free;
hardware ethernet 00:1b:77:93:a1:69;
uid "\001\000\033w\223\241i";
}
...
...
/var/lib/dhcp/dhcpd.leases
( es decir, nod
al final de la primeradhcp
...)isc-dhcpd
La versión del paquete4.3.1
tiene este comando para listar arrendamientos:Este es un script de script perl simple que también admite versiones DHCP anteriores. Puede ver una copia en el código fuente de Debian o también en la distribución oficial de DHCP (in
contrib/
).La salida es bonita:
Es más bonito si descarga el
oui.txt
archivo como se sugiere, pero luego la salida puede ser confusa a menos que aplique el siguiente parche:Este parche se envió en sentido ascendente como ISC-Bugs # 41288 y está pendiente de revisión.
fuente
El comando egrep se puede usar para obtener una salida:
Salida:
fuente
La mayoría de las respuestas anteriores son parciales. Y para ser sincero, no hay una solución simple. 1) Puede analizar el archivo de base de datos dhcpd.leases y obtener información sobre arrendamientos activos, pero no obtendrá información sobre ninguna dirección FIJA (asignada por una línea como:
Y esto tampoco está dando ninguna información sobre cuándo fue la última vez que se envió un dhcp ack a la máquina.
2) por otro lado, puede analizar el archivo dhcpd.log para buscar líneas de confirmación (se ven así):
Pero lo que realmente debes hacer es hacer AMBOS. Primero analice el archivo de registro y luego actualice el archivo con la información obtenida del archivo dhcpd.leases con la base de datos para obtener información faltante como el inicio del arrendamiento, etc.
Ahora: he jugado alrededor de 2 días hábiles completos hasta que he creado una solución que crea una tabla HTML con TODOS los arrendamientos activos, tanto FIJOS como dinámicos. Aquí está el código que puede colocar en su carpeta cgi-bin o donde sea.
Tenga en cuenta que: 1) el script anterior necesita una ligera modificación antes de ejecutarse en SU entorno, debe modificar las ubicaciones de los archivos y una expresión regular dependiendo del formato del archivo de registro. Ver comentario en el guión. 2) el script anterior no verifica si la IP no se repite en la tabla ACK, si 2 máquinas diferentes obtuvieron la misma dirección en los últimos días. Esto es por diseño (lo que personalmente necesitaba para ver cada dirección de Mac que estaba presente en mi red durante los últimos días): puede modificarla fácilmente, hay una sección lista para esto en el código, solo agregue una condición.
Espero que te guste.
fuente
El formato de los archivos de arrendamiento ha cambiado, o al menos es diferente cuando se usa
dhcpcd5
. Para ver el contrato de arrendamiento que tiene enwlan0
la red Wi-FiMyNetwork
, usted tiene que mirar a este archivo (o algo parecido):/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
.Ese archivo es un archivo binario. (¿Por qué? No lo sé. ¿Tal vez ahorrar algunos preciosos ciclos de CPU al analizarlo? Blech.) Para verlo, use el
dhcpcd --dumplease
, que analiza el binario de STDIN y genera una versión legible para humanos:Por otro lado, si solo quiere ver cuál es el arrendamiento actual asignado
wlan0
, simplemente puede hacer:fuente
De hecho, escribí algo en bash para tratar de obtener esto. Escribe cada dirección IP en el mismo archivo de nombre, por lo que si aparece otra, sobrescribirá el archivo anterior, por lo que no habrá duplicados. También usará oui.txt para encontrar el fabricante de la dirección MAC en cuestión.
Vea si puede usarlo.
fuente