Frage Wie verwende ich Linux, um nicht verwendete IP-Adressen in meinem Netzwerk zu finden?


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

Von einem frühere Frage, Ich habe es versucht nmap -sP -PR 172.16.128.* Befehl, aber ich bin skeptisch über sein Ergebnis, da der gleiche Befehl unterschiedliche Ergebnisse auf meinen zwei Computern (A und B) gibt. 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 auf B ist das Ergebnis anders, d.

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) einen sicheren Weg, alle IP-Adressen zu entdecken, die in dem Teilnetz verwendet werden, zu dem mein Computer gehört?

RHEL: 6.5
Nmap version: 5.51

27
2018-05-16 06:56


Ursprung


Wer verwaltet das Netzwerk? Haben Sie die Erlaubnis, Ihren Hosts beliebige IP-Adressen zuzuweisen? - Roger Lipscombe
Ja, ich habe die Erlaubnis. Das ist eine gute Frage. - Vishal Sharma
Die einzige Möglichkeit, eine richtige Antwort zu erhalten, besteht darin, Ihren Netzwerkadministrator zu fragen. Alles, was Sie tun, riskiert ungenau zu sein, da Geräte möglicherweise ausgeschaltet werden, neu gestartet werden, nicht mehr reagieren usw. - Jon Bentley
Um die Kommentare von Roger und Jon zu vervollständigen, sollten die IPs in Ihrem Netzwerk manuell und ohne DHCP zugewiesen werden. Es sollte irgendwo ein Register stehen (sei es eine Datenbank, ein Excel-Blatt oder ein altes Papierverzeichnis), in dem jede IP-Zuteilung aufgezeichnet wird Das Verwalten des Netzwerks muss diese Informationen enthalten und verwenden. Keine technische Lösung stellt sicher, dass Sie nicht widerwillig die IP einer anderen Maschine stehlen (sei es ein Down-Server oder ein Remote-Benutzer-Laptop). Wenn dieses Register verloren geht oder nicht existiert, ist ein vollständiges Inventar erforderlich. - zakinster
Sie sollten die nicht geschützten IP-Adressen angeben, um sicherzustellen, dass Ihre Shell nicht versucht, sie als möglichen Dateinamen zu erweitern. Zum Beispiel, nmap -sP -PR '172.16.128.*' - roaima


Antworten:


Jedes gut funktionierende Gerät in einem Ethernet-LAN ​​kann nahezu jeden Datenverkehr ignorieren, so dass PINGs, Port-Scans und dergleichen unzuverlässig sind. Geräte können jedoch nicht ignoriert werden ARP-Anfragen, so viel ich weiss. Da Sie angeben, dass Sie ein lokales Netzwerk scannen, finde ich die am wenigsten fragile Methode, um zu versuchen, eine Verbindung zu einer entfernten Adresse herzustellen, und dann in meinem ARP-Cache nachzusehen.

Hier ist ein einfaches, nicht filterndes Gerät (dh eines, das nicht dafür konfiguriert ist, einige IP-Verkehrsklassen zu ignorieren):

[me@risby 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
[...]
[me@risby 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 mit einer einzelnen Zeile von konfiguriert iptables ignorieren alles der Verkehr):

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby 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 nicht funktioniert. Beachten Sie das Fehlen einer MAC-Adresse:

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

Diese Methode ist nicht unfehlbar - sie vermisst Geräte, die ausgeschaltet sind, zum einen - 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 1.

Vishal, die Methoden sind funktional identisch. Beachten Sie den Text, der in Leos Antwort zitiert wird nmap:

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

Seine Methode beinhaltet weniger Tipparbeit. Meins kann ohne Privileg gemacht werden, und kann geben Sie ein besseres Verständnis von dem, was tatsächlich passiert. In beiden Fällen wird das gleiche getan.


39
2018-05-16 07:18



Dies funktioniert nur mit Geräten im selben lokalen Netzwerk richtig? Ich habe es auf einem Server von mir versucht, Ping-Anfragen fallen irgendwo dazwischen und ich kann keine relevante Zeile mit finden arp. - Eric Duminil
Danke für die Antwort. Ich wollte nur wissen, wie sich deine Methode mit der von @Leo vergleicht? Ist es in irgendeiner Weise besser (weil es sonst einfacher ist, nur einen Befehl zu verwenden). - Vishal Sharma
@VishalSharma, EricDuminil: siehe oben Bearbeiten. - MadHatter
Nur um klar zu sein, bedeutet es, dass die Methode von @ Leo nur dann von Ihrer verwendet wird, wenn sie von einem privilegierten Benutzer verwendet wird und daher, wenn sie von einem unterprivilegierten Benutzer verwendet wird, das Ergebnis nicht vollständig / falsch ist? Unter privilegiertem Benutzer, meinst du, ein Benutzer mit sudo-Zugang? - Vishal Sharma
@VishalSharma der erste Teil Ihres Kommentars ist korrekt. Privilegierter Benutzer beinhaltet etwas unter zu tun sudo -u root (oft verkürzt auf sudo), aber auch einfach als root eingeloggt oder erledigt /bin/sudaher der Überbegriff. - 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 ausführen --localnet Schalten Sie es um, damit Sie einen Überblick über Ihr gesamtes internes Netzwerk erhalten.

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 Verbindung 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 indem du rennst man arp-scan.


20
2018-05-16 08:47



Sieht wie ein vielversprechendes Werkzeug aus, aber es kommt nicht mit RHEL 6.5 (in meinem Fall ist es nicht vorhanden). - Vishal Sharma
@VishalSharma Das ist bedauerlich. Es ist für CentOS verfügbar, also hätte ich gedacht, dass es auch auf RHEL verfügbar sein sollte. - Thorchy
Es ist in EPEL, Fedoras Extra Packages für Enterprise Linux. - mattdm
Funktioniert nicht, wenn LaBrea ausgeführt wird. - joshudson
@joshudson Ich bin mir ziemlich sicher, dass es für ein Tool / eine Software unmöglich ist, das Netzwerk nach nicht verwendeten IP-Adressen zu durchsuchen, wenn LaBrea läuft. - Thorchy


Ich weiß nicht, welche Version von nmap Sie in Ihrem Red Hat 6.5 ausführen, aber für die letzten Releases ist die richtige (und schnellere) Methode, die ich denke, folgende:

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, wie sie verfügbar sein sollte).

Bearbeiten und notieren: Das Subnetz, das Sie erwähnen, ist 255.255.255.128, aber dann zeigen Sie die Ausgabe als 254 Hosts scannen. Wenn ich etwas nicht vermisse, sollte das eine / 25 Maske und 126 Hosts zur Verfügung stehen. Wenn Sie ein / 24 scannen möchten, ändern Sie den obigen Befehl, um alle 254 Hosts abzufragen.

Aus dem NMAP-Buch, -sP wird eingestellt und ersetzt durch -sn:

-sn (Kein Portscan)

Diese Option weist Nmap an, nach der Host-Erkennung keinen Port-Scan durchzuführen, und   nur die verfügbaren Hosts ausdrucken, die auf den Host geantwortet haben   Entdeckungsproben. Dies wird oft als "Ping-Scan" bezeichnet, aber Sie können   fordern Sie auch an, dass traceroute- und NSE-Host-Skripts ausgeführt werden. Das ist vorbei   Standard einen Schritt mehr aufdringlich als der Listen-Scan und kann oft sein   für die gleichen Zwecke verwendet. Es ermöglicht die leichte Aufklärung eines Ziels   ohne viel Aufmerksamkeit zu erregen. Wissen, wie viele Hosts sind   up ist für Angreifer wertvoller als die Liste, die durch den Listen-Scan bereitgestellt wird   von jedem einzelnen IP- und Host-Namen.

Systemadministratoren finden diese Option oft auch nützlich. Es kann   kann einfach verwendet werden, um verfügbare Maschinen in einem Netzwerk oder Monitor zu zählen   Serververfügbarkeit. Dies wird oft als Ping-Sweep bezeichnet und ist mehr   zuverlässiger als das Pingen der Broadcast-Adresse, da viele Hosts dies nicht tun   Antworten auf Broadcast-Anfragen.

Die Standard-Host-Erkennung, die mit -sn durchgeführt wird, besteht aus einem ICMP-Echo   Anfrage, TCP SYN an Port 443, TCP ACK an Port 80 und ein ICMP   Timestamp-Anfrage standardmäßig. Wenn sie von einem nicht privilegierten Benutzer ausgeführt werden,   Nur SYN-Pakete werden (unter Verwendung eines Verbindungsaufrufs) an die Ports 80 und 443 gesendet   auf das Ziel. Wenn ein privilegierter Benutzer versucht, Ziele auf einem lokalen System zu scannen   Ethernet-Netzwerk, ARP-Anfragen werden verwendet, wenn --send-ip war   spezifizierten. Die Option -sn kann mit einer beliebigen Erkennung kombiniert werden   Sondentypen (die Optionen -P * * ohne -Pn) für größere Flexibilität.   Wenn einer dieser Sondentyp- und Portnummernoptionen verwendet wird, wird der   Standardsonden werden überschrieben. Wenn strenge Firewalls vorhanden sind   zwischen dem Quell-Host, auf dem Nmap ausgeführt wird, und dem Ziel-Netzwerk mit   diese fortgeschrittenen Techniken werden empfohlen. Sonst könnten Gastgeber sein   verpasst, wenn die Firewall Sonden oder deren Antworten löscht.

In früheren Versionen von Nmap wurde -sn als -sP bezeichnet.

Das -n ist die DNS-Auflösung der Clients zu vermeiden (beschleunigt den Scanvorgang):

-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 eingebautem Nmap langsam sein kann   Parallele Stub Resolver, kann diese Option Scan-Zeiten verkürzen.

Sie können andere Kombinationen verwenden, um den Scan oder die Dienste zu vertiefen, aber dies sollte 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


10
2018-05-16 07:14



Die Ausgabe, die ich erwähnt habe, ist vom Befehl nmap -sP -PR 172.16.128. * Deshalb scannt sie 254 Hosts. - Vishal Sharma
In meinem Fall lautet die Netzwerk-ID 172.16.128.128. Daher musste ich den von Ihnen vorgeschlagenen Befehl ändern. Ich habe nmap -sn -n 172.16.128.128/25 verwendet. - Vishal Sharma
Ich bin mir nicht sicher, was Sie mit Netzwerk-ID meinen, aber wenn Ihr Gerät diese Adresse hat und Sie möchten, dass alle 254 Hosts in Ihrem Subnetz gescannt werden, sollten Sie starten nmap -sn -n 172.16.128.1/24 stattdessen (wie ich in der Antwort oben angegeben habe, wird das eine 255.255.255.0 Maske scannen) - Leo
Mit Netzwerk-ID hatte ich gemeint, die Zeichenfolge, die durch Ausführen von 'logisches Und' von IP-Adresse und Subnetzmaske erhalten wurde. - Vishal Sharma
Aha. Also, beantwortet der nmap-Befehl, den ich gepostet habe, deine Frage? Werden beide Geräte mit den gleichen Adressen aufgelistet? - Leo


Teil 1 -- fping

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

root@thionite:~# 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, hat dies einen Eintrag zur ARP-Tabelle des Systems verursacht. Lies es in ein paar Minuten aus, da die Arp-Tabelle alte Einträge löscht.

root@thionite:~# 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.

Setzen Sie alles zusammen mit

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

dann stöbern Sie in Ihrer Freizeit nach arp.txt.


8
2018-05-16 08:26





IPv6

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

Möglicherweise gibt es sogar Geräte, die nur mit IPv6 oder sogar anderen Protokollen erreichbar sind.

Es gibt eine Reihe von praktischen Multicast-Adressen in dokumentiert https://en.wikipedia.org/wiki/Multicast_address#IPv6 Aber das Interessante für Sie ist ff02 :: 1

root@thionite:~# 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
2018-05-16 08:47





Eine schlechte Antwort ist, die Broadcast-Adresse mit zu pingen

root@thionite:~# 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 reagierten. Das ist also keine gute Lösung.


3
2018-05-16 08:43



Warum unterschiedliche Antwort? Sie können Post bearbeiten - d a i s y
@ Daisy, weil sie unterschiedliche Antworten sind. Eine monolithische Antwort mag gut sein, wird aber von einem Teil heruntergehalten. Getrennte Antworten ermöglichen es, dass der Aufwärts / Abwärts-Wahlmechanismus ordnungsgemäß funktioniert. Diese Antwort war wirklich nur der Vollständigkeit halber, sie ist in der Praxis nicht sehr nützlich. - Criggie
Das einzige, was Pingtests sind, ist, ob ein Gerät so konfiguriert ist, dass es auf Pings reagiert. - Rob Moir
@RobMoir true - der Hauptpunkt ist, dass die Broadcast-Adresse existiert und dass sie in IPv4 entworfen wurde. - Criggie


Zusätzlich zu MadHatters Antwort gibt es ein Tool, das die arp-Suche durchführt, ohne zuerst 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
2018-05-18 10:09





Damals, als Dinosaurier die Erde durchstreiften, kamen Proto-Nerds zum Einsatz Arpuhr

arpwatch ist ein Computer-Software-Tool zur Überwachung des Address Resolution Protocol-Verkehrs in einem Computernetzwerk. [1] Es erzeugt ein Protokoll der beobachteten Paarung von IP-Adressen mit MAC-Adressen zusammen mit einem Zeitstempel, als die Paarung im Netzwerk erschien. Es hat auch die Möglichkeit, eine E-Mail an einen Administrator zu senden, wenn sich ein Pairing ändert oder hinzugefügt wird.

Arpwatch Man Seite


1
2018-05-18 15:11





Melden Sie sich bei Ihrem / Ihren Switch (s) an und geben Sie es aus show mac-address  oder ähnliche Befehle (abhängig von Marke und Modell). Dadurch erhalten Sie alle MAC-Adressen von aktiven Geräten (außer dem Schalter selbst). Wenn eine dieser MACs nicht unter den MACs auftritt, die mit einem der Ping- oder anderen Methoden in den anderen Antworten gefunden wurden, möchten Sie möglicherweise genauer untersuchen, welches Gerät das ist. Vielleicht ist es egal, weil es nicht einmal IP spricht oder zu einem anderen VLAN gehört, aber zumindest können Sie einen Überblick bekommen, ob Ihre anderen Sonden genau sind.


0
2018-05-19 06:21