免责声明:Linux 新手,在 Pi 3 上使用 Raspbian Light。仅限 SSH 访问。
我正在尝试使用 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 地址。