由于启动顺序错误,DHCP 服务器无法在启动时启动

由于启动顺序错误,DHCP 服务器无法在启动时启动

显然,isc-dhcp-server 在启动顺序中启动得太早了,它表示它无事可做。如果我直接以 root 身份登录并使用 init.d 脚本启动它,它就会正常启动。

我的设置基本上是一个完全标准的路由器,在 inet 端有一个 eth0,在 lan 端有一个 eth1。但是,我为 lan 端定义了一个网桥而不是 eth1。因此,在网桥启动之前,网络的 lan 部分不会启动。

我目前认为 dhcp 服务器是在网桥启动之前启动的,可能是因为网桥是通过“网络”任务启动的,而 eth 是通过“网络接口”任务启动的 - 这些任务运行得更早。(而且,与 eth 相比,网桥的启动时间更短)。

如果我确实删除了桥接配置,而是直接将 eth1 用于局域网端,那么一切就都正常了。(但是,根据系统日志判断,情况仍然很紧张。)

关于如何让 DHCP 稍后启动的想法?

(使用桥接器的原因是为了能够使用带有桥接网络的 KVM。)

答案1

我也遇到了同样的问题。

我通过编辑/etc/init.d/isc-dhcp-serversleep 10在顶部添加 来修复它。
我试过了sleep 5,但还不够。

希望它也适合你。

答案2

只有networking在 upstart 序列中完成任务后,网络接口才会启动。您可以在任务配置中看到/etc/init/networking.conf它所做的唯一一件事就是运行ifup -a。我通过从文件夹中删除 isc-dhcp-server 符号链接并为 upstart 添加新任务来修复启动序列/etc/rc?.d。您唯一需要做的就是添加一个配置文件/etc/init/dhcp_start.conf并将其编辑为如下所示的内容:

在停止网络时启动

执行/etc/init.d/isc-dhcp-server启动

这是一个卑鄙的黑客行为,但确实有效。您还可以添加另一个任务,以便在发生其他事件时轻轻关闭 dhcpd,例如对于我的网络:

在已停止的桥接网络接口 br0 上启动

执行/etc/init.d/isc-dhcp-server stop

我在其他地方发现人们说在启动网络时启动 dhcp,而不是在停止网络时启动 dhcp。这本质上是错误的,因为接口仅在ifup -a命令退出后配置,而不是在命令启动时配置。它只是偶然对他们起作用,因为 ifup 与 dhcp 并行执行完成得相当快。

答案3

将正确的接口放入/etc/default/isc-dhcp-server。就我的情况而言:

INTERFACES="br0 eth2"

答案4

试试这个,它对我有用:

rm /etc/init/isc-dhcp-server.override

我删除了该文件,因为文件里面写着手册。

相关内容