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>