加装新网卡后,用 ip、ethtool、/sys/class/net 和 journalctl 四类命令确认接口、驱动、链路和内核识别状态。
1. 列出当前网卡接口
ip link show 是最直接的入口,输出包含接口名、状态、MAC 地址和 MTU [1]。
ip link show
预期输出里 state UP 表示链路已激活,DOWN 表示未启用或未连接。如果加装后没看到新接口,继续往下看内核日志。
2. 获取接口详细参数
ip -details link show 会显示队列数、GSO/TSO/GRO 上限、父设备等附加字段;ethtool 则给出驱动、速度和链路检测 [2]。
ip -details link show
ethtool -i eth0
ethtool eth0
ethtool -i 输出 driver、bus-info、firmware-version;ethtool <iface> 输出 Speed、Duplex、Link detected。
3. 查看硬件标识
Linux 在 /sys/class/net/<iface>/device/ 下暴露 PCI vendor/device ID 和 modalias,方便比对硬件表 [6]。
ls /sys/class/net/
cat /sys/class/net/eth0/device/vendor
cat /sys/class/net/eth0/device/device
vendor 和 device 是十六进制 PCI ID,可在 PCI ID 数据库或 lspci 中对照 [3]。dmidecode 也能读取 DMI/SMBIOS 表,但在 WSL 和多数容器里受限 [4]。
4. 确认内核是否识别新网卡
加装后如果内核未识别,接口不会出现在 ip link 里。用 journalctl -k 查看启动和热插拔日志。
journalctl -k --no-pager | grep -i -E 'eth|net|vmbus|network|link'
如果看到 hv_netvsc、vmxnet3 或 e1000e 等驱动注册记录,说明内核已认到设备;没看到则需检查物理连接或 BIOS 设置。
排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
ip link 看不到新网卡 |
内核未加载对应驱动 | journalctl -k 查报错,modprobe 尝试加载 |
接口存在但 state DOWN |
网线松动或交换机端口关闭 | 检查物理链路,ip link set <iface> up |
ethtool: Operation not permitted |
普通用户权限不足 | 用 sudo 运行或检查 netlink 权限 |
dmidecode: Can't read memory |
运行在容器或 WSL 里 | 依赖宿主机 DMI/SMBIOS 暴露,虚拟机通常不可用 |
回滚/撤销
若需临时关闭网卡再恢复:
sudo ip link set eth0 down
sudo ip link set eth0 up
ip link set down 仅关闭该接口,不影响路由和防火墙规则。
局限性
- WSL2 虚拟网卡由 hv_netvsc 驱动管理,宿主机 Hyper-V 可见,但 WSL 内部无法直接
ip link add物理 PCI 设备。 dmidecode和lspci在虚拟机或容器中往往受限,硬件信息以/sys/class/net/<iface>/device/*为准 [5]。- 热插拔网卡时,部分旧内核不会自动触发 netlink 事件,建议人工刷新
ip link show。
附录:实测记录
测试环境:WSL2 (Ubuntu 22.04),内核 6.6.114.1-microsoft-standard-WSL2NAT,单网卡 (eth0, hv_netvsc)。
ip link show正确列出 eth0,state UP。ip -details link show显示 parentbus vmbus、parentdev。ethtool -i eth0输出 driver: hv_netvsc,version: 6.6.114.1。ethtool eth0显示 Speed: 10000Mb/s,Link detected: yes。/sys/class/net/eth0/device/vendor= 0x1414,device= 0x003。journalctl -k可见hv_vmbus: registering driver hv_netvsc记录。dmidecode因/dev/mem不可读报错,符合预期。lspci未安装(基于文档核查,尚未实际执行安装)。
FAQ
Q: 加装网卡后 ip link 还是只有 lo,怎么办? A: 先 journalctl -k 看内核是否加载了对应驱动;再检查 lsmod | grep <driver>。如果是物理机,确认 BIOS 里网卡未被禁用。
Q: 两块同名接口怎么区分? A: 用 MAC 地址或 PCI bus-info。ip link show 里的 link/ether 和 ethtool -i 里的 bus-info 是唯一标识。
Q: ethtool 显示 Speed 为 Unknown 正常吗? A: 虚拟化环境(如 WSL2、VMware)里可能不报告 negotiated speed,属于预期行为,不代表硬件故障。
Q: 如何批量检查多台机器的网卡信息? A: 用 Ansible 或 SSH 执行 ip -details link show + ethtool -i,把输出按主机名保存即可。lspci 需要在有权限的宿主机上跑。
Q: 网卡驱动版本变了会影响业务吗? A: 如果只是小版本 patch(如 6.6.114.1 → 6.6.120),通常不影响。大版本升级前建议在测试机验证 ethtool 报告的功能集是否一致。
参考资料
- [1] ip-link(8) – Linux manual page(ip-link)
- [2] ethtool(8) – Linux manual page(ethtool)
- [3] lspci(8) – Linux manual page(lspci)
- [4] dmidecode(8) — Debian bookworm 手册页(dmidecode)
- [5] lshw(1) — Debian trixie 手册页(lshw)
- [6] sysfs-class-net ABI documentation(sysfs-net)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。