Date: Wed, 30 Nov 2005 10:55:47 -0800 (PST) From: Luke Dean <LukeD@pobox.com> To: "Ian D. Leroux" <ian_leroux@fastmail.fm> Cc: freebsd-stable@freebsd.org Subject: Re: Restarting ntpd on address change Message-ID: <20051130105535.M796@border.crystalsphere.multiverse> In-Reply-To: <1133316076.522.28.camel@localhost> References: <1133316076.522.28.camel@localhost>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051130105535.M796>
