众所周知买UniFi一半的价钱是为了这张拓扑图。。。但前提是你得买官方的AP和死贵的交换机(同样的RTL9303螃蟹芯片8口万兆光,杂牌只要¥400、TP-Link的卖¥800、而UniFi USW Aggregation能卖¥2400),不然通常所有设备就只会挤成一行。

不过实际上UniFi对于第三方的设备并不是完全不支持,而是可以支持LLDP协议,有时是能把拓扑显示对的(甚至可以出显示宿主机下挂着它的虚拟机),但限制很多:
- 只有直接连接到UniFi设备上的第三方交换机的拓扑正确,毕竟LLDP的传播范围只是接口之间
- 不同UniFi设备支持程度不同,比如我的MikroTik CRS305直接连在UCG Fiber上拓扑不正确,但挂在USW Aggression上就能正常显示拓扑
- 第三方交换机必须支持并打开LLDP,多数网管交换机都是支持的,有些交换机虽然Web配置里没有LLDP选项,但是默认启用的(比如我的水星 SE106 Pro)。mikrotik交换机的SwOS不支持,需要切到RouterOS里在IP – 邻居发现 里打开LLDP(见下图)
- 坑:第三方交换机需要能稳定的在UniFi里显示为一个设备,像一些TP-Link的交换机有时本身不会出现在拓扑图中(unifi设备列表里显示离线,虽然此时Web管理页面都能正常访问,可能与ARP回应的行为差异有关),那就无法正确显示拓扑,毕竟父节点都没有
- 只能显示拓扑,像什么设备连的端口号和速率就别想了。原则上这些可以通过SNMP获取,但UniFi只支持自家的私有inform协议(基于HTTP和加密JSON,其实理论上可以通过内网跑一个转换服务把支持SNMP的第三方交换机伪装成UniFi交换机,但需要大量逆向和开发工作)

附加:有趣的是,通过安装lldpd软件,可以让linux宿主机到虚拟机的拓扑像一个交换机一样也显示出来,毕竟宿主机也有一个软件bridge来连通内部的虚拟机。
lldpd一般各大发行版的源里都自带,我是用的fedora server + libvirt虚拟机方案,装好并启用服务就能正确显示了:
sudo dnf install lldpd
sudo systemctl enable --now lldpd
# 验证:查看邻居
sudo lldpcli show neighbors

发表回复