Liste der Computer in einem LAN unter Linux anzeigen


61

Ich bin ein Webentwickler, der versucht, die Sicherheit besser in den Griff zu bekommen. Ich versuche einen Weg zu finden (unter Linux / Debian-basierten Distributionen), um alle Computer in demselben LAN aufzulisten, in dem sich mein Netbook befindet. Ich habe "arp -n" ausprobiert, aber ich glaube nicht, dass es eine vollständige Liste ist, da sich mein iPhone auf demselben WLAN-Router befindet wie mein Netbook, und das ist nicht aufgetaucht. Gibt es eine bessere Möglichkeit, eine vollständige Liste der Computer abzurufen, die alle dasselbe Gateway gemeinsam nutzen?


Antworten:


58

Holen Sie sich nmap . Es ist das Programm Trinity, das in The Matrix verwendet wird, und Sie können einen Scan durchführen, um alle Geräte zu finden, die mit dem LAN verbunden sind, in dem Sie sich befinden, und vieles mehr.

Hier ist die Referenzanleitung.


16
OK. Sieht aus wie "sudo nmap -sL 123.123.123. *", Was ich suche, oder vielleicht -sP anstelle von -sL. Vielen Dank!
CaptSaltyJack

2
Installiere nmap mitsudo apt-get install nmap
saintali 20.01.13

1
Ich dachte, dies ist eigentlich eine seriöse Website, lol +1
user10089632

38

Dies ist, was ich benutze, nmap und eine Adresse unter Verwendung der CIDR-Blocknotation des Netzwerks, das Sie scannen möchten. Zuerst müssen Sie nmap installieren, da es möglicherweise nicht bei Ihrer Distribution vorinstalliert ist. Auf Ubuntu:

sudo apt-get install nmap

Bestimmen Sie als Nächstes Ihre Netzwerkadresse mit ifconfig:

ifconfig

ifconfig-Ausgabe für die Schnittstelle, die ich scannen möchte:

wlan1     Link encap:Ethernet  HWaddr 00:1f:3b:03:d2:bf  
          inet addr:192.168.1.104  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link
          ...

Verwenden Sie die inet-Adresse und die Maske, um die Netzwerkadresse in CIDR-Notation zu ermitteln. Weitere Informationen zu CIDR finden Sie hier . Die adresse ist:

192.168.1.0/24

Führen Sie nmap mit dem Parameter -sP aus. Dabei wird nur geprüft, ob der Host online ist:

sudo nmap -sP 192.168.1.0/24

Die Ausgabe von nmap sieht ungefähr so ​​aus:

Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST
Nmap scan report for 192.168.1.1
Host is up (0.013s latency).
MAC Address: -MAC ADDRESS- (Cameo Communications)
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds

Wenn Sie weitere Hilfe zu nmap benötigen, lesen Sie die offizielle Dokumentation zu nmap oder führen Sie Folgendes aus:

nmap --help 

2
nmap -sA 192.168.1.0/24 Die Option nmap -sAzeigt ähnliche beschreibende Ergebnisse mit besserer Lesbarkeit, einschließlich Gerätename, IP, Mac usw., wie die Option -sP. Ich persönlich bevorzuge aus Gründen der Lesbarkeit -sA gegenüber -sP.
Jayzcode

17

arp -nZeigt Ihnen nur Computer in Ihrem LAN an, mit denen Ihr Computer bereits gesprochen hat. Sie können diese Liste besser füllen, indem Sie die Broadcast- und All-Hosts-Multicast-Adressen anpingen:

Die (binäre) Broadcast-Adresse für "Alle". Beachten Sie, dass die meisten IP-Stacks dies in die Subnetz-Broadcast-Adressen für alle Subnetze übersetzen, an die Sie angeschlossen sind:

ping 255.255.255.255

Die Subnetz-Broadcast-Adresse für Ihr aktuelles Subnetz. Angenommen, Sie sind auf 192.168.1.0/24:

ping 192.168.1.255

Die Multicast-Adresse "Alle Hosts". Ich mag dieses Modell sehr, da es mit größerer Wahrscheinlichkeit Hosts findet, die für andere IP-Subnetze konfiguriert sind und an dasselbe Ethernet-LAN ​​wie Sie angeschlossen sind:

ping 224.0.0.1

Beachten Sie, dass diese Methode und die anderen Methoden, die ich bisher in anderen Antworten erwähnt habe, nur nach IP-erreichbaren Hosts im aktuellen Netzwerk suchen. Das ist wahrscheinlich alles, worüber Sie sich Gedanken machen müssen, aber es ist möglich, dass ein Angreifer ein Netzwerk ausspioniert oder schlechte Dinge tut, ohne über IP sichtbar zu sein.


8

ip neighund hosts. NO nmap erforderlich / NO sudo erforderlich .

Darauf aufbauend können Sie ein Python-Skript erstellen:

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

Herunterladen über

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py

(oder einfach arp... das habe ich vorher nicht gesehen)


oder einfachip neigh | awk '{ print $1 }' | xargs -n1 host
Blockloop

ip nkurz gesagt. Vielleicht besser ip n | grep REACHABLE.
Pablo Bianchi

4

Ich fand die vorhandenen Antworten nicht zufriedenstellend genug und dachte, ich würde es versuchen. Immerhin schlägt die FAQ vor, Kontext für Links bereitzustellen .

nmapist toll, wenn auch etwas verwirrend zu bedienen. Hier ist etwas, das ich ausführe, um lokale Netzwerkgeräte zu entdecken, die größtenteils kopierfähig sind. nmap -sP(oder nmap -sn) Scans per Ping . Es gibt andere Optionen für die 'Hosterkennung', wie z . B. mit nmap -sLoder nmap -Pn.

Weg Nr. 1.

ehtesh@x200arch:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1.
ehtesh@x200arch:~$ ip addr show wlp3s0 | grep "inet "
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
ehtesh@x200arch:~$ arp -a
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
ehtesh@x200arch:~$ nmap -sP 172.18.72.0/24
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-12-17 20:08 EST
Nmap scan report for 172.18.72.2
Host is up (0.017s latency).
<... 15 IP addresses snipped ...>
Nmap scan report for 172.18.72.253
Host is up (0.13s latency).
Nmap done: 256 IP addresses (17 hosts up) scanned in 5.74 seconds
ehtesh@x200arch:~$ arp -a | sort -n -k 1,1                            
? (172.18.72.126) at ec:35:86:4a:37:d2 [ether] on wlp3s0
? (172.18.72.148) at 10:9a:dd:b8:79:71 [ether] on wlp3s0
? (172.18.72.178) at 9c:20:7b:7b:08:ba [ether] on wlp3s0
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
? (172.18.72.253) at b8:78:2e:19:05:0b [ether] on wlp3s0
? (172.18.72.2) at 00:14:1c:da:e1:c2 [ether] on wlp3s0
? (172.18.72.40) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.43) at d8:c7:c8:ce:0f:60 [ether] on wlp3s0
? (172.18.72.44) at d8:c7:c8:ce:0f:68 [ether] on wlp3s0
? (172.18.72.45) at 6c:f3:7f:c6:71:16 [ether] on wlp3s0
? (172.18.72.46) at 6c:f3:7f:c4:4c:b3 [ether] on wlp3s0
? (172.18.72.47) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.48) at 24:de:c6:c6:b6:78 [ether] on wlp3s0
? (172.18.72.49) at 24:de:c6:c6:b6:e6 [ether] on wlp3s0
? (172.18.72.51) at 00:9c:02:d0:4c:4e [ether] on wlp3s0
? (172.18.72.54) at 00:23:76:99:99:bf [ether] on wlp3s0
? (172.18.72.62) at 8c:70:5a:0d:06:18 [ether] on wlp3s0
? (172.18.72.63) at 7c:e9:d3:51:86:55 [ether] on wlp3s0
? (172.18.72.64) at a0:88:b4:47:eb:c8 [ether] on wlp3s0

Weg Nr. 2. Ich weiß, dass dies funktioniert, aber ich kann nicht sagen, ob dies der richtige Weg ist.

ehtesh@x200arch:~$ #ifconfig | grep broadcast
ehtesh@x200arch:~$ ip address show wlp3s0 | grep brd
    link/ether 00:1e:65:bf:1b:42 brd ff:ff:ff:ff:ff:ff
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
ehtesh@x200arch:~$ ping -b -c 3 -i 20 172.18.75.255
<... similar output to above ...>

Ich würde mich freuen zu wissen, ob es effektivere Möglichkeiten gibt. Bis dahin bleibe ich dabei.


4

Sie können beispielsweise versuchen, ein bestimmtes Subnetz mit einem kleinen Linux-Shell-Skript zu pingen

$ for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done

In meinem Fall sagte UP für alle und sagte dann ip nFAILED für alle.
Pablo Bianchi

3

Hunt ist ein Befehlszeilentool, mit dem eine Liste von Computern erstellt werden kann, die zur Information über das Netzwerk übertragen werden. Es verwendet TCP-, UDP-, ICMP- und ARP-Daten, um eine Liste der aktiven MAC-Adressen in einem Netzwerk zu erstellen. Es ist ein passives Werkzeug, das durch Abhören des Kabels funktioniert.


4
Ich weiß, dass es Manpages gibt, aber es wäre nützlich, ein Beispiel in der Antwort zu sehen.
Ehtesh Choudhury

2

Für eine kompaktere Liste der angeschlossenen Geräte:

nmap -sL 192.168.0.* | grep \(1

Erläuterung.

nmap -sL 192.168.0.* listet alle IPs im Subnetz auf und markiert diejenigen, die den Namen haben:

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

Da alle interessanten Datensätze mit Klammern (und Ziffern beginnen 1, filtern wir danach mit | grep \(1(Backslash wird benötigt, um Klammern zu umgehen).

Quirk
Beachten Sie, dass , wenn zwei Geräte den gleichen Namen haben, nmapzeigen nur das eine, das war mit Router verbunden letzten


2

So scannen Sie den Status eines IP-Adressbereichs:

sudo nmap -sn 192.168.1.2-20

Woher:

         -sn: Ping Scan - disable port scan

Hinweis:

  • In früheren Versionen von Nmap -snwar bekannt als-sP

Ich habe das unter Mac OS X gemacht (das auf BSD basiert). Ich bin nicht sicher, ob die Linux-Version irgendwelche Unterschiede aufweist.


1
Genial, ich musste nur Folgendes eingeben: sudo nmap -sP 192.168.178.0-255. Dies hat einen Scan in dem Subnetz durchgeführt, in dem ich mich befinde.
Leo Gerber

1

1. Alternative Lösung, wenn Sendungen und nmapnicht verfügbar sind:

seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time=
arp -a

2a. oder fragen Sie einfach Ihren Domain Name Server :

seq 254| awk '{print "192.168.2."$1}' |nslookup | grep name

2b. ohne awk

echo -e 192.168.2.{1..10}"\n" |nslookup |grep name
  1. Pingt alle pingfähigen Netzwerkgeräte im Subnetz 192.168.2.0/24 parallel (um die Laufzeit zu verkürzen). Danach arpsollte jedes Gerät anzeigen, welches geantwortet hat.

  2. Prüft nicht auf aktive oder aktuelle Verbindungen, sondern listet alle Verbindungen auf, für die der lokale Domänendienst einen Eintrag führt, auch für wirklich alte.

Detailliertere Erklärung:

  • seq 254alle Zahlen von 1 bis 254 (für alle Zahlen von 100 bis 150: erzeugen seq 100 150)
  • xargsruft auf pingund ersetzt "IP" ( -iIP) durch die seqUence-Nummer von stdin, sodass 192.168.2.IP für die erste seqNummer in 192.168.2.1 geändert wird. Gibt an, wie -Pviele gleichzeitige pingProzesse xargsgestartet werden sollen. Ich wähle die gleiche Anzahl +1 als Adressen. = 254) Ich bin interessiert.
  • pingmit der von xargs ( 192.168.2.IP) geänderten IP-Adresse und nur einmaligem Ping ( -c1); -iIn diesem Fall müssen Sie denselben Bezeichner verwenden, der für xargs über dem Argument angegeben wurdeIP
  • grep time= um jede zeile mit überflüssigen informationen zu entfernen, sind wir nur an antworten interessiert, die eine umlaufzeit angeben (= antwort bekommen)
  • arp -a um gültige Namen (IP) -Paare anzuzeigen

Ich nenne dies meinen Pingall- Befehl und stelle ihn über einen Alias ​​in ~/.bashrc:

alias pingall='seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time='

1

Sie könnten fping verwenden sudo apt-get install fping (in Debian-ähnlichen Betriebssystemen).

fping ähnelt ping, bietet jedoch eine wesentlich bessere Leistung beim Pingen mehrerer Hosts. Das Flag -r 1 weist fping an, nur eine Runde durchzuführen. Mit dem 2> 1- Teil kann grep die Ausgabe filtern.

$ fping -g -r 1 192.168.1.0/24 2>1 | grep "alive"

Würde etwa anzeigen:

192.168.1.1 is alive
192.168.1.10 is alive
192.168.1.15 is alive
192.168.1.27 is alive

Es gibt auch ein interessantes Flag für nmap , mit dem Sie den MAC-Anbieter sehen können - sofern bekannt. Verwenden Sie mit sudo , um die MAC-Adressen anzuzeigen.

$ sudo nmap -sP 192.168.1.0/24

Sie würden zum Beispiel bekommen:

Starting Nmap 7.40 ( https://nmap.org ) at 2019-05-23 18:49 CEST
Nmap scan report for 192.168.1.14
Host is up (-0.036s latency).
MAC Address: 20:F4:1B:E5:8F:7B (Shenzhen Bilian electronic)
Nmap scan report for 192.168.1.15
Host is up (-0.084s latency).
MAC Address: A4:31:35:E8:58:9E (Apple)
Nmap scan report for 192.168.1.27
Host is up (-0.15s latency).
MAC Address: 34:8A:7B:38:E3:14 (Samsung Electronics)
Nmap scan report for 192.168.1.29
Host is up (0.010s latency).
MAC Address: 80:2B:F9:75:F8:FF (Unknown)
Nmap scan report for 192.168.1.10
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 25.52 seconds
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.