如何在 Rocky Linux 9 中使用 ethtool 配置网络接口的速率?

问题浏览数Icon
19
问题创建时间Icon
2025-02-28 00:20:00
回答 | 共 5 个
作者头像
fasttree22

在Rocky Linux 9中使用ethtool配置网络接口速率需遵循以下步骤及注意事项:

  1. 基础操作

    • 查看接口支持的模式:ethtool eth0 | grep 'Supported link modes'
    • 设置速率与双工:ethtool -s eth0 speed 1000 duplex full autoneg off(示例为千兆全双工)
  2. 关键挑战与实践经验

    • 驱动兼容性:部分旧型号网卡(如某些Realtek型号)需加载特定内核模块(如r8169驱动)并确认ethtool -i eth0显示的驱动版本支持速率设置
    • 协商冲突:混合环境(如老式交换机)需严格匹配两端autoneg状态。曾遇华为S5720交换机因强制关闭自协商导致端口err-disable,需通过autoneg on恢复
    • 虚拟化限制:VMware虚拟网卡(vmxnet3)不支持速率调整,需在ESXi主机侧配置限速
  3. 持久化配置

    • 通过nmcli固化配置:
      nmcli con mod eth0 ethtool.speed 1000 ethtool.duplex full ethtool.autoneg no
      nmcli con reload && nmcli con up eth0
    • 或创建/etc/NetworkManager/dispatcher.d/99-ethtool脚本实现多接口动态配置
  4. 调试技巧

    • 使用ethtool -t eth0 offline执行网卡自检,排查硬件故障
    • 通过dmesg | grep eth0检查内核是否报错(常见如'Could not set speed'提示驱动不支持)
  5. 性能验证
    完成配置后需使用iperf3 -c <server_ip> -t 30进行带宽压测,同时用sar -n DEV 1监控实际速率是否稳定在设定值,避免因协商异常导致降速至百兆。

作者头像
xiaoxiong9

为什么不尝试使用NetworkManager的nmcli工具来动态调整接口参数,或许能避免驱动兼容性问题呢?

作者头像
xiaoxiong9

在Rocky Linux 9中通过ethtool配置网络接口速率需遵循以下技术逻辑:

  1. 硬件兼容性验证:通过ethtool -i [interface]确认网卡驱动支持速率调整,重点检查'supported link modes'字段。
  2. 协商模式控制:若需固定速率,须通过ethtool -s [interface] autoneg off禁用自动协商,但需注意部分PHY芯片可能强制保持自动协商。
  3. 速率强制配置:使用ethtool -s [interface] speed [1000|2500|...] duplex full时,需验证内核日志(dmesg)是否出现'link partner did not autoneg'类警告,表明物理层协商异常。
  4. 持久化策略选择:推荐采用NetworkManager原生集成方案,通过nmcli con modify [profile] ethtool.feature-speed [value]实现策略管理,优于传统的ifcfg文件注入方式。
  5. PHY状态监控:配置后需持续观察ethtool -S [interface]中的'LinkPartnerAdvertised'和'adv_...'计数器,确认双工模式匹配。 关键注意:现代25G/100G网卡多采用AN/LT协议,强制速率可能导致物理层失步,建议优先采用FEC配置协调替代方案。
作者头像
linyang66

使用 ethtool -s [接口名] speed [速率] duplex full autoneg off 配置速率(如 ethtool -s eth0 speed 1000 duplex full),需在网卡配置文件中添加 ETHTOOL_OPTS 参数确保重启生效。

作者头像
xiaomao7
  1. 安装ethtool(如未安装): sudo dnf install ethtool

  2. 查看接口支持的速率: ethtool <接口名> | grep 'Supported link modes'(例如enp0s3)

  3. 配置接口速率(示例设置1000M全双工): sudo ethtool -s <接口名> speed 1000 duplex full autoneg off

  4. 持久化配置(网络重启后生效): 创建文件 /etc/NetworkManager/dispatcher.d/99-ethtool,内容:

    #!/bin/sh
    if [ "$1" = "<接口名>" ] && [ "$2" = "up" ]; then
    /sbin/ethtool -s <接口名> speed 1000 duplex full autoneg off
    fi
  5. 添加执行权限: chmod +x /etc/NetworkManager/dispatcher.d/99-ethtool

注意:需确认网卡硬件支持目标速率,且设置参数需与支持模式匹配。配置后建议重启网络服务验证生效情况。