有没有办法识别客户端连接到网络的位置?

网络工程 无线的 路由器
2021-07-02 23:42:33

所以是的,我对网络很陌生,我希望这不是一个愚蠢的问题。我在 google 上找不到答案,也找不到这里的东西(但我也确定术语),所以我想试一试:

假设有一个跨越多个建筑物的大型本地网络。当然,我可以通过 WLAN 或电缆以及从多个地点连接到该网络。有没有办法知道我目前所在的位置?

或者换句话说:是否有某些东西可以识别某个连接点(路由器、热点)并且我可以从客户端计算机访问以识别我以前来过这里?

3个回答

这将取决于网络的设计/实施方式以及您的连接方式。请注意,我并不是在暗示我所建议的一切都是“礼貌的”或没有副作用。您似乎在问,基本上,如何对网络设计和拓扑进行逆向工程。

无线 AP 会识别自己,因此您可以查看您的无线接口并记下名称/BSSID,然后构建您所在位置和您看到的 AP 的地图。有些应用程序会向您显示范围内多个 AP 的信号强度,以便您了解附近的情况;从几个不同的地方做这件事可以让你粗略地算出 AP 在哪里。并且,您也许能够简单地在视觉上找到 AP,以获得更多的布局提示。

对于物理布线(对于无线 AP 也是如此),您可以记下您所在的 IP 网络。您还可以查看 DHCP 为您提供的默认网关。您可以 ping 扫描 IP 网络甚至服务扫描以记录“静止”的东西,例如打印机,然后您可以物理找到它们,为您提供更多的物理线索。

更困难的是梳理任何设计的虚拟化。在无线 AP 上,你有它们的名字,所以你可以在物理上将它们分开;如果您在同一个 VLAN 中,则每个 AP 上的 IP 网络可能都相同。

如果您对物理网络设备具有管理访问权限,那么只需在网络设备中查找计算机的 MAC 地址即可。

对于有线连接,如果有发现协议在运行,那么您通常可以找出您连接到哪个交换机、交换机中的哪个端口、哪个 VLAN 以及其他信息。如果这不是在您连接的端口上运行,请不要感到惊讶,因为关闭它通常是最佳做法。

有多种发现协议,基于标准的或专有的,但最常见的是找到两个中的一个。第一个是 CDP 或 Cisco 发现协议,顾名思义,它是由 Cisco 设备运行的东西。第二个是 LLDP 或链路层发现协议,它是用于交换此信息的 IEEE 标准。

您可以在任何基于 *nix 的操作系统(您可能需要安装,但通常已经安装)中使用 tcpdump 来通过以下命令(替换适当的界面)查看此信息。

对于 CDP:

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000'

对于 LLDP:

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether proto 0x88cc'

如果您愿意,也可以使用 Wireshark 或任何其他数据包捕获工具(Wireshark 中的显示过滤器只是“cdp”或“lldp”)。此外,还有一些软件包是为了侦听这些信息而编写的,但我自己并不熟悉它们(我通常坚持捕获)。

检查的确切方法取决于客户端的操作系统和/或驱动程序,但对于 wifi,您应该能够查找 BSSID(广播服务集标识符),它是接入点的 MAC 地址。在 OSX 上,您可以通过按住 alt 单击 wifi 图标来检查这一点。

如果您想从网络角度进行检查,您可以检查交换机和接入点的转发表,以找出设备的 MAC 地址是哪一个。