Gibt es einen Befehl, mit dem ich den DHCP-Server fragen kann, welche Adressen zugewiesen wurden?
21
Nein, Sie können diese Informationsserverseite nur vom DHCP-Server beziehen. Diese Informationen sind in der .lease-Datei des DHCP-Servers enthalten: /var/lib/dhcpd/dhcpd.leases
Wenn Sie den DHCP-Server von ISC verwenden.
$ 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
(dh neind
am Ende des erstendhcp
...)isc-dhcpd
Die Paketversion4.3.1
verfügt über den folgenden Befehl, um Leases aufzulisten:Dies ist ein einfaches Perl-Skript, das auch ältere DHCP-Versionen unterstützt. Sie können eine Kopie auch im Debian-Quellcode oder in der offiziellen DHCP-Distribution (in
contrib/
) sehen.Die Ausgabe ist hübsch:
Es ist schöner, wenn Sie die
oui.txt
Datei wie vorgeschlagen herunterladen , aber dann kann die Ausgabe verstümmelt werden, wenn Sie nicht den folgenden Patch anwenden:Dieser Patch wurde als ISC-Bugs # 41288 im Upstream eingereicht und muss noch überprüft werden.
quelle
Der Befehl egrep kann verwendet werden, um eine Ausgabe zu erhalten:
Ausgabe:
quelle
Die meisten der obigen Antworten sind unvollständig. Und um ehrlich zu sein, gibt es keine einfache Lösung. 1) Sie können die Datenbankdatei dhcpd.leases analysieren und Informationen zu aktiven Leases abrufen, aber Sie erhalten keine Informationen zu festen Adressen (zugewiesen durch eine Zeile wie:
Und dies gibt auch nicht wirklich Auskunft darüber, wann das letzte Mal eine DHCP-Bestätigung an die Maschine gesendet wurde.
2) Auf der anderen Seite können Sie die Datei dhcpd.log analysieren, um nach ack-Zeilen zu suchen (sie sehen so aus):
Aber was Sie wirklich tun sollten, ist, BEIDE zu tun. Analysieren Sie zuerst die Protokolldatei und aktualisieren Sie dann die Datei mit den Informationen aus der Datei dhcpd.leases mit der Datenbank, um fehlende Informationen wie Start-Ende des Leasingvertrags usw. zu erhalten.
Jetzt: Ich habe ca. 2 volle Arbeitstage gespielt, bis ich eine Lösung erstellt habe, die eine HTML-Tabelle mit ALLEN aktiven Leases erstellt, sowohl FIXED als auch Dynamic. Hier ist der Code, den Sie in Ihrem CGI-Bin-Ordner oder wo auch immer ablegen können.
Beachten Sie Folgendes: 1) Das obige Skript muss geringfügig geändert werden, bevor es in IHRER Umgebung ausgeführt werden kann. Sie müssen die Speicherorte der Dateien und einen regulären Ausdruck in Abhängigkeit von Ihrem Protokolldateiformat ändern. Siehe Kommentar im Skript. 2) Das obige Skript prüft nicht, ob die IP in der ACK-Tabelle nicht wiederholt wird, wenn 2 verschiedene Maschinen innerhalb der letzten Tage die gleiche Adresse erhalten haben. Dies ist beabsichtigt (was ich persönlich brauchte, um jede Mac-Adresse zu sehen, die in den letzten Tagen in meinem Netzwerk vorhanden war) - Sie können es leicht ändern, es gibt einen bereiten Abschnitt für diesen Code, fügen Sie einfach eine Bedingung hinzu.
Hoffe du magst es.
quelle
Das Format der Lease-Dateien hat sich geändert oder unterscheidet sich zumindest bei der Verwendung
dhcpcd5
. Um den Mietvertrag haben Sie auf Ansichtwlan0
für das WiFi - NetzwerkMyNetwork
, dann würden Sie in dieser Datei (oder so ähnlich) aussehen müssen:/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
.Diese Datei ist eine Binärdatei. (Warum? Ich weiß es nicht. Vielleicht um ein paar wertvolle CPU-Zyklen beim Parsen zu sparen? Blech.) Zum Anzeigen verwenden Sie das
dhcpcd --dumplease
, das die Binärdatei von STDIN analysiert und eine für Menschen lesbare Version ausgibt:Wenn Sie jedoch nur sehen möchten, welchem Leasingvertrag der aktuelle Leasingvertrag zugewiesen
wlan0
ist, können Sie einfach Folgendes tun:quelle
Ich habe tatsächlich etwas in Bash geschrieben, um zu versuchen, das herauszufinden. Jede IP-Adresse wird in dieselbe Namensdatei geschrieben. Wenn also eine andere Adresse erneut angezeigt wird, wird die vorherige Datei überschrieben, sodass keine Duplikate vorhanden sind. Es wird auch oui.txt verwenden, um den Hersteller der fraglichen MAC-Adresse zu finden.
Sehen Sie, ob Sie es verwenden können.
quelle