在 Linux 系统中,检查网络接口(NIC)的速度和状态是网络故障排查或性能优化的常见任务。本教程将介绍如何使用终端命令快速检查网卡的速度、双工模式和其他相关信息。

为什么需要检查网卡速度?

了解网卡的运行速度(例如10 Mbps、100 Mbps、1 Gbps或更高)以及是否以全双工或半双工模式运行,可以帮助你:

  • 确认网络连接是否达到预期性能。
  • 诊断网络瓶颈或连接问题。
  • 验证网卡是否正确配置以支持你的网络环境。

以下是几种在 Linux 终端中检查网卡速度的简单方法。

使用 ethtool

ethtool 是一个功能强大的工具,用于显示和配置网络接口的设置。它通常需要安装,但许多 Linux 发行版默认包含它。

安装 ethtool

如果你还没有安装 ethtool,可以使用以下命令安装:

  • Ubuntu/Debian
sudo apt update
sudo apt install ethtool
  • Fedora
sudo dnf install ethtool
  • Arch Linux
sudo pacman -S ethtool

检查网卡速度

确定你的网络接口名称。运行以下命令列出所有接口:

ip link

输出示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff

在此例中,网卡名称为 eth0

使用 ethtool 检查 eth0 接口状态:

sudo ethtool eth0

输出示例:

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                           drv probe link
    Link detected: yes

关键信息:

  • Speed:网卡当前运行速度(例如,1000Mb/s 表示 1 Gbps)。
  • Duplex:双工模式(Full 表示全双工,Half 表示半双工)。
  • Link detected:表示是否检测到网络连接(yes 表示已连接)。

使用 nmcli

nmcli 是 NetworkManager 的命令行工具,适用于使用 NetworkManager 管理网络的系统。它提供了一种更简单的方式来检查网卡状态。

检查所有网络连接:

nmcli device status

输出示例:

DEVICE  TYPE      STATE         CONNECTION
eth0    ethernet  connected     Wired connection 1
lo      loopback  unmanaged     --

确保你的网卡(例如,eth0)状态为 connected

查看详细连接信息:

nmcli device show eth0

输出示例:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:1A:2B:3C:4D:5E
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Wired connection 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.100/24
IP4.GATEWAY:                            192.168.1.1
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::1a:2bff:fe3c:4d5e/64

注意:nmcli 可能不会直接显示速度,但可以确认连接状态。

如果需要速度信息,可以结合 ethtool 或查看 NetworkManager 日志。

使用 cat /sys/class/net

Linux 的 /sys/class/net 目录包含网络接口的详细信息。你可以直接查看特定文件以获取速度信息。

检查 eth0 接口速度:

cat /sys/class/net/eth0/speed

输出示例:

1000

这表示网卡以 1000 Mbps(1 Gbps)运行。

检查双工模式:

cat /sys/class/net/eth0/duplex

输出示例:

full

表示全双工模式。

如果网卡未连接,speed 文件可能返回 Invalid argument 错误。

使用 dmesg 查看内核日志

内核日志有时会记录网卡初始化时的速度和状态信息。

过滤与网卡相关的日志:

dmesg | grep eth0

输出示例:

[    2.345678] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

这表明网卡以 1000 Mbps 全双工模式运行。

故障排除提示

  • ethtool 命令未找到:确保安装 ethtool,否则使用其他方法。
  • 无速度信息:如果 ethtool/sys/class/net 未显示速度,检查网卡是否已连接(Link detected: yes)。
  • 旧硬件:某些老旧网卡可能不支持自动协商,导致速度信息不准确。
  • 权限问题:某些命令需要 sudo 权限才能访问网卡详细信息。

总结

检查网卡速度是 Linux 网络管理的重要部分。以下是推荐方法:

  • 首选ethtool,提供最详细的信息。
  • 简单选项nmcli,适用于 NetworkManager 用户。
  • 快速检查/sys/class/net 目录,适合脚本或自动化。
  • 备用方法dmesg,用于查看历史日志。

通过这些工具,你可以轻松监控网卡性能并确保网络配置正确。