Nmap: finde freie IPs aus dem Bereich


14

Gibt es eine Möglichkeit, im Netzwerk nach freien IPs zu suchen? Ich benutze, nmap -sP 192.168.1.0/24aber dies zeigt tatsächlich Hosts, die aktiv sind.


10
reagiert nicht auf ping bedeutet nicht unbedingt ungenutzt.
Grant

1
Sie möchten einen IPAM-Scanner, nicht nmap.
TheCleaner

2
Der Host-Discovery-Scan von @Grant Nmap (manchmal als "Ping-Scan" bezeichnet) sendet viele verschiedene Tests, nicht nur ICMP-Echoanforderungen. Für Adressen auf derselben Datenverbindung werden ARP-Anforderungen verwendet, die grundsätzlich nicht ignoriert werden können.
Bonsaiviking

1
Sie sollten sich auch daran erinnern, dass Hosts, die nicht eingeschaltet sind, ebenfalls keine IP-Adresse haben.
Tero Kilkanen

Antworten:


24

Die Verwendung von Nmap wie folgt ist eine ziemlich genaue Vorgehensweise, vorausgesetzt, einige Voraussetzungen sind erfüllt:

  1. Sie müssen den Scan als Root (oder Administrator unter Windows) ausführen, um ARP-Anforderungen und keine TCP-Verbindungen zu senden. Andernfalls meldet der Scan möglicherweise eine Adresse als "down", wenn sie nur durch eine Firewall geschützt ist.
  2. Sie können dies nur von einem System aus tun, das sich auf derselben Datenverbindung (Schicht 2) befindet wie der Adressbereich, den Sie scannen. Andernfalls muss Nmap Tests auf Netzwerkebene verwenden, die von einer Firewall blockiert werden können.

Um die "verfügbaren" Adressen zu erhalten, müssen Sie die Liste der Adressen abrufen, die Nmap als "down" meldet. Sie können dies mit einem einfachen awk-Befehl tun:

sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Zusammenfassung der verwendeten Nmap-Optionen:

  • Wenn Sie diese -vOption verwenden, druckt Nmap die gefundenen Adressen zusätzlich zu den Adressen, die "up" sind, als "down" aus.
  • Stattdessen -sPhabe ich die neuere Schreibweise ersetzt -sn, mit der immer noch derselbe Scan ausgeführt wird, jedoch "Port-Scan überspringen" anstelle des irreführenden "Ping-Scans" (da die Host-Erkennungsphase nicht unbedingt einen ICMP-Echo-Scan oder Ping-Scan bedeutet) ).
  • Die -nOption überspringt Reverse-DNS-Lookups, wodurch Sie etwas Zeit sparen, da Sie nicht an Namen, sondern nur an IP-Adressen interessiert sind.
  • Die -oGOption weist Nmap an, ein grepable- Format auszugeben , das für awk einfacher zu verarbeiten ist. Das Argument " -" weist es an, diese Ausgabe an stdout zu senden.

Der Befehl awk sucht dann nach "Status: Down" und druckt das zweite Feld, das die IP-Adresse enthält.

Wenn Sie Zugriff auf die laufenden Konfigurationen des Switches oder auf die Leases des DHCP-Servers haben, können Sie diese Antwort natürlich viel zuverlässiger erhalten, ohne einen Scan durchzuführen, der Sicherheitsalarme auslösen könnte.


1
Völlig Lesezeichen für die zukünftige Verwendung und es ist nicht einmal meine Frage :)
MartinC

1

Ich bin mir bei n-map nicht sicher, aber man könnte vernünftigerweise davon ausgehen, dass, wenn Sie ein Ping-Skript schreiben, das 1 Ping an jede Adresse sendet, alle Hosts, die mit "destination unreachable" zurückkehren, nicht belegt sind und alles, was zurückkommt, "request time out". ist besetzt, antwortet aber nicht auf ping. Der Unterschied zwischen den beiden Antworten besteht darin, dass "Ziel nicht erreichbar" keine Antwort auf seine ARP-Anforderung erhalten hat. "Anforderungs-Timeout" bedeutet, dass auf die ARP-Anforderung etwas geantwortet hat, jedoch nicht auf das ICMP-Paket.


Bei Ausführung mit Root-Rechten führt Nmap einfach die ARP-Anforderung aus und meldet Adressen, die antworten.
Bonsaiviking

0

Hier ist das Gleiche in PowerShell ....

((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}

0

Hier ist eine andere, die von Anders Larsson inspiriert wurde

für ip in 172.18.5. {129..254}; do {ping -c 1 -W 1 $ ip; } &> / dev / null || echo $ ip & done | Sortieren

Was es bedeutet: "Versuchen Sie, alle IPs in dem Bereich zu pingen. Wenn der" Ping "fehlschlägt, drucken Sie diese IP"

Wenn Sie tun

nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Funktioniert schnell, aber ich habe festgestellt, dass einige Hosts, die als "Down" gemeldet wurden, tatsächlich "Up" sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.