Liste der Computer in einem LAN unter Linux anzeigen

Ich bin ein Webentwickler, der versucht, die Sicherheit besser in den Griff zu bekommen. Ich versuche herauszufinden, wie (auf Linux/Debian-basierten Distributionen) alle Computer in demselben LAN aufgelistet werden können, in dem sich mein Netbook befindet. Ich habe "arp-n" ausprobiert, aber ich habe nicht das Gefühl, dass es eine vollständige Liste ist, da sich mein iPhone auf demselben WLAN-Router wie mein Netbook befindet und das nicht angezeigt wurde. Gibt es eine bessere Möglichkeit, eine vollständige Liste der Maschinen abzurufen, die alle dasselbe Gateway gemeinsam nutzen?

Author: CaptSaltyJack, 2011-07-15

11 answers

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

Hier ist das Referenzhandbuch.

 66
Author: Tyler Faile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-06 05:06:00

Dies ist, was ich verwende, nmap und eine Adresse, die die CIDR-Blocknotation des Netzwerks verwendet, das Sie scannen möchten. Zuerst müssen Sie nmap installieren, da es möglicherweise nicht mit Ihrer Distribution vorinstalliert ist. Auf Ubuntu:

sudo apt-get install nmap

Als nächstes ermitteln Sie Ihre Netzwerkadresse mithilfe von 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 das inet addr und die Maske, um die Netzwerkadresse in der CIDR-Notation herauszufinden, mehr zu CIDR hier. Anschrift ist:

192.168.1.0/24

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

sudo nmap -sP 192.168.1.0/24

Die Nmap-Ausgabe 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

Das ist es, wenn Sie mehr Hilfe bei nmap benötigen, siehe die offizielle Dokumentation von nmap oder führen Sie Folgendes aus:

nmap --help 
 51
Author: radtek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-12-09 15:56:20

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

Die Broadcast-Adresse" alle " (binär). Beachten Sie, dass die meisten IP-Stacks dies in die Subnetz-Broadcast-Adressen für alle Subnetze übersetzen, an die Sie angehängt 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 sehr, weil es wahrscheinlicher ist, Hosts zu finden, die für andere IP-Subnetze konfiguriert sind, die zufällig an dasselbe Ethernet-LAN angeschlossen sind wie Sie:

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, was Sie brauchen, um sich zu kümmern, aber es ist möglich, dass ein Angreifer an einem Netzwerk schnüffelt oder schlechte Dinge tut ohne über IP sichtbar zu sein.

 19
Author: Spiff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-15 19:12:18

ip neigh und hosts. KEINE nmap erforderlich / KEIN sudo erforderlich.

Aufbauend darauf 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 ... Ich habe das vorher nicht gesehen)

 10
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-05 06:19:12

Nmap scannen

Um den Status einer Reihe von IP-Adressen zu scannen, ist dies einfach und schön:

sudo nmap -sn 192.168.1.2-20

Wobei:

         -sn: Ping Scan - disable port scan

Hinweis:

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

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

 7
Author: Sridhar Sarnobat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-07 20:00:13

Finde ich nicht die vorhandenen Antworten befriedigend genug, so dass ich dachte, ich würde einen Versuch geben. Schließlich schlägt die FAQ vor, Kontext für Links bereitzustellen.

nmap ist toll, wenn ein wenig verwirrend zu bedienen. Hier ist etwas, das ich ausführe, um lokale Netzwerkgeräte zu entdecken, die größtenteils copy-Paste-fähig sind. nmap -sP (oder nmap -sn) scannt durch Ping. Es gibt andere Optionen für 'host Discovery', wie mit nmap -sL oder nmap -Pn.

Weg #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 # 2. Ich weiß, das funktioniert, aber ich kann nicht sagen Sie, 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 Wege gibt. Bis dahin bleibe ich dabei.

 4
Author: Ehtesh Choudhury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

Sie könnten versuchen, ein bestimmtes Subnetz mit einem kleinen Linux-Shell-Skript zu pingen, zum Beispiel

$ 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
 4
Author: dmn8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-05-10 08:21:24

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

Fping ähnelt Ping, ist jedoch beim Pingen mehrerer Hosts viel besser. Das Flag - r 1 weist fping an, nur eine Runde auszuführen. Die 2>1 teil ermöglicht grep, die Ausgabe zu filtern.

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

Würde so etwas anzeigen wie:

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-falls bekannt. Verwenden Sie mit sudo, um siehe die MAC-Adressen.

$ sudo nmap -sP 192.168.1.0/24

Sie würden zum Beispiel erhalten:

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
 4
Author: user9869932,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-05-23 17:18:32

Hunt ist ein Befehlszeilentool, das in der Lage ist, eine Liste von Maschinen zu erstellen, während sie Informationen über das Netzwerk senden. Es verwendet TCP -, UDP -, ICMP-und ARP-Daten, um eine Liste aktiver MAC-Adressen in einem Netzwerk zu erstellen. Es ist ein passives Werkzeug, das durch das Hören auf dem Draht funktioniert.

 3
Author: Sean C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-15 18:16:48

1. Alternative Lösung, wenn Broadcasts und nmap nicht 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. Pings alle "pingbar" geführt Netzwerk-Geräte in das 192.168.2.0/24 Subnetz, in parallel (zur Verringerung der Laufzeit). Danach sollte arp jedes Gerät anzeigen, das geantwortet hat.

  2. Sucht nicht nach aktiven oder aktuellen Verbindungen, listet jedoch alle Verbindungen auf,die der lokale Domänendienst bereithält, auch wirklich alte.

Ausführlichere Erklärung:

  • seq 254 So erstellen Sie alle Zahlen von 1 bis 254 (für alle Zahlen von 100 bis 150: seq 100 150)
  • xargs ruft ping auf und ersetzt "IP" (-iIP) durch die uence-Nummer seqvon stdin, also 192.168.2.IP-Änderungen an 192.168.2.1 für die erste seq - Nummer gibt -P die Anzahl der gleichzeitigen ping - Prozesse an, die xargs starten sollen. der gleiche Betrag +1 als Adressen (=254) im interessiert.
  • ping wenn die IP-Adresse von xargs (192.168.2.IP) geändert wurde und nur einmal ping (-c1); Sie müssen in diesem Fall dieselbe Kennung wie für xargs über dem Argument -i IP
  • grep time= um jede Zeile mit überflüssigen Informationen zu entfernen, sind wir nur an Antworten interessiert, die eine Hin-und Rückfahrtzeit bieten (=Antwort erhalten)
  • arp -a um gültige IP-Paare(Name) anzuzeigen

Ich nenne das meine pingall Befehl und machte es über einen Alias in ~/.bashrc verfügbar:

alias pingall='seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time='
 3
Author: Don Question,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-11-08 20:36:00

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

nmap -sL 192.168.0.* | grep \(1

Erklärung.

nmap -sL 192.168.0.* listet alle IPs im Subnetz auf und markiert diejenigen, die 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 1 beginnen, filtern wir dies mit | grep \(1 (Backslash wird benötigt, um Klammern zu entkommen)

Quirk
Beachten Sie, dass, wenn zwei Geräte den gleichen Namen haben, nmap zeigt nur die eine, das war verbunden Router letzte

 2
Author: Alexander Malakhov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-10-22 09:10:00