it-swarm.com.de

Wie finde ich unter Linux nicht verwendete IP-Adressen in meinem Netzwerk?

Ich habe Zugriff auf zwei Computer (A und B) in einem Netzwerk. Beide haben eine statische IP-Adresse mit einer Subnetzmaske von 255.255.255.128 (I aktiviert dass kein DHCP-Server verwendet wurde). Ich möchte mehrere IP-Adressen auf demselben Computer konfigurieren und daher wissen, welche IP-Adressen bereits im Subnetz verwendet werden.

Aus einer frühere Frage habe ich nmap -sP -PR 172.16.128.* Befehl, aber ich bin skeptisch gegenüber dem Ergebnis, da der gleiche Befehl auf meinen beiden Computern (A und B) unterschiedliche Ergebnisse liefert. Auf A zeigt das Ergebnis eine Liste von 8 IP-Adressen, die (angeblich) bereits verwendet werden, einschließlich der von A und B .

Nmap done: 256 IP addresses (8 hosts up) scanned in 1.23 seconds

Aber bei B ist das Ergebnis unterschiedlich, d.h.

Nmap done: 256 IP addresses (0 hosts up) scanned in 0.00 seconds

Das Ergebnis auf B zeigt nicht einmal seine eigene IP-Adresse sowie die IP-Adresse von A!

Was genau mache ich hier falsch? Gibt es in Red Hat Linux (RHEL) eine narrensichere Möglichkeit, alle IP-Adressen zu ermitteln, die in dem Subnetz verwendet werden, zu dem mein Computer gehört?

RHEL: 6.5
Nmap version: 5.51
28
Vishal Sharma

Jedes gut erzogene Gerät in einem Ethernet-LAN ​​kann nahezu jeden Datenverkehr ignorieren, sodass PINGs, Port-Scans und dergleichen unzuverlässig sind. Geräte können jedoch nicht ignoriert werden ARP-Anforderungen , afaik. Angesichts der Tatsache, dass Sie angeben, dass Sie ein lokales Netzwerk scannen, ist es für mich am wenigsten fragil, zu versuchen, eine Verbindung zu einer Remoteadresse herzustellen, und dann in meinem ARP-Cache nachzuschauen.

Hier ist ein einfaches Gerät ohne Filterung (dh eines, das nicht so konfiguriert ist, dass einige Klassen des IP-Verkehrs ignoriert werden):

[[email protected] tmp]$ ping -c 1 -W 1 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.351 ms
[...]
[[email protected] tmp]$ arp -a -n|grep -w 192.168.3.1
? (192.168.3.1) at b8:27:eb:05:f5:71 [ether] on p1p1

Hier ist ein Filtergerät (eines, das mit einer einzelnen Zeile iptables konfiguriert ist, um all Verkehr zu ignorieren):

[[email protected] tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[[email protected] tmp]$ arp -a -n|grep -w 192.168.3.31
? (192.168.3.31) at b8:27:eb:02:e4:46 [ether] on p1p1

Hier ist ein Gerät, das gerade ausgefallen ist. Beachten Sie das Fehlen einer MAC-Adresse:

[[email protected] tmp]$ ping -c 1 -W 1 192.168.3.241
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[[email protected] tmp]$ arp -a -n|grep -w 192.168.3.241
? (192.168.3.241) at <incomplete> on p1p1

Diese Methode ist nicht unfehlbar - es fehlen zum einen Geräte, die ausgeschaltet sind -, aber es ist die am wenigsten schreckliche Methode, die ich bisher ausprobiert habe.

Bearbeiten : Eric Duminil, ja, es funktioniert nur in einem lokalen Netzwerk; siehe Absatz eins.

Vishal, die Methoden sind funktional identisch. Beachten Sie den in Leos Antwort zitierten Text über nmap:

Wenn ein privilegierter Benutzer versucht, Ziele in einem lokalen Ethernet-Netzwerk zu scannen, werden ARP-Anforderungen verwendet, es sei denn, --send-ip wurde angegeben.

Seine Methode beinhaltet weniger Tippen. Meins kann ohne Privileg gemacht werden und kann gibt Ihnen ein besseres Verständnis dafür, was tatsächlich passiert. In beiden Fällen wird jedoch dasselbe auf dem Draht gemacht.

39
MadHatter

Da ein Gerät ARP-Anfragen nicht ignorieren kann, verwende ich gerne ein Tool namens arp-scan. Es ist in den meisten Repositories verfügbar.

Wenn Sie den Befehl mit dem Schalter --localnet Ausführen, erhalten Sie einen Überblick über Ihr gesamtes internes Netzwerk.

Sudo arp-scan --localnet

Gibt mir eine Liste aller IP- und MAC-Adressen in meinem Netzwerk. Es ist auch möglich, einen zu scannenden Netzwerkbereich anzugeben.

Sudo arp-scan 172.16.128.0/25

Wenn Sie mehrere Netzwerkschnittstellen konfiguriert haben, können Sie die angeben, die Sie mit dem Switch verwenden möchten -I.

Sudo arp-scan -I eth0 172.16.128.0/25

Weitere Informationen zu möglichen Schaltern finden Sie unter https://linux.die.net/man/1/arp-scan oder unter man arp-scan.

20
Thorchy

Ich weiß nicht, welche Version von nmap Sie in Ihrem Red Hat 6.5 ausführen, aber für neuere Versionen ist dies meiner Meinung nach die richtige (und schnellere) Art:

nmap -sn -n 172.16.128.0/25

Dadurch wird jeder Host in Ihrem Netzwerk aufgelistet (Sie können also jede andere IP aus diesem Subnetz verwenden, sofern diese verfügbar sein sollte).

Bearbeiten und beachten Sie: Das von Ihnen erwähnte Subnetz ist 255.255.255.128, aber dann zeigen Sie die Ausgabe als Scannen von 254 Hosts an. Sofern mir nichts fehlt, sollten eine/25-Maske und 126 Hosts verfügbar sein. Wenn Sie a/24 scannen möchten, ändern Sie den obigen Befehl, um alle 254 Hosts abzufragen.

Aus dem nmap-Buch wird -sP Eingestellt und durch -sn Ersetzt:

-sn (kein Port-Scan)

Diese Option weist Nmap an, nach der Hosterkennung keinen Port-Scan durchzuführen und nur die verfügbaren Hosts auszudrucken, die auf die Host-Erkennungsprüfungen geantwortet haben. Dies wird jedoch häufig als "Ping-Scan" bezeichnet Sie können auch die Ausführung von Traceroute- und NSE-Host-Skripten anfordern. Dies ist standardmäßig einen Schritt aufdringlicher als der Listenscan und kann häufig für dieselben Zwecke verwendet werden. Es ermöglicht die leichte Aufklärung eines Zielnetzwerks, ohne viel Aufmerksamkeit zu erregen Wie viele Hosts aktiv sind, ist für Angreifer wertvoller als die Liste, die durch Listenscan jeder einzelnen IP und jedes Hostnamens bereitgestellt wird.

Systemadministratoren finden diese Option häufig ebenfalls wertvoll. Es kann einfach verwendet werden, um verfügbare Computer in einem Netzwerk zu zählen oder die Serververfügbarkeit zu überwachen. Dies wird häufig als Ping-Sweep bezeichnet und ist zuverlässiger als das Pingen der Broadcast-Adresse, da viele Hosts nicht auf Broadcast-Anfragen antworten.

Die mit -sn durchgeführte Standard-Hosterkennung besteht aus einer ICMP-Echoanforderung, TCP SYN an Port 443, TCP ACK an Port 80) und einer ICMP-Zeitstempelanforderung Standardmäßig. Bei Ausführung durch einen nicht privilegierten Benutzer werden nur SYN-Pakete (mithilfe eines Verbindungsaufrufs) an die Ports 80 und 443 des Ziels gesendet. Wenn ein privilegierter Benutzer versucht, Ziele in einem lokalen Ethernet-Netzwerk zu scannen, werden ARP-Anforderungen verwendet, es sei denn - -send-ip wurde angegeben. Die Option -sn kann für eine größere Flexibilität mit jedem der Discovery-Sondentypen (den -P * -Optionen, ausgenommen -Pn) kombiniert werden. Wenn eine dieser Sondentyp- und Portnummernoptionen verwendet wird, wird die Option Standardprüfungen werden überschrieben. Wenn zwischen dem Quellhost, auf dem Nmap] ausgeführt wird, und dem Zielnetzwerk strenge Firewalls vorhanden sind, wird die Verwendung dieser erweiterten Techniken empfohlen. Andernfalls können Hosts übersehen werden, wenn die Firewall Prüfspitzen oder deren Sonden fallen lässt Antworten.

In früheren Versionen von Nmap war -sn als -sP bekannt.

Der -n Soll die DNS-Auflösung der Clients vermeiden (beschleunigt den Scan):

-n (Keine DNS-Auflösung)

Weist Nmap an, die DNS-Auflösung für die gefundenen aktiven IP-Adressen niemals umzukehren. Da DNS selbst mit dem in Nmap integrierten parallelen Stub-Resolver langsam sein kann, kann diese Option die Scan-Zeiten verkürzen.

Sie können andere Kombinationen verwenden, um den Scan oder die Dienste zu vertiefen. Dies sollte jedoch für das, wonach Sie suchen, ausreichen, es sei denn, die Hosts maskieren sich selbst oder lassen alles fallen.

Quelle: https://nmap.org/book/man-Host-discovery.html

11
Leo

Teil 1 - fping

Dieses Tool pingt alles im angegebenen Netzwerkbereich an und zeigt diejenigen an, die über ICMP antworten.

[email protected]:~# fping -a -g 10.28.1.0/24
10.28.1.1
10.28.1.2
10.28.1.3
10.28.1.4
10.28.1.5
10.28.1.12.....

Teil 2 - arp

Da fping mit allem im LAN gesprochen hat, wurde ein Eintrag zur ARP-Tabelle des Systems hinzugefügt. Lesen Sie es innerhalb weniger Minuten vor, da die Arp-Tabelle alte Einträge löscht.

[email protected]:~# arp -a | grep -v incomplete
? (10.28.1.1) at 00:0d:b9:35:29:c4 [ether] on eth0
? (10.28.1.2) at 68:05:ca:10:53:5f [ether] on eth0
? (10.28.1.3) at d2:f1:6e:54:05:22 [ether] on eth0
? (10.28.1.4) at 00:1a:4d:26:85:ee [ether] on eth0
? (10.28.1.5) at 6e:a6:e5:78:da:ca [ether] on eth0
? (10.28.1.12) at 3c:4a:92:76:85:d8 [ether] on eth0

Beachten Sie auch, dass die ARP-Tabelle eine maximale Größe hat und der Kernel alte und wenig genutzte Einträge entfernt.

Alles zusammen mit

 fping -a -g 10.28.1.0/24 && arp -a | grep -v incomplete > arp.txt

dann durchsuchen Sie arp.txt nach Belieben.

8
Criggie

IPv6

Gehen Sie nicht davon aus, dass IPv4 Ihre einzige Option ist. Viele moderne Betriebssysteme verarbeiten IPv6 einwandfrei, auch wenn Ihr ISP keine V6-Konnektivität bietet.

Möglicherweise gibt es sogar Geräte, die nur über IPv6 oder andere Protokolle erreichbar sind.

Es gibt eine Reihe praktischer Multicast-Adressen, die in https: //en.wikipedia.org/wiki/Multicast_address#IPv6 dokumentiert sind. Aber die für Sie interessante ist ff02 :: 1

[email protected]:~# ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80::4261:86ff:fec4:cbaa%eth0 eth0: 56 data bytes
64 bytes from fe80::4261:86ff:fec4:cbaa%eth0: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from fe80::21a:4dff:fe26:85ee%eth0: icmp_seq=1 ttl=64 time=0.215 ms (DUP!)
64 bytes from fe80::6a05:caff:fe10:535f%eth0: icmp_seq=1 ttl=64 time=0.233 ms (DUP!)
64 bytes from fe80::226:55ff:feda:299c%eth0: icmp_seq=1 ttl=64 time=0.334 ms (DUP!)
64 bytes from fe80::20d:b9ff:fe35:29c4%eth0: icmp_seq=1 ttl=64 time=0.501 ms (DUP!)
64 bytes from fe80::21e:c2ff:fe13:36bf%eth0: icmp_seq=1 ttl=64 time=0.512 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=0.518 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=0.757 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=0.772 ms (DUP!)
64 bytes from fe80::60cc:69ff:fe4f:7db0%eth0: icmp_seq=1 ttl=64 time=0.992 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe32:3232%eth0: icmp_seq=1 ttl=64 time=1.00 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe30:3030%eth0: icmp_seq=1 ttl=64 time=1.24 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe31:3131%eth0: icmp_seq=1 ttl=64 time=1.34 ms (DUP!)
64 bytes from fe80::6ca6:e5ff:fe78:daca%eth0: icmp_seq=1 ttl=64 time=2.35 ms (DUP!)
64 bytes from fe80::b639:d6ff:feab:1000%eth0: icmp_seq=1 ttl=64 time=7.04 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=8.02 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=8.03 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=8.06 ms (DUP!)
64 bytes from fe80::212:12ff:fef7:8044%eth0: icmp_seq=1 ttl=64 time=8.24 ms (DUP!)
64 bytes from fe80::8edc:d4ff:fef2:67e0%eth0: icmp_seq=1 ttl=64 time=18.3 ms (DUP!)
64 bytes from fe80::21e:c2ff:fea9:6d71%eth0: icmp_seq=1 ttl=64 time=295 ms (DUP!)
...repeats
5
Criggie

Eine schlechte Antwort ist das Pingen der Broadcast-Adresse mit

[email protected]:~# ping -b 10.28.255.255
WARNING: pinging broadcast address
PING 10.28.255.255 (10.28.255.255) 56(84) bytes of data.
64 bytes from 10.28.2.7: icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from 10.28.3.12: icmp_seq=1 ttl=255 time=0.594 ms (DUP!)
64 bytes from 10.28.9.4: icmp_seq=1 ttl=64 time=1.03 ms (DUP!)
64 bytes from 10.28.1.151: icmp_seq=1 ttl=255 time=1.04 ms (DUP!)
64 bytes from 10.28.3.13: icmp_seq=1 ttl=255 time=2.22 ms (DUP!)
64 bytes from 10.28.3.11: icmp_seq=1 ttl=255 time=2.43 ms (DUP!)

Es gibt ~ 50 IP-Adressen in diesem Netzwerk mit einer/16-Netzmaske und nur sieben haben geantwortet. Das ist also keine gute Lösung.

3
Criggie

Zusätzlich zu MadHatters Antwort gibt es ein Tool, das die Arp-Suche durchführt, ohne zuerst zu versuchen, ein Netzwerkpaket zu senden: arping .

Es scheint zwei Implementierungen zu geben:

Für Ihren Zweck würde ich nur das Paket von Ihrer Linux-Distribution nehmen, da die Unterschiede wahrscheinlich nur in den Details liegen.

3
allo

Als Dinosaurier die Erde durchstreiften, benutzten Proto-Nerds Arpwatch

arpwatch ist eine Computersoftware zur Überwachung des Datenverkehrs im Adressauflösungsprotokoll in einem Computernetzwerk. [1] Es wird ein Protokoll der beobachteten Paarung von IP-Adressen mit MAC-Adressen zusammen mit einem Zeitstempel generiert, als die Paarung im Netzwerk angezeigt wurde. Es besteht auch die Möglichkeit, eine E-Mail an einen Administrator zu senden, wenn sich ein Pairing ändert oder hinzugefügt wird.

Arpwatch-Manpage

1
RedGrittyBrick

Melden Sie sich bei Ihren Switches an und geben Sie show mac-address oder ähnliche Befehle (je nach Marke und Modell). Dadurch erhalten Sie alle MAC-Adressen der aktiven Geräte (außer Ihnen selbst). Wenn einer dieser MACs nicht unter den MACs auftritt, die mit einem der Pings oder anderen Methoden in den anderen Antworten gefunden wurden, möchten Sie möglicherweise weiter untersuchen, um welches Gerät es sich handelt. Vielleicht spielt es keine Rolle, weil es nicht einmal IP spricht oder zu einem anderen VLAN gehört, aber zumindest können Sie sich einen Überblick verschaffen, ob Ihre anderen Sonden korrekt sind.

0