nmcli本身不配置或启用lldp,需先安装并启动lldpd等独立服务;新版networkmanager中可用nmcli device lldp查看已学习的邻居信息,仅作只读展示。

Linux 本身不通过 nmcli 配置或启用 LLDP 协议——这是关键前提。nmcli 是 NetworkManager 的命令行工具,用于管理网络连接(IP 地址、路由、DNS 等),而 LLDP 属于链路层协议,由独立的用户态守护进程(如 lldpd 或 lldpad)实现,NetworkManager 不原生支持 LLDP 的收发与配置。
但 nmcli 可以间接配合 LLDP 使用:它能列出网卡设备状态,并支持调用 lldp 子命令(仅限部分新版 NetworkManager)查看已学习到的邻居信息。下面分两部分说明:
一、确认并启用底层 LLDP 服务(必需步骤)
LLDP 功能依赖专用软件,常见有两种实现:
-
lldpd(推荐,更活跃、跨平台) lldpad(较旧,Red Hat/CentOS 7 常见)
以 lldpd 为例(适用于大多数现代发行版):
# 安装 lldpd(Ubuntu/Debian) sudo apt install lldpd # 或安装(RHEL/CentOS/Rocky/AlmaLinux) sudo dnf install lldpd # 或 yum install lldpd # 启动并设为开机自启 sudo systemctl enable --now lldpd # 查看服务状态 sudo systemctl status lldpd
✅ 注意:确保物理网卡链路为
UP状态(ip link show eth0 | grep "state UP"),LLDP 不在DOWN接口上工作。
二、使用 nmcli 查看 LLDP 邻居信息(只读,非配置)
新版 NetworkManager(≥1.26)集成 nmcli device lldp 子命令,可直接显示本机通过 LLDP 学到的对端交换机信息:
# 列出所有设备及其 LLDP 邻居(需 lldpd 已运行且接口收到 LLDP 报文) nmcli device lldp # 指定某网卡查看(例如 ens3f0) nmcli device lldp ens3f0
输出示例:
DEVICE CHASSISID PORTID SYSNAME PORTDESCR CAPABILITIES ens3f0 90:e7:10:5a:c5:3a Twenty-FiveGigE1/0/53 SW-TEST001 Twenty-FiveGigE1/0/53 BR,RO
字段说明:
-
CHASSISID:对端设备 MAC 地址(常为交换机管理口或主控板 MAC) -
PORTID:对端交换机上的物理端口标识(如ifname GigabitEthernet1/0/23) -
SYSNAME:交换机主机名(如SW-TEST001) -
PORTDESCR:对端端口描述(常含型号/位置信息) -
CAPABILITIES:能力标识(BR=桥接,RO=路由器,W=WLAN 等)
⚠️ 注意:该命令不配置 LLDP,也不控制收发行为,仅展示 lldpd 后台已解析并缓存的邻居数据。
三、补充:手动验证与调试(推荐组合使用)
若 nmcli device lldp 无输出,建议用原生命令排查:
# 查看所有接口的 LLDP 邻居详情(更完整) sudo lldpcli show neighbors # 查看指定接口(如 eth0) sudo lldpcli show neighbors ports eth0 # 检查 lldpd 是否监听了对应接口 sudo lldpcli show interfaces
常见问题排查:
- 确保交换机侧已全局启用 LLDP(如 Cisco
lldp run,H3Clldp global enable) - 确认交换机端口未禁用 LLDP(如
no lldp transmit/no lldp receive) - 检查服务器网卡是否被 bonding/team/vlan 子接口覆盖——LLDP 通常只在物理口生效
- 防火墙不影响 LLDP(它工作在 L2,不走 IP 协议栈)
不复杂但容易忽略。











