web-dev-qa-db-ja.com

ネットワーク内のマシンのMACアドレスを見つける方法は?

ネットワーク内のマシンのMACアドレスを検出するにはどうすればよいですか?

BIOSのみがインストールされている(オペレーティングシステムがインストールされていない)状態で利用できるマシンを見つける必要があります。

稼働しているマシンのMACアドレスを見つける必要があります。

12
sarav

管理対象スイッチで利用可能な情報にアクセスする必要があります。管理されていないネットワークを使用している場合、その方法はわかりません。

これは、ターゲットコンピュータが Wake-on-LAN (WoL)に対応していることを前提としています。この場合、サーバーへのリンクが確立され(点滅するリンクLEDを探します)、ネットワークカードはWoLブロードキャストをリッスンしています。私の知る限り、カードはこの状態では何にも答えません。 WoLがない場合、カードはおそらくオフ(リンクLEDなし)であり、まったく機能しません。

8
Posipiet

マシンの電源が入っていない場合、これは不可能です。

それらがパワーアップされている場合、OSがインストールされていないと機能しないARPクエリなどのようなものに少なくとも応答するには最小限のネットワークスタックが必要なので、これも不可能だと思います。

うまくいくかもしれませんが(=わからないので今はテストできません)、NICとスイッチはNICが接続されているか、電源が投入され、スイッチがこの方法でMACアドレスを学習しますこれが当てはまる場合、管理可能なスイッチが必要であり、接続されたMACアドレスを照会します。

7
Sven

Nmap を使用すると、次の構文を使用して非常に迅速なARPスキャンを実行できます。

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

これは、ARP ping(ARP要求のみ、ICMP、UDPまたはTCP、ポートスキャンなし)を使用して、指定されたIPアドレス範囲をスキャンし、IPアドレス/ MACアドレス/ホスト名の応答をXMLファイル(nmap.xml)に記録します。

XMLファイルを変更して [〜#〜] csv [〜#〜] ファイルを出力する PowerShell スクリプトを作成しました。これにより、ダウンしたホストも除外されます。これは、XMLファイルよりもExcelでのほうが使いやすいと思います。誰かが興味を持っている場合のスクリプトは次のとおりです。

# 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
6
John Homer
  1. スイッチが十分に進んでいる場合は、スイッチ/ルーターの情報を表示します。
    (Ciscoスイッチでは、コマンドはshow mac-address-table)。
  2. マシンでPXE対応のBIOS /ネットワーキングカードを使用している場合は、DHCPリースを取得しようとするため、DHCPログから情報を読み取ります。 DHCPがない場合は、すべてのブロードキャストトラフィックをWiresharkでダンプし、DHCPトラフィックをフィルタリングします。 OSを搭載していないすべての新しく搭載されたマシンがトラフィックに表示されます。
3
Kristaps

Unixマシンから、同じLAN上のOSのないコンピューターをリッスンし、可能であれば(スイッチではなく)ハブを介して、以下を試すことができます。

arp
cat /proc/net/arp

また、(OS版のマシンから)wiresharkを試すこともできます。繰り返しになりますが、ブロードキャストを含め、BIOSマシンからの通信をキャッチするためにハブを使用することをお勧めします。

3
Ring Ø

ここに私のために働いた解決策があります:

  1. BIOSでネットワークブートを有効にします。 (たとえば、ネットワークアダプターを「PXEで有効」に設定します)
  2. マシンを起動します。
  3. マシンはネットワークからの起動を試み、プロセスのMACアドレスを表示します。
1
Igor Ostrovsky

ここでの基本的な問題は、これがレイヤ2情報であるため、スイッチだけがそれを見ることができるということです。一部のスイッチは、この情報を確認できるインターフェイスを提供しますが、それができない場合は、スイッチ間にハブを設置するなどして、物理層を傍受するしかありません。

管理されたスイッチを使用している場合、この情報はスイッチから入手できる可能性があります。一部のエンドユーザー統合ルーター/スイッチ(ADSLモデムもパッケージすることが多い種類など)には、MACアドレスを含むDHCPクライアントリストがある場合があります。

管理されていないスイッチを使用していて、この情報を本当に知りたい場合は、 ハブを購入 して、一時的にスイッチを交換することをお勧めします。次に、wiresharkを実行しているコンピューターをハブに接続し、ARPパケットをキャプチャしてMACアドレスを記録します。または、Echolotを使用してこれを行うこともできます。ARPパケットを選択的に追跡し、MACアドレスデータベースを構築します。

1
imoatama

2秒以内に実行できる非常に簡単な小さなトリックは、どのオペレーティングシステムも、やり取りするデバイスのMACアドレスとIPアドレスを含むテーブルを書き込むという事実を処理することです。これはARP TABLEと呼ばれます。だから問題はどのようにすべてのデバイスとの相互作用を強制するのですか?単にブロードキャストIPアドレスにpingするだけです。一部のデバイスまたはファイアウォールがICMP ping要求をブロックする可能性があるため、これは完璧ではありませんが、多くのシナリオで機能します。

コマンドは次のとおりです(ipv4 192.168.0.255ブロードキャストアドレス内):

ping 192.168.0.255

Linuxでの使用:

ping -b 192.168.0.255

デバイスが応答するまで数秒待ってから、次の操作を行います。

arp -a

IPV6 pingについては、Giedrius Rekasiusコメントを参照してください

完璧ではありませんが、ツール、研究、時間の無駄はなく、すべての主要なオペレーティングシステムで機能し、迅速です。

1
Giovanni Silva

Nmap でネットワークをスキャンしてから、ARPテーブル(arp -a Linuxディストリビューションでは)。

1
MihaiM

他の人が言ったように、管理されていないスイッチ、またはBootP/PXEがある場合、OSのないマシンのMACを取得する簡単な方法はありません。

実行中のマシンがWindowsを実行している場合、スクリプトを作成するのは簡単です(通常はWMIを使用)

ここにはたくさんの例があります: http://gallery.technet.Microsoft.com/ScriptCenter/en-us/site/search?f [0] .Type = SearchText&f [0] .Value = MAC +アドレス&x = 0&y =

0
gWaldo

私はスイッチのMACアドレステーブルを提案するつもりでしたが、誰かがすでに上記のものをカバーしています。

OSを実行していて、IPアドレスを持っているコンピューターがある場合、同じLANに接続できます。NMAP(またはGUIバージョン)を使用できます。 Zenmapのように) http://nmap.org/ ...からこれを同じLANで実行すると、応答するすべてのマシンのMACアドレス情報を取得できます。

同じ結果を達成するためのより良い方法がある場合に備えて、MACアドレスを取得する必要がある理由についてさらに理解することは有用です。

0
Mitch Miller

たとえば、継続的に実行されているarpalertを使用してARP情報を収集できます。これにより、起動後に一連のARPアドレスが表示されます。

電源がオフのマシンはARP応答を送信しません。

プロセスを高速化するには、arpalertを実行しているサーバーからネットワーク上でnmap pingスキャン(nmap -sP)を使用して、考えられるすべての(ライブおよび実行中の)ホストをトリガーしてarpクエリに応答します。後でnmap pingスキャンを定期的に実行すると、間もなく稼働するホストを検出する可能性が高くなります。

arpalertからの抜粋:

MACがリストにない場合、arpalertはパラメーターとしてMACアドレスとIPアドレスを使用して事前定義されたユーザースクリプトを起動します。

nmapからの抜粋:

Nmap(「ネットワークマッパー」)は、ネットワーク探索またはセキュリティ監査のための無料のオープンソース(ライセンス)ユーティリティです

ここを見てください:

0
asdmin

私は使用します:nmap -sP 192.168.1.1/24

(192.168.1.1/24を自分のIP範囲に置き換えます)

稼働しているマシンのみが表示され、次のようなものが表示されます。

[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

OSがインストールされていない場合は、LinuxライブCDを使用できます。nmapはおそらくほとんどのOSで利用できます。

0
neofutur