So erkennen Sie die IP eines bestimmten Geräts im selben Netzwerk

So erkennen Sie die IP eines bestimmten Geräts im selben Netzwerk

Ich habe eine sehr typische Situation, in der ich ein (Android-)Telefon per SSH mit einem Linux-Notebook im selben (WLAN-)Netzwerk verbinden möchte. Die IPs werden per DHCP zugewiesen, daher kenne ich im Voraus nur die des Clients. Wenn ich die IP des Clients kenne, könnte ich im Prinzip einen SSH-Befehl über alle möglichen IPs im selben Netz laufen lassen, um zu sehen, ob dort ein Server lauscht. Dies scheint jedoch höchst ineffizient zu sein. Wie kann ich also die IP meines Hosts herausfinden (wenn ich seine MAC-Adresse kenne), damit ich per SSH eine Verbindung zu ihm herstellen kann? Ich kenne andere Software, die so etwas erreicht, also muss es möglich sein. Verwandtes Thema: Kann ich dieser IP auf dem Client dynamisch einen Hostnamen zuweisen (vorausgesetzt, es handelt sich um Linux), sodass ich einen statischen Eintrag in der SSH-Konfigurationsdatei verwenden kann?

Antwort1

Dies können Sie in den folgenden zwei Schritten tun:

Schritt 1:

Scannen Sie Ihr Subnetz, um Ihren ARP-Cache zu füllen. Es gibt verschiedene Methoden, aber ich empfehle Folgendes fping. Installieren Sie es unter Ubuntu, indem Sie den folgenden Befehl in einem Terminal ausführen:

apt-get install fping

...dann scannen Sie Ihr Netzwerk (zum Beispiel Subnetz 192.168.10.0/24):

fping -g 192.168.10.0/24

Jetzt wird der ARP-Cache mit den MAC-Adressen der Geräte in Ihrem Subnetz gefüllt.

Schritt 2

Wenden Sie einen geeigneten Filter auf Ihren ARP-Cache an, um nur das Zielgerät anzuzeigen. Verwenden Sie einfach den folgenden Befehl (wobei aa:bb:cc:dd:ee:ffdie MAC des Geräts steht):

arp -n | grep -i aa:bb:cc:dd:ee:ff | cut -c-15

Die Ausgabe ist die IP-Adresse des Zielgeräts.

BEARBEITEN1:

Die Beispiel-MAC-Adresse wurde in Kleinbuchstaben geändert, da Linux sie auf diese Weise anzeigt (im Gegensatz zu Microsoft Windows, das Großbuchstaben verwendet).

EDIT2:

Das folgende Bash-Skript fügt der Hosts-Datei ( /etc/hosts) einen Eintrag mit dem Namen hinzuHandySo können Sie mit Ihrem Namen auf Ihr Gerät zugreifenHandy. Um die zugehörige IP-Adresse zu aktualisieren, führen Sie es einfach erneut aus. Ändern Sie nameund macauf subnetdie gewünschten Werte.

#!/bin/sh
name="cellphone"
mac=aa:bb:cc:dd:ee:ff
subnet=192.168.10.0/24
fping -g ${subnet}
ip="$(arp -n | grep -i ${mac} | cut -c-15)"
sed -i".bak" '/'${name}'/d' /etc/hosts
if [ -z "$ip" ]; then
    echo "Device not found!"
else
    echo "${ip}\t${name}" >> /etc/hosts
fi

Antwort2

Zeroconfkönnte hier eine Lösung sein. Es ist ein Protokoll, um Dienste im Netzwerk zu erkennen und eine Verbindung zwischen zwei Hosts herzustellen.

avahi-daemonWenn Sie Avahi mDNS (Pakete und ) einrichten, libnss-mdnsgeben die Hosts ihre Hostnamen bekannt und Sie können sie mit auflösen <hostname>.local.

Antwort3

Ihr Problem scheint darin zu bestehen, dass Sie etwas an das Netzwerk anschließen und wissen möchten, welche IP es erhält.

Vor diesem Hintergrund scheint die einfachste Lösung darin zu bestehen, Ihren DHCP-Server so zu konfigurieren, dass er eine statische IP für die entsprechende MAC-Adresse ausgibt.

Haben Sie Kontrolle über den DHCP-Server? Wenn ja, können Sie wahrscheinlich eines der folgenden Dinge tun:

  • Überprüfen Sie die Protokolle, um zu sehen, welche IP der angegebenen MAC zugewiesen wurde.
  • Richten Sie eine statische Karte ein.

verwandte Informationen