CentOS 7如何修改具体的系统网络接口默认传输速度
如果只是想临时把网卡速率改掉,最直接的做法就是用 ethtool。先通过 ip link show 确认接口名,再用 ethtool ens33 看当前状态和网卡是否支持;确认没问题后,执行 ethtool -s ens33 speed 100 duplex full autoneg off 即可。
如果只是想临时把网卡速率改掉,最直接的做法就是用 ethtool。先通过 ip link show 确认接口名,再用 ethtool ens33 看当前状态和网卡是否支持;确认没问题后,执行 ethtool -s ens33 speed 100 duplex full autoneg off 即可。这个设置会立刻生效,但机器一重启就会失效;要想长期保留,则需要在 ifcfg-ens33 里加入 ETHTOOL_OPTS="speed 100 duplex full autoneg off",然后执行 systemctl restart network。

直接用 ethtool 临时改速,别绕弯
CentOS 7 没有“系统默认速率”这种全局设置——速率是每张网卡单独协商的,必须对具体接口(如 ens33、eth0)操作。ethtool 是唯一可靠工具,ifconfig 或修改 IP 配置文件完全无效。
先确认接口名和当前状态:
ip link show | grep "^[a-z]"
再查当前协商结果:
ethtool ens33
输出里看 Speed: 和 Link detected: 是否为 yes。如果显示 Unknown! 或 Unsupported,说明驱动不支持强制设速,跳过后续步骤。
临时设为 100 Mbps(需物理链路支持):
ethtool -s ens33 speed 100 duplex full autoneg off
speed必须是网卡和对端设备都支持的值(常见:10 / 100 / 1000 / 10000)duplex必须显式指定full或half,不能省略autoneg off是强制模式的前提,否则speed和duplex被忽略- 执行后立即生效,但重启失效
永久生效要写进网卡配置文件,不是 /etc/sysconfig/network
CentOS 7 的网络服务(network)只认 /etc/sysconfig/network-scripts/ifcfg-xxx 里的 ETHTOOL_OPTS,其他地方写都不管用。
编辑对应配置文件(比如接口叫 ens33,就改 ifcfg-ens33):
vi /etc/sysconfig/network-scripts/ifcfg-ens33
在文件末尾追加一行:
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
- 参数必须和
ethtool -s命令里完全一致,包括空格和大小写 - 不要加
sudo或ethtool命令前缀,只写选项部分 - 如果文件里已有
ETHTOOL_OPTS,直接覆盖原值,不要留多个 - 改完必须重启网络服务:
systemctl restart network,不是reboot
为什么 ethtool -s 报 “Operation not supported”?
这不是权限或语法问题,而是底层驱动或硬件限制。常见原因:
- 虚拟机里用的
e1000或vmxnet3网卡不支持强制速率(尤其 VMware Workstation/Player 默认网卡) - 万兆网卡(如
ixgbe)在某些固件版本下禁用低速强制模式 - 物理网卡被 BIOS/UEFI 锁定协商策略(例如服务器主板启用“节能链路降速”)
- 交换机端口关闭了 auto-negotiation,但没配成匹配的强制模式
验证方式:ethtool -i ens33 查 driver 名,再搜该驱动文档是否支持 speed 参数;同时用 ethtool -s ens33 autoneg on 回退测试能否重新协商成功。
注意网卡命名和 NetworkManager 冲突
CentOS 7 默认用可预测命名(ens33、enp0s3),但很多人习惯改成 eth0。如果改了名,必须同步更新两处:
/etc/sysconfig/network-scripts/ifcfg-eth0文件存在且内容里DEVICE=eth0、NAME=eth0GRUB_CMDLINE_LINUX中包含net.ifnames=0 biosdevname=0,否则重启后又变回ens33
更关键的是:如果启用了 NetworkManager 服务(systemctl is-active NetworkManager 返回 active),它会无视 ETHTOOL_OPTS 并覆盖设置。必须停用:
systemctl stop NetworkManager
systemctl disable NetworkManager
否则即使配置写对了,systemctl restart network 也无效。
真正麻烦的不是命令怎么写,而是得同时满足硬件支持、驱动兼容、命名一致、服务冲突这四个条件。少一个,ethtool 就只能告诉你 “Operation not supported”。


































