web-dev-qa-db-de.com

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 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?

59
CaptSaltyJack

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.

58
Tyler Faile

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 finden Sie unter CIDR 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

Das war's, wenn Sie mehr Hilfe mit nmap benötigen, lesen Sie die offizielle Dokumentation zu nmap oder führen Sie Folgendes aus:

nmap --help 
35
radtek

arp -n zeigt 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.

18
Spiff

ip neigh und 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)

8
Martin Thoma

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
4
dmn8

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

nmap ist toll, wenn auch etwas verwirrend zu bedienen. Hier ist etwas, das ich ausführe, um lokale Netzwerkgeräte zu entdecken, die größtenteils kopier- und einfügefähig sind. nmap -sP (oder nmap -sn) scannt mit ping . Es gibt andere Optionen für die 'Hosterkennung', z. B. mit nmap -sL oder nmap -Pn.

Weg Nr. 1.

[email protected]:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1.
[email protected]:~$ ip addr show wlp3s0 | grep "inet "
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
[email protected]:~$ arp -a
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
[email protected]:~$ 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
[email protected]:~$ 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.

[email protected]:~$ #ifconfig | grep broadcast
[email protected]:~$ 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
[email protected]:~$ 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

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 wurde -sn als -sP bezeichnet.

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

2

Hunt ist ein Befehlszeilenprogramm, mit dem eine Liste von Computern erstellt werden kann, die Informationen über das Netzwerk senden. 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.

2
Sean C.

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 Ziffer 1 beginnen, filtern wir das mit | grep \(1 (Backslash wird benötigt, um Klammern zu umgehen)

Skurril
Beachten Sie, dass nmap bei zwei Geräten mit demselben Namen nur das Gerät anzeigt, das mit dem Router verbunden war last

1

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. pingt alle pingable Netzwerkgeräte im 192.168.2.0/24 Subnetz parallel an (um die Laufzeit zu verkürzen). Danach sollte arp jedes Gerät anzeigen, das 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 254 zum Erstellen aller Nummern von 1 bis 254 (für alle Nummern von 100 bis 150: seq 100 150)
  • xargs ruft ping auf und ersetzt "IP" (-iIP) durch die sequence-Nummer von stdin, sodass 192.168.2.IP für die erste seq-Nummer in 192.168.2.1 geändert wird. -P gibt an, wie viele ping-Prozesse xargs gleichzeitig starten sollen Gleiche Menge +1 wie Adressen (= 254) im Interesse.
  • ping mit der von xargs geänderten IP-Adresse (192.168.2.IP) und nur einmaligem Ping (-c1); Sie müssen denselben Bezeichner verwenden, der für xargs über dem Argument -i angegeben wurde. In diesem Fall IP
  • 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 dieses mein pingall Kommando und stelle es über einen Alias ​​in ~/.bashrc zur Verfügung:

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