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


12

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

BIOSのみがインストールされている(オペレーティングシステムがインストールされていない)場合にのみ使用可能なマシンを検出する必要があります。

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



回答:


8

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

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


7

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

それらに電源が入っている場合、OSがインストールされていないと動作しないARPクエリなどのようなものに少なくとも答えるために最小限のネットワークスタックが必要なので、これも不可能だと思います。

動作する可能性があるのは(現時点ではわかりませんが、テストできません)、NICとスイッチは、NICのプラグインまたは電源投入時に通信し、スイッチはこの方法でMACアドレスを学習します。この場合、管理可能なスイッチが必要であり、接続されたMACアドレスを照会します。


2
あなたは可能性があることが、BOOTPまたはPXEブートを求めていた場合、ネットワークスタックせずにそれを得ます。これが機能するかどうかはマシンに依存していると思います。
バートシルバース

6

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

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

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

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

上記のコマンドを試してみましたが、エラーが発生しましたScantype n not supported。フラグ-snはNmap 4.xではサポートされていないようです。
ステファンLasiewski

nmap 5.30BETA1変更ログから:
ジョン・ホーマー

2
-Pnおよび-snに切り替えられ、それぞれpingスキャンをスキップするための優先構文およびポートスキャンをスキップするための優先構文として。以前は、-PNおよび-sPオプションが推奨されていました。これにより、スキャンのフェーズを無効にするいくつかのオプションのより規則的な構文が確立されます。-n逆DNSなし-Pnホスト検出なし-snポートスキャンなしNmapの現在のバージョンは、ポートスキャンが無効になっている場合でも(-sCおよび--tracerouteを含む)さらに先へ進むことができるためです。近い将来、以前のオプション名のサポートを保持します。
ジョンホーマー

そのため、新しい「-sn」パラメータの代わりに「-sP」構文を使用できるはずです。残念ながら、テスト用のnmap4のバージョンはありません。
ジョンホーマー

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

3

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

arp
cat /proc/net/arp

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


1

ここでの基本的な問題は、これがレイヤ2情報であるため、スイッチだけがそれを見るということです。一部のスイッチは、この情報を覗くことができるインターフェースを提供しますが、それを取得する唯一の方法でない場合は、例えばスイッチ間にハブを設置することにより、物理層でインターセプトすることです。

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

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


編集-それらがBIOSのみであるという部分を読み直してください。これは、レイヤー2データを傍受する問題を超えたさらなる課題を提示します-クライアントはネットワークを介してデータを送信することさえできません。クライアントにDHCPを実行する、またはARPパケットを送信するBIOSがある場合、スイッチからそれらを見ることができるはずです。どのBIOSエディションがこれをサポートしているのかわかりませんが、一部のエディションではサポートされています。
イモアタマ

1

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

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

1

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のコメントを参照してください

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


IPv4よりもIPv6でこのようなpingを行う方が簡単で信頼性が高いと思います。コマンドの例は次のようになりますping6 -c2 -n ff02::1%wlan0。使用するネットワークインターフェイスの名前を更新するだけで済みます。そのために使用するIPアドレスはff02::1、どのネットワークに接続されているかには関係ありません。
カスペルド14

1

Nmapを使用してネットワークをスキャンし、ARPテーブルを確認します(arp -aLinuxディストリビューションの場合)。


0

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

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

多くの例がここにあります:http : //gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0].Type=SearchText&f[0].Value=MAC+address&x=0&y= 0


0

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

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

同じ結果を得るためのより良い方法がある場合は、MACアドレスを取得する必要がある理由についてより多くを理解することは有用でしょう。


0

たとえば、継続的に実行されるarpalertでARP情報を収集できます。これにより、開始後にARPアドレスのセットが表示されます。

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

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

arpalertのスニペット:

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

nmapのスニペット:

Nmap( "Network Mapper")は、ネットワーク探索またはセキュリティ監査用の無料のオープンソース(ライセンス)ユーティリティです。

ここを見てください:


0

私は使用します: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はおそらくそれらのほとんどで利用可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.