Linux
有沒有辦法查詢網路中的所有mac地址?
我知道這個問題被標記為“離題”和“非專業”,但是在創建網關或 IDS 時,這可能非常相關。此外,Google發現沒有任何可用的……
每個普通交換機中都有一個叫做 MAC-table(或 CAM-table)的東西(根據這篇文章:https ://en.wikipedia.org/wiki/CAM_Table )
如果交換機確切地知道到 MAC 地址的路由,並在每個埠上通告它們(似乎合乎邏輯)……
- 假設一個 Linux 機器,是否可以在指定介面上查詢網路中的每個MAC 地址?
公平地說,每個人都說“arp -a”,但我對這個答案並不滿意,因為它只顯示已知的MAC 地址(及其相應的 IP)。
要列出埠上的所有地址,您需要更改目前的網路配置。我們將使用 bridge-utils 包,但任何其他網橋實現(例如:OpenvSwitch)都可以做到這一點。以下描述適用於基於 Debian 的系統:
- 首先你應該安裝 bridge-utils 包。
- 使用 ifdown 設置選定的埠
- 在要列出 MAC 地址的埠上創建網橋
假設埠是 eth0,IP 地址是動態的。在 /etc/network/interfaces 中應出現以下內容
allow-hotplug eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge-ports eth0 bridge_fd 0 bridge_stp off
要應用這些更改,您可以在 eth0 上使用 ifup,然後在 br0 上使用,或者只是重新啟動。
- 現在可以使用 brctl 查詢埠了
它將列出完整的 MAC 表:
root@debian:~# brctl showmacs br0
輸出應如下所示:
port no mac addr is local? ageing timer 1 ab:cd:ef:01:02:03 no 1.72 1 ab:cd:ef:01:02:04 no 25.52 1 ab:cd:ef:01:02:05 no 2.64 1 ab:cd:ef:01:02:06 no 10.67 1 ab:cd:ef:01:02:07 yes 0.00
為此,我通常在系統上安裝arpalert。它是一個守護程序,使用 libcap 監視流量。它為每個介面保留一個 MAC 地址數據庫。它還可以監視一些不尋常類型的事件並發送通知。它會跟踪上次使用情況,並且會在重新啟動後保留數據庫(與僅設置網橋介面相比)。