我的一位同事目前正在尝试修复 Raspberry Pi 3 机器(最新版 Rasbian)的问题。isc-dhcpd-server
在另一个类似的设置上运行没有任何问题。在/etc/dhcp/dhcpd.conf
两个系统内都可以找到相同的内容,包括配置,其中明确指出必须使用subnet
192.168.100.x 和255.255.255.0:netmask
# example.org domain and domain name servers configuration
# ...
ddns-update style none;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
option domain-name "project.test";
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.253;
}
由于某种原因,dhcp 服务器会自动从完全不同的网络分配一个 IP 地址(请注意,Raspberry Pi 未连接到任何路由器等,并且环境没有连接到其他设备或互联网:
root@rpi:~$ ifconfig
eth0 169.254.221.127 netmask 255.255.0.0 broadcast 169.254.255.255
lo ...
我不熟悉 dhcp 服务器以及使其正常工作所涉及的所有配置,所以我可能遗漏了一些显而易见的东西。是否还有其他位置需要更改此配置?
递归内部搜索/etc
grep -rnw * -e "169.254.*"
返回(在两台机器上)两个匹配项 - 一个在配置文件一个网络。 这配置文件这是我从未听说过的。至于网络- 这是link-local
设置,而且看起来这是许多系统上的默认值(包括运行 Xubuntu 16.04 的我自己的虚拟机)。
答案1
此地址不是由 DHCP 分配的。该169.254.0.0/16
范围适用于“zeroconf”地址 - 系统自行挑选的本地链路地址,最常用作为 DHCP 不可用时的后备。如果你看到这个地址但不是常规地址,它可能意味着几件事:
您的 DHCP 客户端无法获取租约并放弃。
或者您的网络配置文件实际上设置为“仅本地”(在 NetworkManager 或类似工具中)。
与往常一样,如果你的 DHCP 客户端和服务器没有做它们应该做的事情,调查他们是正在做– 检查系统日志,使用数据包捕获工具(Wireshark/tcpdump)等等。
- dhcpd 守护进程是否正在运行?
- rpi 使用什么 DHCP 客户端?它正在运行吗?您可以在详细模式或调试模式下运行它吗?
- 客户端是否发送 DHCPDISCOVER,而服务器是否以 DHCPOFFER 应答?
- 客户端是否发送了 DHCPREQUEST,而服务器是否以 DHCPACK 应答?
该/etc/networks
文件并不重要。它的唯一用途(类似于 /etc/hosts)是为网络前缀分配显示名称,例如在运行命令时route
。同样,/etc/gai.conf
仅包含对 DNS 查找结果进行排序的优先级 - 与 DHCP 无关。