好,我给你把 udhcpc
讲详细一点,让你不仅知道它怎么用,还知道它在系统里到底干了什么。
1. udhcpc
是什么
- 全称:Micro DHCP Client
- 是 BusyBox 提供的一个轻量级 DHCP 客户端,常用在嵌入式 Linux、路由器、IoT 设备上。
- 作用:向 DHCP 服务器(例如路由器)请求 IP 地址、网关、DNS 等网络参数,并配置到系统网卡。
简单理解:udhcpc
就是给你的设备“自动申请 IP”的工具,类似桌面 Linux 里的 dhclient
,但更轻、更快。
2. 基本用法
获取 IP 地址
udhcpc -i eth0
-i eth0
:指定网卡- 运行后会广播 DHCP 请求,收到服务器响应后自动配置 IP、网关和 DNS。
后台运行(daemon 模式)
udhcpc -i eth0 -b
-b
:获取 IP 后进入后台运行,保持租约,定期续租。
指定主机名
udhcpc -i eth0 -x hostname:mydevice
- 向 DHCP 服务器报告自己的主机名(有些路由器会显示)。
指定请求的 IP
udhcpc -i eth0 -r 192.168.1.100
- 尝试向服务器申请指定的 IP(是否能成功取决于服务器是否同意)。
3. 工作机制
udhcpc
运行时主要做三步:
- 发送 DHCP Discover → 广播找 DHCP 服务器。
- 等待 Offer → 服务器返回可用 IP 和配置信息。
- 发送 Request 并获取 Ack → 确认使用这个 IP,并应用到网卡。
它在这个过程中会调用一个 脚本 hook(默认 /usr/share/udhcpc/default.script
或 /etc/udhcpc/default.script
),负责:
- 配置
ip addr
(给网卡分配 IP) - 配置
ip route
(设置默认网关) - 修改
/etc/resolv.conf
(配置 DNS)
所以如果你发现 IP 申请成功但网卡没配置好,大概率是这个脚本缺失或没执行。
4. 常用参数表
参数 | 说明 |
---|---|
-i <iface> | 指定网卡(必选) |
-b | 后台运行 |
-n | 如果没获取到 IP 直接退出(默认会一直重试) |
-q | 安静模式(不输出日志) |
-x hostname:<name> | 指定主机名 |
-r <ip> | 请求指定 IP |
-s <script> | 使用自定义配置脚本 |
-p <file> | 写入 PID 到文件 |
-v | 输出详细调试信息 |
5. 示例:手动获取 IP 并应用
假设网卡是 eth0
:
ip link set eth0 up
udhcpc -i eth0 -n -q
- 先启动网卡
- 再用
udhcpc
获取 IP -n
失败直接退出,-q
安静模式
6. 停止 udhcpc
如果想停止 DHCP 客户端(例如改成静态 IP):
killall udhcpc
或者:
pkill udhcpc
7. 调试技巧
查看 DHCP 流程:
udhcpc -i eth0 -v
如果服务器没响应,可能是:
- 网线/无线连接问题
- DHCP 服务没开
- VLAN/防火墙阻止广播包
发表回复