6

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..)

2

5 Answers 5

4

I had exactly the same problem.

I fixed it by editing /etc/init.d/isc-dhcp-server and adding a sleep 10 at the top.
I tried sleep 5 but it wasn't enough.

Hopefully it will work for you too.

2
  • 2
    this looks a bit random... what if networking takes 11 seconds to get ready?
    – Stefano
    Jun 6, 2017 at 9:33
  • 1
    I would add it at the top start_daemon() function, else it would sleep even on a restart or status request.
    – Nijboer IT
    Sep 17, 2019 at 5:57
2

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 running ifup -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:

start on stopped networking

exec /etc/init.d/isc-dhcp-server start

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:

start on stopped bridge-network-interface br0

exec /etc/init.d/isc-dhcp-server stop

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.

2

Put the correct interfaces into /etc/default/isc-dhcp-server. In my case:

INTERFACES="br0 eth2"
0

None of the above worked for me, I finally got it working by adding these lines to my rc.local script

sleep 10
/etc/init.d/isc-dhcp-server start

Without the sleep 10, this had no effect, I also had trouble getting the default route to stick as well, so I added

route add default gw 192.168.1.1 eth1

(I don't have an eth0, never have understood why)

0

Try this, it worked for me:

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

I removed the file because it says manual inside the file.

Not the answer you're looking for? Browse other questions tagged .