
eth1 动态 IP 连接不上问题记录环境信息平台Rockchip RK3568网口eth0、eth1千兆PHY 芯片 RTL8211F驱动 rk_gmac-dwmac网络管理NetworkManager配置脚本/usr/local/bin/net-setup一、问题现象接口状态IP 地址说明eth0UP, RUNNING正常获取静态/动态均正常eth1UP无 RUNNING无 IPoperstatedownDHCP 无法获取地址具体表现eth1 无法通过 DHCP 获取 IP 地址NetworkManager 中 eth1 显示为不可用日志中 eth1 状态在activated和unavailable之间反复切换eth1 曾短暂获取到 DHCP 地址192.168.1.228但很快被释放二、根因分析问题 A自动协商被禁用导火索eth1 的 NetworkManager 连接配置中802-3-ethernet.auto-negotiate: 否自动协商关闭后PHY 芯片不与对端设备协商速率/双工模式导致物理链路不稳定出现周期性抖动。该设置不是 net-setup 脚本设置的而是在某个时间点被手动修改或被其他工具污染并持久化到了 NM 配置文件中。问题 B驱动不支持载波检测放大器device (eth1): driver rk_gmac-dwmac does not support carrier detection.eth1 驱动无法可靠上报物理链路状态carrierNetworkManager 读取 carrier 时得到不可靠的值。两者叠加的恶性循环日志证据10:10:50 carrier 连接 → DHCP 获得 192.168.1.228 ✅ 10:11:12 carrier 变化 → 状态降为 unavailable ❌ (仅维持22秒) 10:11:21 carrier 连接 → 重新激活 10:11:55 carrier 又变化 → 再次降为 unavailable ❌循环链条自动协商关闭 → 物理链路抖动 ↓ 驱动 carrier 检测不可靠 → NM 收到错误 carrier 事件 ↓ NM 判定链路断开 → 撤销连接 → 杀掉 DHCP/释放租约 ↓ carrier 又恢复 → NM 重新激活 → 重新发起 DHCP ↓ DHCP 还没完成 → carrier 又丢失 → 无限循环为什么 eth0 正常eth0 保持了auto-negotiate启用的默认配置链路稳定carrier 不抖动DHCP 正常工作。三、NetworkManager carrier 机制说明NM 设备状态机unavailable → (carrier1) → disconnected → configuring(DHCP阶段) → activated ↑ | └────────────── carrier0 (carrier-changed) ───────────────────┘carrier1 是 DHCP 启动的前提carrier0 会立即中断 DHCP 并释放已有租约carrier 抖动会导致 DHCP 永远无法稳定完成四、解决方法修改 net-setup 脚本在所有nmcli connection modify配置网口的地方显式启用自动协商nmcli connection modify eth0\ipv4.method auto\ipv4.addresses\ipv4.gateway\802-3-ethernet.auto-negotiateyes\# 关键显式启用自动协商connection.autoconnectyes\connection.interface-name eth0涉及的函数均已修改do_fix()第 80-92 行do_static()第 134-149 行do_dhcp()第 180-190 行执行修复命令sudonet-setup fix# 修复配置设为 DHCP 默认sudonet-setup status# 查看结果五、如何避免再次出现所有网络变更都通过 net-setup 脚本操作不要手动 nmcli 改单个参数脚本显式设置 auto-negotiate yes保证幂等性——无论配置之前被污染成什么状态运行脚本后都会被纠正如果 carrier 抖动问题持续驱动层面固有问题可创建兜底配置# /etc/NetworkManager/conf.d/ignore-carrier-eth1.conf[device-eth1]match-deviceinterface-name:eth1 ignore-carrieryes设置后 NM 不会因 carrier 变化撤销 eth1 连接。但首选方案仍是开启自动协商。