嵌入式Linux DHCP客户端与服务器需求怎么分清

嵌入式设备从现有网络获取自身IPv4配置时,需要DHCP客户端;为下游设备或配网手机分配网络配置时,需要DHCP服务器。网关可以同时需要这两种角色,但应分别配置在职责明确的接口上。在选择守护进程或向Linux镜像添加软件包之前,产品需求应先写清接口、配置管理方和故障行为。

本文讨论嵌入式Linux产品中的IPv4 DHCP。IPv6路由通告和DHCPv6需要另行设计。以下配置和验收测试均为工程示例与建议,不是欧蓓特项目的实测结果。

先明确安装拓扑

“支持DHCP”可能包含几种互不相同的含义。接入工厂交换机的传感器通常是客户端;维护热点可能只为技术人员的手机提供地址;路由型网关可以获取WAN地址,同时为独立LAN分配地址;网桥则可能只是将客户端广播转发给现有服务器。在这个网桥上新增服务器,会影响整个广播域。

产品角色 地址分配方式 必须记录的决策
工厂网络终端 上联接口运行客户端 IT部门管理子网、租约和DNS策略
本地配网AP 配网接口运行服务器 仅提供本地访问,还是转发互联网流量
路由型设备网关 WAN客户端与LAN服务器 独立子网及明确的转发策略
透明网桥 现有网络服务器服务下挂客户端 管理地址与广播边界

除了Linux接口名,还要标注物理端口。PCB变更、USB网卡或驱动更新都可能改变枚举顺序。将连接器、MAC地址、网桥/VLAN归属和网络角色之间的关系写入版本交付资料。

网关面向工厂网络的一侧运行DHCP客户端,独立配网侧运行DHCP服务器为手机分配地址。
图1:当接口、子网与广播边界明确时,网关可以同时运行两种DHCP角色。图中文字为英文。

规定客户端拿到首次租约之后的行为

首次地址分配通常经过发现、提供、请求和确认过程。租用的地址随后涉及有效期、续租和重新绑定;设备不能继续把已过期的租约当作有效配置使用。这些状态转换见RFC 2131。验收应覆盖后续转换,不能在一次冷启动成功后就结束。

定义应用可见的状态:链路不可用、正在获取配置、地址有效、本地网络可达、应用端点可达。DHCP确认表示取得配置,并不能证明DNS、互联网或MQTT服务可用。界面和诊断日志应能区分这些状态。

由网络管理方决定客户端是否接受默认路由和DNS、发送什么身份标识、是否支持地址保留。对照RFC 2132记录子网掩码、路由器和DNS服务器等选项要求。除非已与现场IT协调,不要让产品依赖某个固定地址。

多接口设备应明确路由优先级和DNS配置管理权。同一接口上的两个网络管理程序可能相互覆盖地址;不同接口上的两个有效租约也可能安装不符合预期的默认路由。每个接口只指定一个配置管理方,并与蜂窝管理程序、静态维护口和容器网桥共同测试。

将服务器限制在授权的网段内

配网服务器应在接口取得预定本地地址后启动。限制监听接口,并验证地址提供报文不会流入工厂上联网络。通配监听与意外网桥组合可能产生未经授权的DHCP服务器。防火墙是额外边界,不能代替正确的接口管理。

将地址分配、路由、DNS转发和NAT分别定义。手机获得地址,并不代表网关能提供互联网访问。对于仅本地配网的产品,要确定手机提示“无互联网连接”时,应用如何访问设备;即使实现了强制门户,也应验证文档规定的手动访问方式。

以下dnsmasq示例只服务专用配网网段,不通告默认路由器和DNS服务器。前提是br-setup已单独配置为192.168.77.1/24、未连接到其他有DHCP服务的网段,并且租约目录存在且可写。请根据已安装版本的dnsmasq手册核对选项。它只是实验室起点,不是完整网络或安全配置。

# Dedicated local commissioning interface only
interface=br-setup
bind-interfaces
port=0
dhcp-range=192.168.77.20,192.168.77.60,255.255.255.0,10m
dhcp-option=3
dhcp-option=6
dhcp-leasefile=/data/dhcp/setup.leases

如果产品需要转发互联网流量,应另行定义,并提供正确的路由器与DNS选项。动态创建接口时,要测试守护进程的启动和重启行为,不能假定绑定一直正确。确认下游子网与上游没有重叠;发生重叠时,应有受控的修改流程。

定义地址冲突、地址池耗尽和身份持久性

地址池大小需要考虑并发客户端、尚未过期的旧租约和配网过程中的频繁接入。手机可能使用私有Wi-Fi地址,同一部手机不一定始终保留同一个MAC身份。限制滥用请求的速率,并明确地址池满时安装人员看到什么提示。

决定服务器租约是否跨重启保存。丢失租约数据库不一定立即引发冲突,但会改变安全复用地址时可参考的信息。按预定持久化策略保存租约,并在现有客户端持续在线的情况下测试服务器重启。不要为修复一个DHCP问题而随意清空设备的全部设置。

IPv4地址重复应有可见故障提示和恢复策略。RFC 5227描述了使用ARP检测地址冲突的机制。核对实际客户端与服务器栈实现了哪些行为,并抓取冲突流量。某台机器能ping通,并不排除另一台主机也在间歇性地回应同一地址。

使用面向故障的验收矩阵

故障注入 观察内容 建议通过条件
开机时服务器缺席,随后恢复 重试时序、CPU、应用状态 资源使用有界,并在约定恢复时间内自动取得配置
使用较短测试租约,先阻断续租,再阻断全部响应 续租、重新绑定、过期状态 应用不使用过期租约;服务恢复后无需重启设备
DHCP更改路由器或DNS 路由、解析器和已有连接 新配置生效;应用按策略重建连接
客户端在线时重启服务器 租约数据库和重复分配 测试客户端范围内不出现重复地址分配
地址池耗尽或静态主机地址冲突 日志与安装界面提示 报告具体故障;按规定恢复且不损坏无关设置
WAN与配网AP同时工作 两个接口上的抓包 配网DHCP提供报文局限于指定网段

根据安装需求与支持的租约范围确定时间阈值。每份结果都应记录租约长度、固件版本、守护进程配置、路由器型号和测试客户端系统。对于DHCP服务器,应覆盖支持的手机与电脑系列;单台笔记本成功不足以证明移动端配网流程兼容。

从第一个缺失的状态转换排查

在获得授权的实验室里逐个接口抓包。以下为诊断命令示例,接口名和可用工具随镜像而异:

ip -br link
ip -4 address show dev eth0
ip -4 route show
tcpdump -ni eth0 -vv 'udp port 67 or udp port 68 or arp'

没有发现报文,先检查接口、进程或配置管理权;有发现报文但没有地址提供,检查VLAN、服务器、中继和过滤;已收到确认却没有可用地址,检查客户端钩子脚本和网络管理程序集成;地址有效但域名失败,检查DNS;DNS正常但服务失败,转向应用诊断。保留时间戳和事务ID,向项目以外分享抓包前应脱敏客户端标识。

把拓扑转化为交付范围

欧蓓特的设备联网服务可以作为定义接口角色和网络验收的起点。已交付的RK3528网络网关项目展示了不同以太网通路与拟定的LAN/WAN角色,但并不代表已在您的网络中验证DHCP行为。

评估时请提供连接器/VLAN拓扑、客户端规模、现场DHCP约束、本地配网要求和当前镜像。在把“支持DHCP”作为交付勾选项之前,先约定配置管理方、故障提示、抓包方法和测试矩阵。

类似文章