使用 traceroute 确定设备之间的接入点

问题描述

我希望能够确定我的设备连接到我的网络中的哪个接入点(在一个 SSID 下具有多个接入点的网状网络)。我认为使用 traceroute 将是一个很好的解决方案,但如果我尝试对连接到与源设备不同的接入点的设备运行 traceroute 命令,请求将失败。

我想我的第一个问题是为什么这会失败,因为两个设备都连接到同一个网络,数据包不应该去:我的电脑 -> 网关 -> 第二个接入点 -> 目标设备? 其次,是否有另一种方法可以实现我更广泛的目标,即确定我的网络中的设备连接到哪个接入点?

更多有用的信息:

  • 我也无法在单独的接入点上 ping 目标设备
  • 我有一个 Eero 网络,里面有他们的三个“豆荚”
  • 一个 Pod 充当网关,而另外两个则分配有自己的 IP 地址并用作辅助访问点。

解决方法

我从未使用过 Eero,但由于其性质,traceroute 可能非常不可靠。

随着生存时间的增加,traceroute 发送数据包(第一个数据包的 ttl 为 1,第二个数据包的 ttl 为 2,等等)。并期望路由器将数据包发送回源,让源知道该数据包已过期。

如果您的网络全部为第 2 层(所有 aps 都处于桥接模式),则数据包不会被路由……并且 traceroute 不起作用(如果“所有设备都连接到同一网络”,则意味着同一子网,那么您的网络是第 2 层网络)。

Traceroute 失败还有其他原因,取决于是使用 ICMP 还是 UDP 数据包实现的,以及设备之间是否有任何防火墙规则 nat 等。

为了帮助您解决初始场景,找出设备连接位置的最可靠方法是获取每个 AP/BSSID 的设备列表。

我找到的最接近的是以下库,它可能会让你得到这样的列表:

https://pypi.org/project/eero/