免責聲明: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 位址。