我正在使微控制器为dhcp服务,并且它可以正常工作。但是,它仅在其他设备正在广播dhcp请求时才起作用。如果设备放弃了请求dhcp ip并为其分配了本地链接地址(169.254.x.x),则我的微控制器似乎没有为其提供地址。但我注意到,即使设备具有本地链接地址,我的路由器也能够为设备分配dhcp地址。我想知道我是否不能正确提供dhcp。我正在使用linux并使用udhcpd.conf运行/ usr / sbin / udhcpd以启动dhcp服务。这是我的udhcpd.conf:
# The start and end of the IP lease block
start 10.78.0.2
end 10.78.255.200
# The interface that udhcpd will use
interface eth0
opt dns 8.8.8.8 8.8.4.4 #public google dns servers
option subnet 255.255.0.0
opt router 10.78.0.1
option lease 864000 # default: 10 days
# Arbitrary option in hex form:
option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4"
这是我的接口文件(修改为仅显示eth0)
# The loopback interface
auto lo
iface lo inet loopback
# Wired or wireless interfaces
auto eth0
iface eth0 inet dhcp
这是我用来启动dhcp服务器的脚本
ifconfig eth0 10.78.0.1
/usr/sbin/udhcpd -f -S /etc/udhcpd.conf
我不想在接口文件中为eth0分配一个静态ip,因为有时我想关闭dhcp服务器并将eth0设为客户端,以便为它提供IP地址。为什么我的dhcp服务器无法将地址分配给具有本地链接地址的设备的任何想法?
这里有很多可能性。要记住一些事情。
DHCP请求是由客户端而不是由DHCP服务器发起的。如果您的无线客户端没有无线连接,则其地址为169.254.x.x。建立无线连接后,客户端将启动DHCP请求并获取IP。假设您在这里谈论的是无线路由器。
如果您的客户端已经建立了物理或无线连接,然后您提供了DHCP服务,则不会触发来自客户端的DHCP请求。这是设计使然,这里没有什么错,您只需要从客户端启动DHCP请求即可。