当前位置:首页 > 技术 > 正文内容

深入解析 Linux ethtool 网络接口管理命令

访客 技术 2026年6月10日 1

ethtool 工具概述

在 Linux 系统中,ethtool 是一款强大的网络接口管理工具,主要用于查询和控制网络驱动程序及底层硬件参数。通过该工具,系统管理员可以深入排查网络故障、优化网卡性能以及调整物理层和数据链路层的配置。

核心查询功能

1. 查看网卡基础状态

不带任何参数运行 ethtool 可以获取指定网络接口的工作状态、支持的速率以及自协商信息。

$ ethtool enp3s0
Settings for enp3s0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: Symmetric
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off
    Link detected: yes

2. 获取驱动与固件信息

使用 -i 参数可以查看网卡当前加载的内核驱动模块、版本号以及总线信息,这在排查驱动兼容性或升级固件时非常有用。

$ ethtool -i enp3s0
driver: igb
version: 5.4.0-k
firmware-version: 1.6.2
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

3. 统计网络流量与错误

通过 -S 参数可以读取网卡硬件级别的收发数据包统计。这对于分析丢包、CRC 错误或网络拥塞至关重要。

$ ethtool -S enp3s0
NIC statistics:
     rx_packets: 18458920
     tx_packets: 22893021
     rx_bytes: 4589713008
     tx_bytes: 8165825901
     rx_broadcast: 102
     tx_broadcast: 204
     rx_multicast: 3401
     tx_multicast: 1205
     rx_errors: 0
     tx_errors: 0
     rx_dropped: 0
     tx_dropped: 0
     collisions: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     tx_carrier_errors: 0

网卡参数配置

1. 调整速率、双工与自协商

使用 -s 参数可以手动干预网卡的物理层行为。例如,强制指定千兆全双工模式并开启自协商:

$ sudo ethtool -s enp3s0 speed 1000 duplex full autoneg on

注意:强制关闭自协商(autoneg off)在某些交换机环境下可能导致链路无法建立,建议仅在明确网络对端配置的情况下使用。

2. 修改硬件卸载 (Offload) 特性

现代网卡支持将部分网络协议栈的处理工作卸载到硬件上,以降低 CPU 负载。使用 -K 参数可以调整这些特性:

# 开启 TCP 分段卸载 (TSO) 和通用分段卸载 (GSO)
$ sudo ethtool -K enp3s0 tso on gso on

3. 调整 Ring Buffer 大小

增大网卡的 RX/TX 环形缓冲区可以缓解高并发下的丢包问题。使用 -G 参数进行修改:

$ sudo ethtool -G enp3s0 rx 4096 tx 4096

物理端口定位

在机房管理多网口服务器时,寻找特定网卡对应的物理网线是一项挑战。ethtool 提供了 -p 参数,通过让网卡物理指示灯闪烁来辅助定位:

# 让 enp3s0 对应的网口指示灯闪烁 15 秒
$ sudo ethtool -p enp3s0 15

配置的持久化方案

通过命令行使用 ethtool 所做的修改在系统重启后会失效。以下是几种常见的持久化方法:

方案一:修改网络接口配置文件 (适用于 CentOS/RHEL 7 及更早版本)

/etc/sysconfig/network-scripts/ 目录下对应的接口配置文件中添加 ETHTOOL_OPTS 变量:

# /etc/sysconfig/network-scripts/ifcfg-enp3s0
TYPE=Ethernet
BOOTPROTO=static
NAME=enp3s0
DEVICE=enp3s0
ONBOOT=yes
# 添加以下行以持久化 ethtool 设置
ETHTOOL_OPTS="speed 1000 duplex full autoneg on"

方案二:通过开机启动脚本执行

将命令写入系统的初始化脚本中。例如,在支持 rc.local 的系统中,赋予执行权限并添加命令:

# /etc/rc.d/rc.local
#!/bin/bash
/usr/sbin/ethtool -s enp3s0 speed 1000 duplex full autoneg on
exit 0

方案三:使用 NetworkManager (适用于现代 Linux 发行版)

对于使用 NetworkManager 的系统,推荐使用 nmcli 来管理 ethtool 特性,以确保配置与网络状态同步:

$ sudo nmcli connection modify "Wired connection 1" ethtool.feature-tso on
$ sudo nmcli connection up "Wired connection 1"

常用参数速查表

参数 功能描述
ethtool [devname] 显示网卡的标准状态与链路信息
-s / --change 修改网卡基础参数(速率、双工、自协商等)
-i / --driver 显示网卡驱动及固件版本信息
-d / --register-dump 导出网卡硬件寄存器状态(用于深度排错)
-e / --eeprom-dump 读取网卡 EEPROM 芯片数据
-E / --change-eeprom 修改网卡 EEPROM 中的字节数据(需谨慎使用)
-r / --negotiate 重启 N-WAY 自协商过程
-p / --identify 触发物理端口指示灯闪烁,用于物理定位
-t / --test 执行网卡硬件自检(支持 online/offline 模式)
-S / --statistics 显示网卡硬件级别的收发统计与错误计数
-k / --show-offload 查询协议卸载(Offload)特性的开启状态
-K / --offload 配置协议卸载特性(如 TSO, GSO, UFO)
-g / --show-ring 查询 RX/TX 环形缓冲区(Ring Buffer)参数
-G / --set-ring 修改 RX/TX 环形缓冲区大小
-c / --show-coalesce 显示中断合并(Coalesce)选项,用于优化 CPU 中断频率
-C / --coalesce 配置中断合并参数
标签: Linux

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。