Linux如何查看系统中所有网卡信息?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
程昱森 2025-11-04 11:58关注1. 引言:Linux网卡信息查看的演进与挑战
在传统的Linux系统管理中,
ifconfig曾是查看网络接口状态的标准工具。然而,随着Linux内核和网络子系统的演进,该命令已被标记为“废弃”(deprecated),尤其在较新的发行版如Ubuntu 20.04+、CentOS 8/RHEL 8及Fedora中默认不再安装net-tools包。这导致运维人员无法依赖ifconfig获取完整的网卡信息,尤其是在存在多个物理或虚拟网卡(如eth0、ens33、veth、tun/tap、bridge、bonding)的复杂环境中。现代Linux系统推荐使用更强大且功能丰富的替代工具,例如
ip命令家族、nmcli、lshw和ethtool等,它们不仅能显示IP地址、MAC地址、接口状态,还能深入揭示驱动信息、链路速率、双工模式及硬件细节。2. 基础层面:使用
ip addr查看IP与MAC信息ip addr(即ip address show)是目前最基础也是最常用的网络接口信息查看命令,属于iproute2工具集的一部分。# 查看所有网卡的基本配置 ip addr show输出示例:
接口名 状态 IP地址 MAC地址 ens33 UP 192.168.1.10/24 00:0c:29:aa:bb:cc lo UP 127.0.0.1/8 00:00:00:00:00:00 docker0 UP 172.17.0.1/16 02:42:ac:11:00:01 vethabc123 UP 无 da:34:56:78:9a:bc 通过该命令可快速识别每个接口的激活状态(UP/DOWN)、IPv4/v6地址分配情况以及对应的MAC地址。
3. 中级分析:利用
ip link与ethtool获取链路层详情虽然
ip addr提供IP层信息,但要查看接口的链路状态、传输速率和双工模式,需结合ip link和ethtool。# 查看接口链路状态 ip link show # 查询特定网卡的速率与双工信息 ethtool ens33ethtool输出关键字段包括:- Speed: 当前协商速率(如1000Mb/s)
- Duplex: 全双工(Full)或半双工(Half)
- Port: 接口类型(TP表示双绞线)
- Auto-negotiation: 是否启用自动协商
- Link detected: 链路是否物理连通
4. 高级洞察:借助
lshw获取硬件级网卡信息当需要查看网卡的PCI设备ID、厂商型号、驱动程序名称时,
lshw(list hardware)是最权威的工具之一。# 获取所有网络接口的硬件详情 sudo lshw -class network典型输出片段:
*-network description: Ethernet interface product: 82545EM Gigabit Ethernet Controller vendor: Intel Corporation physical id: 1 bus info: pci@0000:02:00.0 logical name: ens33 version: 01 serial: 00:0c:29:aa:bb:cc size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 66MHz capabilities: pm pcix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full firmware=N/A latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s resources: irq:19 memory:dfed0000-dfefffff ioport:ef00(size=8)此信息对故障排查、驱动升级、兼容性验证至关重要。
5. 网络管理集成:使用
nmcli统一查看NetworkManager控制下的网卡在桌面或云环境中广泛使用的NetworkManager可通过
nmcli命令行工具统一管理网络配置。# 列出所有网络接口及其管理状态 nmcli device status # 显示详细连接信息 nmcli connection show输出表格示例:
DEVICE TYPE STATE CONNECTION MANAGED ens33 ethernet connected Wired connection 1 yes lo loopback unmanaged -- no wlan0 wifi disconnected -- yes nmcli特别适用于混合环境(有线/无线/VPN),并能反映接口是否受NetworkManager管理。6. 综合诊断流程图:多工具协同排查网卡问题
graph TD A[开始] --> B{是否存在网络连接?} B -- 否 --> C[执行 ip link show] C --> D{接口状态是否UP?} D -- 否 --> E[ip link set dev <iface> up] D -- 是 --> F[运行 ethtool <iface>] F --> G{Link detected?} G -- 否 --> H[检查物理连接或交换机端口] G -- 是 --> I[查看 ip addr 是否有IP] I -- 无 --> J[配置IP或检查DHCP] I -- 有 --> K[测试连通性 ping] K --> L[完成诊断]7. 实战建议:编写脚本批量采集网卡信息
对于拥有大量服务器的企业环境,可编写Shell脚本自动化收集关键指标:
#!/bin/bash echo "=== 网卡信息采集报告 ===" echo for iface in $(ip link show | awk -F': ' '/^[0-9]/ {print $2}' | grep -v '^lo$'); do echo "接口: $iface" echo " MAC: $(cat /sys/class/net/$iface/address)" ip addr show $iface | grep 'inet ' | awk '{print " IP:", $2}' if [[ -x "$(command -v ethtool)" ]]; then speed=$(ethtool $iface 2>/dev/null | grep Speed | awk '{print $2}') echo " 速率: $speed" fi driver=$(basename $(readlink /sys/class/net/$iface/device/driver 2>/dev/null)) echo " 驱动: ${driver:-N/A}" echo done此类脚本可用于巡检、资产登记或变更审计。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报