Dynamisch vergebene IP-Adressen ermitteln

Aus LinuxUser 06/2016

Dynamisch vergebene IP-Adressen ermitteln

© Mohamad Razi Bin Husin, 123RF

Suche im Netz

Welche IP-Adresse hat der Router, der Laptop, die Kaffeemaschine? Clevere Linux-Tools geben hier schnell Auskunft.

Praktisch jedes Netz verwendet einen DHCP-Server, der eindeutige IP-Adressen dynamisch verteilt und dem Client gleich das passende Gateway und den namenauflösenden DNS-Server verrät. Eine wichtige Rolle für den reibungslosen Betrieb spielt dabei, ob der Dienst anhand der voreingestellten IP-Bereiche über genügend Adressen verfügt, um stets alle Geräte zu versorgen.

Insbesondere bei öffentlichen WLAN-Netzen sorgt bei einem zu klein gewählten Bereich ein steter Wechsel schnell für Engpässe bei der Kapazität und für Unmut bei den Nutzern. Sehen diese das WLAN als essenziell an – wie in einem Café oder einem Coworking Space – möchte man daher gerne wissen, ob und wie viel man unter Umständen nachjustieren muss. Gleichzeitig gilt es, sicherzustellen, dass alle Rechner im Netzwerk die richtige Konfiguration mitbringen und nicht mit statischen IP-Adressen andere Clients blockieren.

Die Analyse der vergebenen Adressen liefert einen Überblick, welche Geräte es überhaupt im Netz gibt (und fördert oft bislang unbekannte zutage) und wer sich regelmäßig ins Netz einbucht. Das hat nicht primär mit dem Überwachen der Nutzer zu tun, sondern dient der statistischen Analyse, um Kapazitäten zu planen: Sie leiten daraus ab, ob der Pool an IP-Adressen ausreicht oder nicht.

Funktionen von DHCP

Der DHCP-Server verwaltet einen Pool von Adressen, aus dem heraus er eine IP an einen anfragenden Rechner im lokalen Netzwerk vergibt. Er verwaltet diese Liste und merkt sich anhand der MAC-Adresse, welches Gerät welche IP-Adresse nutzt. Dabei ordnet der Server diese Daten in der Regel zeitlich begrenzt zu, weshalb sie “Lease” heißen, zu deutsch Nutzungsvertrag. Sofern der Client die Adresse nicht mehr benötigt, steht sie nach Ablauf der Gültigkeitsdauer wieder im Pool bereit.

Die Gültigkeitsdauer (“Lease Time”) legen Sie in der Konfiguration des DHCP-Servers fest; üblicherweise beträgt sie zwischen 30 Minuten und sechs Stunden. Das richtet sich meist danach, wie häufig die Nutzer wechseln. Als Faustregel gilt: Je häufiger der Wechsel, desto niedriger die Lease Time.

Der DHCP-Client erkundigt sich im Netzwerk zunächst via Broadcast nach einem entsprechenden Server. Der antwortet auf die Anfrage und bietet, sofern möglich, dem Client eine IP-Adresse an. Nimmt dieser das Angebot an, vergibt der Server die bestätigte IP-Adresse an den Client und merkt sich das [1].

Jeder DHCP-Server verwendet ein eigenes Format für die Datei, in der er die vergebenen IP-Adressen speichert. Der in Debian integriert Server des Internet Systems Consortium [2] legt dazu die Datei dhcpd.leases unter /var/lib/dhcp/ an, Dnsmask [3] hingegen nutzt /tmp/dhcp.leases (Listing 1). Ein Eintrag daraus umfasst den Zeitpunkt, zu dem das Lease verfällt (als Anzahl der Sekunden seit 1.1.1970), die MAC-Adresse des Clients, die vergebenen IP-Adresse, den Hostnamen sowie die übermittelte Client-ID. Die leitet sich üblicherweise von der MAC-Adresse der Netzwerkschnittstelle ab [4], weswegen beide meistens sehr ähnlich ausfallen.

Listing 1

# cat /tmp/dhcp.leases
1456254174 a8:7b:39:95:4a:5f 192.168.22.129 Nokia-N900 01:a8:7b:39:95:4a:5f
1456251956 00:13:e8:d2:60:bf 192.168.22.213 tuba *
1456254015 00:25:90:09:9c:98 192.168.15.129 trompete *
1456253248 00:25:90:09:a1:9f 192.168.15.130 troete 01:00:25:90:09:a1:9f

Der Client seinerseits speichert neben der Konfiguration der Netzwerkschnittstelle die Information zur empfangenen Lease. Der ISC-DHCP-Client verwendet dafür die Datei dhclient.leases, die er unter /var/lib/dhcp/ ablegt (Listing 2). In dieser Datei finden sich unter anderem die vergebene IP-Adresse (fixed-address), die Subnetzmaske (option subnet-mask), die IP-Adresse des Routers (option routers), die Gültigkeitsdauer der IP-Adresse (option dhcp-lease-time, im Beispiel 60 Minuten), der DNS-Server (option domain-name-servers), der NTP-Server (option ntp-servers) sowie die Zeitpunkte für den Ablauf (expire) und das Erneuern der IP-Adresse (rebind). Dieser Wert bestimmt, wann der Client beim DHCP-Server eine Verlängerung für seine IP-Adresse anfordert.

Listing 2

lease {
  interface "eth0";
  fixed-address 192.168.55.183;
  filename "/ltsp/i386/nbi.img";
  option subnet-mask 255.255.255.0;
  option routers 192.168.55.1;
  option dhcp-lease-time 3600;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.55.1,192.168.55.6;
  option dhcp-server-identifier 192.168.55.6;
  option ntp-servers 192.168.55.3;
  option broadcast-address 192.168.55.255;
  option host-name "efho-mobil";
  option netbios-name-servers 192.168.55.4;
  option domain-name "netzwerk.local netzwerk.org";
  renew 2 2016/03/22 10:29:23;
  rebind 2 2016/03/22 10:56:54;
  expire 2 2016/03/22 11:04:24;
}

IP-Adressen ermitteln

Setzen Sie den ISC-DHCP-Server ein, dann hilft Ihnen Grep bei der Recherche zu den vergebenen IP-Adressen. Mit dem Aufruf aus Listing 3 ermitteln Sie, welche IP-Adressen der DHCP-Server aktuell vergeben hat. Die Ausgabe umfasst – soweit bekannt – die Lease, den Hostnamen und die MAC-Adresse der Schnittstelle.

Listing 3

$ egrep "lease|hostname|hardware|\}" /var/lib/dhcpd/dhcpd.leases

Weitere Hinweise liefert der Verkehr im Netzwerk. Wie am Förderband eines Running-Sushi-Restaurants beobachtet Ihr Rechner, welche Pakete an seinen Schnittstellen ankommen. Er wacht dann auf und reagiert, wenn beispielsweise eines davon direkt an eine seiner Schnittstellen adressiert ist. Quasi nebenbei bekommt der Rechner aber mit, was noch so im Netzwerk passiert. Dazu zählen auch Broadcast-Anfragen zur Adressauflösung über das Address Resolution Protocol, kurz ARP [5].

Das Proc-Filesystem [6] des Linux-Kernels hält dazu eine Tabelle vor (Listing 4). Die darin enthaltenen Angaben stammen aus dem sogenannten ARP-Cache, den Sie als Benutzer root über das Kommando arp -a auslesen. Die Ausgaben enthalten die IP-Adresse, den Typ der Hardware, Flags, die MAC-Adresse der zur IP-Adresse gehörenden Schnittstelle sowie das Interface, über das der Linux-Kernel diese Daten bezog (Listing 5).

Listing 4

$ cat /proc/net/arp
IP address     HW type  Flags  HW address         Mask  Device
192.168.55.22  0x1      0x2    52:54:00:8a:43:5f  *     eth0
192.168.55.6   0x1      0x2    00:16:3e:18:29:b3  *     eth0
192.168.55.97  0x1      0x2    bc:05:43:48:9b:81  *     eth0
192.168.55.1   0x1      0x2    52:54:00:b3:8d:be  *     eth0

Listing 5

# arp -a
? (192.168.55.22) auf 52:54:00:8a:43:5f [ether] auf eth0
lists.netzwerk.org (192.168.55.6) auf 00:16:3e:18:29:b3 [ether] auf eth0
? (192.168.55.97) auf bc:05:43:48:9b:81 [ether] auf eth0
orange.netzwerk.local (192.168.55.1) auf 52:54:00:b3:8d:be [ether] auf eth0

Als ebenfalls nützlich erweist sich das Tool Ip, der etwas flexiblere Nachfolger der Zwillinge Ifconfig und Iwconfig aus dem Werkzeugkasten Iproute2 [7]. Es verfügt über den Schalter neighbor show zur Anzeige aller Nachbarn im Netzwerk. Als Grundlage dazu dient hier wiederum der ARP-Cache (Listing 6).

Listing 6

# ip neighbor show
fe80::1:1 dev eth0 lladdr 52:54:00:b3:8d:be router STALE
192.168.55.22 dev eth0 lladdr 52:54:00:8a:43:5f STALE
192.168.55.6 dev eth0 lladdr 00:16:3e:18:29:b3 STALE
192.168.55.97 dev eth0 lladdr bc:05:43:48:9b:81 STALE
192.168.55.1 dev eth0 lladdr 52:54:00:b3:8d:be STALE

Ping und Fping

Ping kommt ebenfalls häufig beim Aufspüren im Netzwerk befindlicher Rechner zum Einsatz. Das funktioniert jedoch nur, wenn das Netz den Transport von ICMP-Paketen gestattet. Dieser Hinweis gilt ebenso für die außerdem vorgestellten Werkzeuge, da sie auch auf diesem Protokoll aufsetzen.

Listing 7 zeigt einen Bash-Einzeiler, der im Bereich von 192.168.55.11 bis 192.168.55.22 nach vergebenen IP-Adressen sucht. Als Ergebnis liefert er eine kleine Liste, die auf den Antworten der angefragten Hosts basiert.

Listing 7

$ for i in $(seq 11 22); do ping -c 1 "192.168.55.$i" | grep "bytes from"; done
64 bytes from 192.168.55.11: icmp_seq=1 ttl=64 time=0.623 ms
64 bytes from 192.168.55.14: icmp_seq=1 ttl=64 time=3.64 ms
64 bytes from 192.168.55.16: icmp_seq=1 ttl=64 time=7.11 ms
64 bytes from 192.168.55.22: icmp_seq=1 ttl=64 time=0.839 ms

Möchten Sie weniger tippen, kommen Fping (für IPv4) und Fping6 (für IPv6) ins Spiel: Fping [8] akzeptiert einen Bereich aus zwei IP-Adressen oder alternativ eine Netzmaske. Listing 8 zeigt den Aufruf analog zu Listing 7. Mithilfe der beiden Schalter -a und -q begrenzen Sie die Ausgabe auf die erreichbaren IP-Adressen, die Option -g generiert den Adressbereich aus den Zieleingaben.

Listing 8

$ fping -aqg 192.168.55.11 192.168.55.22
192.168.55.11
192.168.55.14
192.168.55.16
192.168.55.22

Allrounder Nmap

Reichen die Ausgaben von Ping und Fping nicht aus, dann rücken Nmap und dessen grafisches Frontend Zenmap [9] ins Rampenlicht: Mithilfe der beiden Schalter -sP und der Angabe des Netzwerks fischen Sie die IP-Adressen aller erreichbaren Hosts heraus (Listing 9). Falls möglich, ermittelt Nmap zusätzlich die Namen der Hosts (Abbildung 1).

Abbildung 1: Das grafische Frontend Zenmap bereitet die Scanergebnisse von Nmap übersichtlich auf und bietet daneben weitergehende Informationen zum jeweiligen Host an.

Abbildung 1: Das grafische Frontend Zenmap bereitet die Scanergebnisse von Nmap übersichtlich auf und bietet daneben weitergehende Informationen zum jeweiligen Host an.

Listing 9

$ nmap -sP 192.168.69.*
Starting Nmap 6.47 ( http://nmap.org ) at 2016-04-25 09:54 CET
Nmap scan report for 192.168.69.1
Host is up (0.00098s latency).
[...]
Nmap scan report for fritz.box (192.168.69.67)
Host is up (0.00052s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 2.32 seconds

DHCP-Server finden

Der als Root abgesetzte Aufruf dhclient -v findet “verlorengegangene” DHCP-Server meist zuverlässig wieder. Noch einfacher gelingt das mit Dhcping [10], das obendrein prüft, ob er noch läuft. Dazu rufen Sie das Tool mit dem Schalter -v auf (Listing 10). Ähnlich arbeiten die Werkzeuge Dhcpstatus [11], Reportdhcp [12] und Dhcpd-pool [13].

Listing 10

# dhcping -v
Got answer from: 192.168.55.6
received from 192.168.55.6, expected from 0.0.0.0
no answer

Die Lease-Liste

Während die meisten der bislang genannten Werkzeuge den Einsatz ohne Root-Rechte zulassen, gelingt der Start des kleinen Perl-Skripts dhcp-lease-list nur dem Systemadministrator. Das Tool gehört bereits seit Version 4.3.1 zu den Bestandteilen des ISC-DHCP-Servers. Es benötigt als Parameter die Datei mit den vergebenen Leases [14] und wertet diese aus (Listing 11). Damit erhalten Sie auf einen Blick die MAC-Adresse, die zugewiesene IP-Adresse, den Hostnamen, die Gültigkeitsdauer der Lease und – sofern die Information vorliegt – den Hersteller des Netzwerkchips.

Listing 11

# dhcp-lease-list --lease /var/lib/dhcp/dhcpd.leases
[...]
MAC               IP              hostname    valid until          manufacturer
===============================================================================
[...]
00:1e:67:39:cd:fa 192.168.251.249 DALCOServer 2016-02-23 16:52:33 -NA-
00:1e:67:49:72:fe 192.168.251.6   -NA-        2016-02-23 16:52:55 -NA-
00:1e:67:4f:df:2c 192.168.251.93  DALCOServer 2016-02-23 16:52:38 -NA-
[...]

Mobil

Für Smartphone-Nutzer gibt es ein kommerzielles Werkzeug namens Lookatlan [15] beziehungsweise Fing. Als DEB-Paket für Android und Debian kombiniert es Ping und Nmap miteinander. Neben einer Variante für die Kommandozeile gibt es die Software ebenfalls mit einer grafischen Oberfläche (Abbildung 2).

Abbildung 2: Das Netz im Überblick mit Fing.

Abbildung 2: Das Netz im Überblick mit Fing.

Fazit

Solange in einem DHCP-gesteuerten Netzwerk alles glatt läuft, brauchen Sie keinen Gedanken auf die Zuweisung von Adressen an Hosts zu verschwenden. Geraten die Dinge aber aus der Balance, haben Sie mit den hier vorgestellten Werkzeugen eine solide Toolbox für die Analyse der gesamten Infrastruktur des LANs an der Hand. 

Danksagung

Der Autor bedankt sich bei Axel Beckert, Sebastian Andres, Wolfram Eifler, Dirk Deimeke und Werner Heuser für ihre Anregungen und Kritik im Vorfeld dieses Artikels.

Autoreninfo

Frank Hofmann arbeitet in Berlin im Büro 2.0, einem Open-Source Experten-Netzwerk, als Dienstleister mit Spezialisierung auf Druck und Satz (http://www.efho.de). Seit 2008 koordiniert er das Regionaltreffen der Linux User Groups aus der Region Berlin-Brandenburg. Er ist zudem Co-Autor des Debian-Paketmanagement-Buches (http://www.dpmb.org).

Glossar

DHCP

Das Dynamic Host Control Protocol regelt unter anderem die dynamische Vergabe von IP-Adressen, meist mit zeitlich begrenzter Gültigkeit.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 06/2016 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben