conf/144700: [rc.d] async dhclient breaks stuff for too many people, synchronous_dhclient should be enabled by default

Dmitry Marakasov amdmi3 at
Fri Mar 12 16:40:02 UTC 2010

>Number:         144700
>Category:       conf
>Synopsis:       [rc.d] async dhclient breaks stuff for too many people, synchronous_dhclient should be enabled by default
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 12 16:40:01 UTC 2010
>Originator:     Dmitry Marakasov
>Release:        FreeBSD 8.0-RELEASE i386
System: FreeBSD hades.panopticon 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Tue Nov 24 22:31:59 MSK 2009 root at hades.panopticon:/async/obj/usr/src/sys/HADES i386

Recently I've seen just too many cases when the default way dhclient is ran breaks stuff for people (samba, ntpd, other services don't start with lots of errors, because resolving or routes are not set up), so, though there exists related conf/133987, I though this should be submitted again with critical status.

As far as I remember, the reason we don't have synchronous_dhclient="YES" by default (which will fix things for all these people) is for the sake of mobile users who don't always have interfaces up on boottime.
However I don't believe we have more mobile than stationary users, so to benefit most I think we should at have synchronous_dhclient="YES" by default. In addition, this setting is much easier to debug - as dhclient popping up on boot when it's not desired, leads to obvious conclusion that it should be turned off, while current setting leads to many services failing randomly, without obvious relation to DHCP - for example, ntpd is unable to resolve any server addresses and ends up without peers, doing nothing. Unless you look into logs, you won't even know it's not working.

Setup services that need networking (resolving, most commonly) at startup. Run them on DHCP-enabled system, watch them fail because by the time they're run, networking is not set up yet.
First thing, we definitely need to have synchronous_dhclient="YES" by default.

Additional changes may be useful for mobile users, for example, something like this:

Finally, we may think of some solution that delays service startups until networking is up. Not sure if that can really be useful though.

More information about the freebsd-bugs mailing list