显然,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-server
并sleep 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
我删除了该文件,因为文件里面写着手册。