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

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

BIOSだけがインストールされている(オペレーティングシステムがない)マシンを見つけ出す必要があります。

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

11
サイト間の重複(スタックオーバーフロー時): ネットワーク上およびネットワーク上のマシンのMACアドレスを確認する方法
追加された 著者 ebruchez,

13 答え

管理対象スイッチで利用可能な情報にアクセスする必要があります。あなたが管理されていないネットワークを持っているなら、私はそうする方法を見ません。

これは、ターゲットコンピュータが Wake-on-LAN を実行できることを前提としています(WoL )この場合、サーバーへのリンクが確立され(派手なリンクLEDを探します)、ネットワークカードはWoLブロードキャストをリッスンしています。ちょっと待って、カードはこの状態では何にも答えません。 WoLがない場合、カードはおそらく消灯しており(リンクLEDがない)、まったく機能しません。

8
追加された

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

OSがインストールされていなければ動作しないARPクエリなどのようなものに少なくとも答えるために最小限のネットワークスタックが必要なので、それらがパワーアップされるならば、私はこれも不可能であると思います。

うまく動作するかもしれません(私は知らないし、今テストすることができません)NICとスイッチはNICが接続されるか、またはパワーアップされたときに通信し、スイッチはこのようにMACアドレスを学習します。これが事実である場合あなたは管理可能なスイッチを必要とし、接続されているMACアドレスを問い合わせるでしょう。

7
追加された
bootpまたはpxeブートを要求している場合は、ネットワークスタックなしで 入手できます。これがうまくいくかどうかについては、マシンによりますが、私は思います。
追加された 著者 YetAnotherRandomUser,

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ファイルを編集して PowerShell スクリプトを書きました://en.wikipedia.org/wiki/Comma-separated_values "rel =" nofollow noreferrer "> CSV ファイル。これにより、ダウンしているホストも除外されます。 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
5
追加された
nmap 5.30BETA1からChangeLog:
追加された 著者 Nathan,
pingスキャンとポートスキャンをスキップするための推奨構文として、それぞれ-Pnと-snに切り替えました。以前は、-PNおよび-sPオプションが推奨されていました。これは、スキャンのフェーズを無効にするいくつかのオプションについて、より規則的な構文を確立します。現在のバージョンのNmapは、ポートスキャンを無効にしていても(-sCや--tracerouteを含めて)さらに進むことができます。当面の間は、以前のオプション名のサポートを継続します。
追加された 著者 Nathan,
したがって、それに基づいて、新しい '-sn'パラメータの代わりに '-sP'構文を使用することができます。残念ながら、私はテストするnmap4のバージョンを持っていません。
追加された 著者 Nathan,
上記のコマンドを試したところ、エラー Scantype n not supported が発生しました。どうやらフラグ -sn はNmap 4.xではサポートされていません。
追加された 著者 Anders Lindén,
  1. スイッチが十分に進んでいる場合は、スイッチ/ルータの情報を表示します。
    (シスコのスイッチでは、コマンドは show mac-address-table です。)
  2. コンピュータでPXE対応のBIOS /ネットワークカードが使用されている場合は、DHCPリースを取得しようとするので、DHCPログから情報を読み取ります。 DHCPがない場合は、すべてのブロードキャストトラフィックをWiresharkでダンプし、DHCPトラフィックをフィルタリングするだけです。 OSを搭載していないすべての新しく動力を与えられたマシンはトラフィックに表示されます。
3
追加された

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

arp
cat /proc/net/arp

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

3
追加された

ここでの基本的な問題はこれがレイヤ2情報であるということです、従ってスイッチだけがそれを見ます。いくつかのスイッチはこの情報を覗くことを可能にするインターフェースを提供しますが、それを得る唯一の方法ではない場合、例えばスイッチ間にハブを設置することによって、物理層で傍受することです。

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

If you're using unmanaged switches, and you really want to know this info, I recommend you buy a hub, and temporarily replace the switch with it. You can then connect a computer running wireshark to the hub and capture ARP packets to record MAC addresses. Alternately you could use Echolot to do this for you - it selectively tracks ARP packets and builds a MAC address database.

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

これは私のために働いた解決策です:

  1. BIOSでネットワーク起動を有効にします。 (たとえば、ネットワークアダプタを[PXEで有効にする]に設定します)
  2. コンピュータを起動します。
  3. コンピュータはネットワークからの起動を試み、その過程でMACアドレスを表示します。
1
追加された

Nmap でネットワークをスキャンしてからARPテーブルを確認します( arp -a )

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

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

1
追加された
IPv4よりもIPv6でこのようなpingを実行する方が簡単で信頼性が高いと思います。コマンドの例は、 ping6 -c2 -n ff02 :: 1%wlan0 のようになります。使用するネットワークインターフェースの名前を更新するだけでよく、その目的に使用するIPアドレスは、どのネットワークに接続しているかにかかわらず、常に ff02 :: 1 です。
追加された 著者 kasperd,

ARP情報は、継続的に実行されるarpalertなどを使って収集できます。これで、起動後に見られるARPアドレスのセットができます。

マシンの電源を切ってもARP応答は送信されません。

処理を高速化するために、arpalertを実行しているサーバーからネットワーク上でnmap ping scan(nmap -sP)を使用して、すべての可能な(稼働中および実行中の)ホストにarpクエリに応答させることができます。後で定期的にnmap ping scanを実行すると、短期間のホストに追いつく可能性が高くなります。

arpalertからのスニペット:

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

nmapからの抜粋:

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

ここを見てください。

0
追加された

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

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

There are a bunch of examples here: 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/ ...これを同じLAN上で実行している場合は、応答するマシンのMACアドレス情報を入手する必要があります。

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

0
追加された

私が使う :     nmap -sP 192.168.1.1/24

(192.168.1.1/24をあなたのIP範囲に置き換えてください)

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

[[email protected] ~]# 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は、おそらくそのほとんどで使用可能です。

0
追加された