Restarting ntpd on address change
Luke Dean
LukeD at pobox.com
Wed Nov 30 18:55:54 GMT 2005
On Tue, 29 Nov 2005, Ian D. Leroux wrote:
> Greetings,
>
> My machine's ip address is assigned by DHCP, and whenever it changes
> ntpd stops functioning and must be restarted. I gather this behavior
> will be changed in some future ntpd version, but in the meantime I had
> added a line to my /etc/dhclient-exit-hooks to restart ntpd every time a
> new address was obtained:
>
> # [...] setup variables for ipcheck
>
> if [ -n "$new_ip_address" ]; then
> # [...] run ipcheck to update my dyndns
> /etc/rc.d/ntpd restart
> fi
>
> This seemed work fine on 5.4, but on 6.0 it gives problems at boot.
> Specifically, I get repeated "bad file descriptor" errors after my
> network address is assigned, and running ps after the boot completes
> shows that there are two ntpd processes running. Killing one of them
> stops the file descriptor errors. My interpretation of this (for what
> it's worth) is that an ntpd process gets started before dhclient gets a
> chance to configure the address (perhaps when the interface initially
> comes up) and then when the address is assigned the /etc/rc.d/ntpd
> restart starts a second process, but somehow fails to stop the first
> one. For now I've removed that line from dhclient-exit-hooks, which
> avoids the problems at boot time.
>
> I have the feeling that I'm not doing the Right Thing here. So is there
> an accepted (or at least known-good) way of automatically managing the
> restart of ntpd on address change? Have I found a bug in rc.d worth
> investigating? Or should I just stick to manual restarts until ntpd
> stops needing them?
>
> Thanks,
>
> Ian D. Leroux
I needed to solve that same problem and came up with the same solution you
did. I saw it work under 5.4 several times when my ISP did maintenance on
my upstream router. I've kept the same setup under 6 and haven't noticed
any problems yet. I've been fortunate enough to keep my IP address leased
since my upgrade to 6, so I haven't truly tested this under 6. Eventually
my ISP will do something to make me lose my lease, and if I have any
problems then, I'll post.
I run pf on this system too. If I don't reset the firewall when I get a
new IP address, I lose connectivity. That makes ntpd very upset. Here's
what I'm doing in dhclient-exit-hooks to solve both problems:
if [ "$old_ip_address" != "$new_ip_address" ]; then
case "$new_ip_address" in
10.*) ;;
172.1[6-9].* | 172.2[0-9].* | 172.3[0-1].*) ;;
192.168.*) ;;
*)
logger -t dhclient IP address changed from $old_ip_address
to $new_ip_address resetting pf
pfctl -Fa -f /etc/pf.conf
logger -t restarting ntpd
/etc/rc.d/ntpd restart
;;
esac
fi
More information about the freebsd-stable
mailing list