Wie erkenne ich die MAC-Adresse von Computern in einem Netzwerk?

12

Wie erkenne ich die MAC-Adresse von Computern in einem Netzwerk?

Ich muss die Maschinen entdecken, die gerade mit nur installiertem BIOS verfügbar sind (kein Betriebssystem).

Und ich muss die MAC-Adresse der Maschinen finden, die in Betrieb sind.

Peter Mortensen
quelle
Siehe auch serverfault.com/questions/260333/…
Stefan Lasiewski
Standortübergreifendes Duplikat (bei Stapelüberlauf): Ermitteln der MAC-Adresse von Computern in und über ein Netzwerk .
Peter Mortensen

Antworten:

8

Sie müssen auf die Informationen zugreifen, die auf Ihren verwalteten Switches verfügbar sind. Wenn Sie ein nicht verwaltetes Netzwerk haben, sehe ich keine Möglichkeit, dies zu tun.

Dies setzt voraus, dass die Zielcomputer Wake-on-LAN (WoL) unterstützen. In diesem Fall wird eine Verbindung zum Server hergestellt (suchen Sie nach der blinkenden Verbindungs-LED), und die Netzwerkkarte hört WoL-Sendungen ab. AFAIK, die Karte antwortet auf nichts in diesem Zustand. Wenn kein WoL vorhanden ist, ist die Karte höchstwahrscheinlich ausgeschaltet (keine Verbindungs-LED) und funktioniert überhaupt nicht.

Posipiet
quelle
7

Wenn die Maschinen nicht eingeschaltet sind, ist dies nicht möglich.

Wenn sie eingeschaltet sind, ist dies vermutlich ebenfalls unmöglich, da Sie einen minimalen Netzwerkstapel benötigen, um zumindest Dinge wie ARP-Abfragen usw. zu beantworten, die ohne ein installiertes Betriebssystem nicht funktionieren.

Was möglicherweise funktioniert (ich weiß es nicht und kann es derzeit nicht testen) ist, dass die Netzwerkkarte und der Switch kommunizieren, wenn die Netzwerkkarte angeschlossen oder eingeschaltet ist und der Switch die MAC-Adresse auf diese Weise lernt. In diesem Fall benötigen Sie einen verwaltbaren Switch, der nach verbundenen Mac-Adressen fragt.

Sven
quelle
2
Sie erhalten es möglicherweise ohne einen Netzwerkstapel, wenn Sie nach Bootp- oder PXE-Boot gefragt werden. Kommt aber darauf an, ob das klappt, denke ich.
Bart Silverstrim
6

Mit Nmap können Sie einen sehr schnellen ARP-Scan mit der folgenden Syntax durchführen.

nmap -sn -PR -oX nmap.xml 192.168.1.0/24

Hierbei wird ARP-Ping (nur ARP-Anforderungen, kein ICMP-, UDP- oder TCP-Scan, kein Port-Scan) verwendet, um den angegebenen IP-Adressbereich zu scannen und die Antworten auf IP-Adresse / MAC-Adresse / Hostname in einer XML-Datei (nmap.xml) aufzuzeichnen.

Ich habe ein PowerShell- Skript geschrieben, das die XML-Datei mischt und eine CSV- Datei ausspuckt . Dadurch werden auch die Down-Hosts herausgefiltert. Ich finde das einfacher in Excel zu verwenden als die XML-Datei. Ist hier das Index, wenn jedermann interessiert ist.

# Define nmap input file
$NmapXMLFile = ".\nmap.xml"

# Initialize object array
$HostItems = @()

# Initialize index
$x = 0

# Load XML
[xml]$NmapXML = Get-Content $NmapXMLFile

# Loop through XML
ForEach ($HostNode in $NmapXML.nmaprun.host) {

  # Check host status
  If ($HostNode.status.state -eq "up") {

    # Create host object
    $HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor

    # Store ID and increment index
    $HostObj.ID = $x += 1

    # Store hostname
    $HostObj.Hostname = $HostNode.hostnames.hostname.name

    # Loop through addresses
    foreach ($HostAddress in $HostNode.address) {

      # Check IP address
      If ($HostAddress.addrtype -eq "ipv4") {

        # Store IP address
        $HostObj.'IP Address' = $HostAddress.addr
      }

      # Check MAC address
      If ($HostAddress.addrtype -eq "mac") {

        # Store MAC address
        $HostObj.'MAC Address' = $HostAddress.addr

        # Store vendor
        $HostObj.Vendor = $HostAddress.vendor
      }
    }

    # Append host object to array
    $HostItems += $HostObj
  }
}

# Print host items
$HostItems

# Export host items to CSV
$HostItems | Export-CSV -NoType .\nmap.csv
John Homer
quelle
Ich habe den obigen Befehl ausprobiert und den Fehler erhalten Scantype n not supported. Anscheinend wird das Flag -snvon Nmap 4.x nicht unterstützt.
Stefan Lasiewski
Aus der nmap 5.30BETA1 ChangeLog:
John Homer
2
Wechselt zu -Pn und -sn und als bevorzugte Syntax zum Überspringen des Ping-Scans bzw. des Überspring-Port-Scans. Zuvor wurden die Optionen -PN und -sP empfohlen. Dies führt zu einer regelmäßigeren Syntax für einige Optionen, mit denen die Phasen eines Scans deaktiviert werden: -n kein umgekehrter DNS -Pn keine Hosterkennung -sn kein Port-Scan Wir waren auch der Ansicht, dass die alte Option -sP ("Ping-Scan") etwas irreführend war weil aktuelle Versionen von Nmap viel weiter gehen können (einschließlich -sC und --traceroute), auch wenn Port-Scans deaktiviert sind. Wir werden die Unterstützung für die vorherigen Optionsnamen auf absehbare Zeit beibehalten.
John Homer
Auf dieser Grundlage sollten Sie in der Lage sein, die Syntax '-sP' anstelle des neueren Parameters '-sn' zu verwenden. Leider habe ich keine Version von nmap4 zum Testen.
John Homer
3
  1. Zeigen Sie Informationen zu Ihrem Switch / Router an, wenn der Switch ausreichend fortgeschritten ist.
    (Bei Cisco-Switches lautet der Befehl show mac-address-table).
  2. Wenn auf Computern PXE-fähige BIOS- / Netzwerkkarten installiert sind, lesen Sie die Informationen aus den DHCP-Protokollen, da diese versuchen, eine DHCP-Lease zu erhalten. Wenn Sie nicht über DHCP verfügen, speichern Sie den gesamten Broadcast-Verkehr mit Wireshark und filtern Sie den DHCP-Verkehr. Alle neu angetriebenen Maschinen ohne Betriebssystem werden im Datenverkehr angezeigt.
Kristaps
quelle
3

Wenn Sie von einem Unix-Computer aus die Computer ohne Betriebssystem im selben LAN und wenn möglich über einen Hub (keinen Switch) hören, können Sie dies versuchen

arp
cat /proc/net/arp

Möglicherweise möchten Sie es auch versuchen wireshark(von einem Computer mit Betriebssystem). Auch hier ist es besser, einen Hub zu verwenden, um jegliche Kommunikation von den BIOS-Computern, einschließlich Broadcasts, abzufangen.

Ring-Ø
quelle
1

Das Grundproblem hierbei ist, dass es sich um Layer 2-Informationen handelt, die nur von Switches angezeigt werden. Einige Switches bieten eine Schnittstelle, über die Sie diese Informationen einsehen können. Wenn dies jedoch nicht der Fall ist, müssen Sie die physische Ebene abfangen, indem Sie z. B. einen Hub zwischen den Switches installieren.

Wenn Sie verwaltete Switches verwenden, sind diese Informationen wahrscheinlich über den Switch verfügbar. Einige vom Endbenutzer integrierte Router / Switches (wie die, die häufig auch ADSL-Modems verpacken) haben manchmal eine DHCP-Client-Liste, die MAC-Adressen enthält.

Wenn Sie nicht verwaltete Switches verwenden und diese Informationen wirklich benötigen, empfehlen wir Ihnen , einen Hub zu kaufen und den Switch vorübergehend durch einen anderen zu ersetzen. Sie können dann einen Computer mit Wireshark an den Hub anschließen und ARP-Pakete erfassen, um MAC-Adressen aufzuzeichnen. Alternativ können Sie Echolot verwenden, um dies für Sie zu tun - es verfolgt selektiv ARP-Pakete und erstellt eine MAC-Adressdatenbank.

Imoatama
quelle
Bearbeiten - lesen Sie den Teil noch einmal, in dem es sich nur um BIOS handelt. Dies stellt weitere Herausforderungen dar, die über das Problem des Abfangens der Schicht-2-Daten hinausgehen - die Clients senden möglicherweise nicht einmal Daten über das Netzwerk. Wenn die Clients ein BIOS haben, das DHCP ausführt oder ARP-Pakete sendet, sollte es möglich sein, sie vom Switch aus zu sehen. Ich bin mir nicht sicher, welche BIOS-Editionen dies unterstützen.
Imoatama
1

Hier ist eine Lösung, die für mich funktioniert hat:

  1. Aktivieren Sie den Netzwerkstart im BIOS. (Stellen Sie Ihren Netzwerkadapter beispielsweise auf "Aktiviert mit PXE" ein.)
  2. Starten Sie die Maschine.
  3. Das Gerät versucht, vom Netzwerk aus zu starten und zeigt dabei die MAC-Adresse an.
Igor Ostrovsky
quelle
1

Ein sehr einfacher kleiner Trick, den Sie innerhalb von 2 Sekunden machen können, ist die Tatsache, dass jedes Betriebssystem eine Tabelle mit dem Mac und der IP-Adresse jedes Geräts schreibt, mit dem es interagiert. Dies ist als ARP TABLE bekannt. Die Frage ist also, wie eine Interaktion mit allen Geräten erzwungen werden kann. Sie können einfach die Broadcast-IP-Adresse anpingen. Dies ist nicht perfekt, da einige Geräte oder eine Firewall die ICMP-Ping-Anforderung blockieren können, dies funktioniert jedoch in vielen Szenarien.

Die Befehle lauten (in einer IPv4 192.168.0.255-Broadcast-Adresse):

ping 192.168.0.255

In Linux verwenden:

ping -b 192.168.0.255

Warten Sie einige Sekunden, bis die Geräte antworten, und führen Sie dann Folgendes aus:

arp -a

Für IPV6-Ping siehe Giedrius Rekasius Kommentar

Nicht perfekt, aber keine Tools, keine Nachforschungen, keine Zeitverschwendung. Funktioniert in allen wichtigen Betriebssystemen und ist schnell.

Giovanni Silva
quelle
Ich finde es einfacher und zuverlässiger, solche Pings über IPv6 als über IPv4 durchzuführen. Ein Beispielbefehl könnte so aussehen ping6 -c2 -n ff02::1%wlan0. Sie müssen lediglich den Namen der zu verwendenden Netzwerkschnittstelle aktualisieren. Die zu diesem Zweck zu verwendende IP-Adresse ist immer ff02::1unabhängig davon, in welchem ​​Netzwerk Sie sich befinden.
Kasperd
1

Scannen Sie das Netzwerk mit Nmap und überprüfen Sie die ARP-Tabelle ( arp -ain Linux-Distributionen).

MihaiM
quelle
0

Ich wollte vorschlagen, die MAC-Adresstabelle zu wechseln, aber jemand hat diese oben bereits behandelt.

Wenn einer der Computer sind ein Betriebssystem ausgeführt wird und eine IP - Adressen haben, können Sie in das gleiche LAN verbinden, können Sie NMAP (oder eine GUI - Version wie Zenmap) von http://nmap.org/ ... wenn Sie laufen Wenn Sie sich im selben LAN befinden, sollten Sie MAC-Adressinformationen für alle Maschinen erhalten, die antworten.

Es wäre hilfreich, mehr darüber zu erfahren, warum Sie die MAC-Adressen abrufen müssen, falls es einen besseren Weg gibt, das gleiche Ergebnis zu erzielen.

Mitch Miller
quelle
0

Sie können ARP-Informationen beispielsweise mit einem kontinuierlich laufenden Arpalert sammeln. Damit haben Sie die ARP-Adressen, die nach dem Start angezeigt werden.

Bei ausgeschalteten Maschinen werden keine ARP-Antworten gesendet.

Um den Vorgang zu beschleunigen, können Sie auf dem Server, auf dem arpalert ausgeführt wird, einen nmap-Ping-Scan (nmap -sP) in Ihrem Netzwerk ausführen, um alle möglichen (aktiven und ausgeführten) Hosts zur Beantwortung Ihrer arp-Abfrage zu veranlassen. Wenn Sie später regelmäßig nmap ping scan ausführen, haben Sie bessere Chancen, einen in Kürze lebenden Host zu fangen.

Ausschnitt aus arpalert:

Wenn der MAC nicht in der Liste enthalten ist, startet arpalert ein vordefiniertes Benutzerskript mit der MAC-Adresse und der IP-Adresse als Parametern.

Ausschnitt aus nmap:

Nmap ("Network Mapper") ist ein kostenloses Open Source-Dienstprogramm (Lizenz) für die Netzwerkerkundung oder Sicherheitsüberwachung

Schau dich hier um:

asdmin
quelle
0

Ich benutze: nmap -sP 192.168.1.1/24

(Ersetzen Sie 192.168.1.1/24 durch Ihren IP-Bereich.)

Es werden Ihnen nur die Maschinen angezeigt, die in Betrieb sind, und Sie erhalten so etwas wie:

[root@x ~]# nmap -sP 192.168.1.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST
Nmap scan report for 192.168.1.1
Host is up (0.0019s latency).
MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown)
Nmap scan report for 192.168.1.33
Host is up (0.035s latency).
MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate)
Nmap scan report for 192.168.1.254
Host is up (0.0020s latency).
MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds

Wenn Sie kein Betriebssystem installiert haben, können Sie eine Linux Live-CD verwenden, nmap ist wahrscheinlich in den meisten von ihnen verfügbar

neofutur
quelle