如何透過ARP指令取得正確的MAC位址?

如何透過ARP指令取得正確的MAC位址?

免責聲明:Linux 新手,在 Pi 3 上使用 Raspbian Light。

我正在嘗試使用 ping / arp 來尋找 mac 位址:

ping 192.168.1.7
arp 192.168.1.7

它返回:

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.7              ether   02:0f:b5:ed:9e:5c   C                     eth0

HWaddress 與我在 Windows 中看到的 mac 位址不同:

ping 192.168.1.7
arp -a 192.168.1.7

這導致:

Internet Address      Physical Address      Type
192.168.1.7           c0-ee-fb-ed-9e-5c     dynamic

網路拓撲結構

Pi 連接線 (.27) → 開啟電纜 → 路由器 (.1)
手機連接 wifi (.7) → 路由器 (.1)
Windows 連接 wifi (.30) → 路由器 (.1)

如何讓我的 Pi 返回同一台 Mac?

注意:看起來「供應商」部分有所不同。那麼「幾乎」是對的嗎?

答案1

最佳猜測:您的 RaspPi 透過 LAN 連接到路由器,而「目標」手機和 Windows PC 透過 WLAN 連線。這意味著雖然電話和 Windows PC 位於同一網段並且 ARP 按預期工作,但通常 LAN 和 WLAN 不會位於同一網段。

自從他們似乎為了在同一個網段(相同的 /24 前綴),我假設路由器做了一些奇特的事情來使其工作,例如透過 MAC NATebtables。 「欺騙」的 MAC 位址僅在供應商前綴上有所不同,而供應商前綴似乎無效,這一事實也表明了這一點。

您可以透過 LAN(電纜)將 Windows PC 連接到路由器來對此進行測試,並查看在這種情況下報告的 MAC 位址。

另一種測試方法是取得路由器的 root 存取權限,並查看內部發生的情況。

編輯

如果這個猜測是正確的,那麼這純粹是一個路由器問題,而不是 Linux 與 Windows 的問題。如果 Windows PC 透過 LAN 連接,而目標手機透過 WLAN 連接,Windows 也會發現「錯誤」的 MAC 位址。每一個透過 WLAN 連接的裝置將看到「錯誤」的 MAC 位址每一個透過 LAN 連接的設備,反之亦然。

並且您無法“解決”它,除非您可以設定路由器以停用它。在這種情況下,您的 LAN 和 WLAN 可能有不同的子網,而 LAN 中的 RaspPi 將看不到 WLAN 中任何裝置的 MAC根本不(反之亦然),儘管它們可以相互通信。

這就是網路的工作原理。

問題是:為什麼首先需要「正確」的 MAC 位址?你不應該需要這樣做。

答案2

arp命令將為您提供 rpi 網路介面的正確 mac 位址,您可以如下驗證它:

ssh [email protected]
sudo cat /sys/class/net/eth0/address

c0-ee-fb-ed-9e-5c是您的 OnePlus 手機的 mac 位址。

相關內容