You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto配置静态IP后仍获取DHCP地址的问题排查

Yocto Dunfell静态IP配置后网卡同时出现DHCP IP的解决方法

问题场景

将Yocto Dunfell版本的层更新至最新后,通过connmanctl配置静态IP并重启设备,网卡eth0同时关联DHCP分配的IP(10.78.113.57)和手动设置的静态IP(10.78.113.71)。临时删除DHCP IP后重启问题复现,系统无/etc/network/interfaces文件,Connman界面显示静态IP配置正确,但ifconfig默认显示DHCP IP。

排查与解决步骤

1. 检查是否存在其他DHCP客户端进程

系统中可能同时运行了其他DHCP客户端(如dhclient、dhcpcd),导致自动获取IP:

# 查找DHCP相关进程
ps aux | grep dhcp

如果找到对应进程,停止并禁用其服务:

# 以dhclient为例
systemctl stop dhclient@eth0.service
systemctl disable dhclient@eth0.service

2. 验证Connman配置正确性

确认Connman的网卡配置文件是否正确保存,且未被覆盖:

  • 进入Connman配置目录:cd /var/lib/connman/
  • 找到对应网卡的配置文件(命名格式为eth_<mac_address>_cable.config),检查内容:
    [service_eth_<mac_address>_cable]
    Type = ethernet
    IPv4.method = manual
    IPv4.netmask = 255.255.252.0
    IPv4.gateway = 10.78.112.1
    IPv4.local_address = 10.78.113.71
    
    确保**没有IPv4.method=dhcp**的配置项,若有冲突则手动修改,然后重启Connman:
    systemctl restart connman
    

3. 检查systemd-networkd是否干扰网络配置

Yocto Dunfell更新后可能默认启用systemd-networkd,若其配置了DHCP会导致冲突:

# 查看systemd-networkd状态
systemctl status systemd-networkd

若服务处于运行状态,检查/etc/systemd/network/下的.network配置文件:

  • 找到针对eth0的配置文件,修改[Network]段的DHCP设置:
    [Network]
    DHCP=no
    
  • 重启服务并禁用开机启动(若不需要该服务):
    systemctl restart systemd-networkd
    systemctl disable systemd-networkd
    

4. 确保Connman为唯一网络管理器

检查Yocto构建配置(local.conf或层配方),确认未引入其他网络管理包(如network-manager、dhcpcd),仅保留connman作为网络管理组件。若有多余包,从构建配置中移除后重新编译镜像。

5. 重新确认Connman配置

执行以下命令重新配置并验证静态IP状态:

# 重新配置静态IP
connmanctl config eth_<mac_address>_cable --ipv4 manual 10.78.113.71 255.255.252.0 10.78.112.1
# 查看服务状态,确认IPv4.method为manual
connmanctl services

内容的提问来源于stack exchange,提问作者Jeanot Zubler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:57:16