Apparently the isc-dhcp-server is started too early in the boot sequence, it states that it has nothing to do. If I just log directly in as root and start it using the init.d-script, it starts normally.
My setup is basically an utterly standard router, with an eth0 on the inet side, and an eth1 on the lan side. However, I've defined a bridge instead of the eth1 for the lan-side. Thus, the lan-part of the network isn't up until the bridge is up.
I currently believe that the dhcp server is brought up before the bridge is brought up, probably because the bridge is brought up with the 'networking' task, while the eth's are taken up with the 'network-interface' tasks - which are run earlier. (also, the bridge takes a small age to get up compared to the eth's).
If I do take away the bridge config, instead using eth1 directly for the lan side, things work. (However, judging by syslog, things are still tight.)
Ideas of how the get DHCP to start later?
(The reason for the bridge, is to be able to use KVM with bridged networking..)
I had exactly the same problem.
I fixed it by editing
/etc/init.d/isc-dhcp-server
and adding asleep 10
at the top.I tried
sleep 5
but it wasn't enough.Hopefully it will work for you too.
Network interfaces are up only after the
networking
task is done in the upstart sequence.You can see at the configuration of the task in/etc/init/networking.conf
that the only thing that it does is runningifup -a
. I fixed the startup sequence by removing the isc-dhcp-server symlinks from/etc/rc?.d
folders and adding a new task for the upstart. The only thing you have to do is to add a config file/etc/init/dhcp_start.conf
and edit it to something like this:It is a nasty hack, but works. You can also add another task to gently shutdown the dhcpd on another event, like for my network:
I found somewhere else that people say to start dhcp on started networking instead of stopped networking. It is essentially wrong since the interfaces are configured only after
ifup -a
command exits and not when it is brought to life. It worked for them only accidently because ifup executing in parallel to dhcp was quite fast to finish.Put the correct interfaces into
/etc/default/isc-dhcp-server
. In my case:None of the above worked for me, I finally got it working by adding these lines to my rc.local script
Without the sleep 10, this had no effect, I also had trouble getting the default route to stick as well, so I added
(I don't have an eth0, never have understood why)
Try this, it worked for me:
I removed the file because it says manual inside the file.