核心概念与注意事项
- 半双工(Half-Duplex):数据只能单向传输(同一时间仅能发送或接收),常见于早期网络设备。
- 适用场景:
- 连接仅支持半双工的设备(如老式Hub)。
- 解决全双工模式下的冲突问题(如
collisions
错误激增)。
- 风险提示:
- 现代网络通常使用全双工,强制半双工可能降低带宽利用率。
- 操作需root权限,错误配置可能导致网络中断。
操作前准备
-
确认网卡名称:
ip link show # 或 ifconfig -a(较新系统推荐ip命令)
输出示例:
enp0s3
、eth0
等。 -
检查当前模式:
ethtool <网卡名称> | grep -i duplex
若显示
Full Duplex
,则需修改。
方法一:ethtool临时设置(重启失效)
-
安装ethtool(如未预装):
sudo apt install ethtool # Debian/Ubuntu sudo yum install ethtool # RHEL/CentOS
-
设置半双工:
sudo ethtool -s <网卡名称> duplex half # 示例:sudo ethtool -s enp0s3 duplex half
-
指定速率(必须与双工模式同步设置):
sudo ethtool -s <网卡名称> speed 100 duplex half # 速率需匹配设备(如10/100/1000)
方法二:配置文件永久生效
NetworkManager系统(Ubuntu/CentOS 8+)
- 编辑连接配置:
sudo nmcli connection modify <连接名> 802-3-ethernet.speed 100 sudo nmcli connection modify <连接名> 802-3-ethernet.duplex half sudo nmcli connection down <连接名> && sudo nmcli connection up <连接名> # 重启连接
提示:通过
nmcli connection show
获取连接名(通常非网卡名)。
传统networking服务(Debian/Ubuntu)
- 编辑
/etc/network/interfaces
:auto eth0 iface eth0 inet dhcp pre-up /sbin/ethtool -s eth0 speed 100 duplex half # 在网卡启动前执行命令
systemd-networkd服务(CentOS 7/RHEL)
-
创建配置文件
/etc/systemd/network/10-eth0.network
:[Match] Name=eth0 [Link] Duplex=half Speed=100Mbps # 根据需求调整速率
验证配置
ethtool <网卡名称> | grep -E "Speed|Duplex"
成功输出示例:
Speed: 100Mb/s
Duplex: Half
故障排除
-
设置不生效:
- 检查速率是否匹配(半双工模式需明确指定
speed
值)。 - 确认网卡驱动支持半双工(
ethtool -k <网卡名>
查看supports-half-duplex
)。
- 检查速率是否匹配(半双工模式需明确指定
-
网络断开:
- 恢复默认设置:
sudo ethtool -s <网卡名> autoneg on
(启用自动协商)。 - 物理层问题:更换网线或检查设备兼容性。
- 恢复默认设置:
-
命令未找到:
安装ethtool(见方法一步骤1)。
何时避免使用半双工?
- 现代千兆/万兆网络环境(全双工是标准方案)。
- 无线网卡(WLAN不支持半双工模式)。
- 高性能需求场景(半双工会显著降低吞吐量)。
引用说明参考Linux内核文档(kernel.org)、ethtool官方手册页(man7.org/linux/man-pages/man8/ethtool.8.html)及NetworkManager配置指南(developer.gnome.org/NetworkManager/stable/),操作建议基于主流Linux发行版验证(Ubuntu 22.04/CentOS 7)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8988.html