[RFC] Automated generation of /etc/resolv.conf from the rc.d
script
John Baldwin
jhb at freebsd.org
Thu Apr 24 15:09:29 UTC 2008
On Thursday 24 April 2008 08:21:40 am John Baldwin wrote:
> On Monday 14 April 2008 11:44:13 am Eygene Ryabinkin wrote:
> > Poul-Henning, good day.
> >
> > Fri, Dec 14, 2007 at 02:07:00PM +0300, Eygene Ryabinkin wrote:
> > > Fri, Dec 14, 2007 at 10:57:38AM +0000, Poul-Henning Kamp wrote:
> > > > In message <dEZnki0Fi32EvMrDEnqcgDeNQSc at Bbw9J2Iynx0QjNoWuQ4YSitYS3A>,
> Eygene Ryabinkin writes:
> > > > >> It should be possible to run a local named even when we run DHCP,
> > > > >> and it shuld be an option, to have it automatically forward to the
> > > > >> DNS servers we learn from DHCP.
> > > > >
> > > > >This can be achieved with the script /etc/dhclient-exit-hooks that
> > > > >will create the file with named 'forwarders' clause [...]
> > > >
> > > > Yes, I know that, but I would like to see it controllable from rc.conf
> > > > like the rest of our network configuration.
> > >
> > > OK, since running local DNS instance is a neat idea, I will try to
> > > draft the modifications for the dhclient-exit-hooks, as I described
> > > in the previous mail.
> >
> > At last, I did the needed modifications: patches against 7.0 from
> > yesterday, April 13th, are attached. The first one enables the
> > creation of /etc/resolv.conf from rc.conf variables and the second
> > brings the named forwarders rewriting using values obtained via
> > DHCP. I had touched dhclient-script, but it was really needed,
> > because it is not good to have simular functionality in /etc/rc.d/resolv
> > and in the dhclient-script.
> >
> > I decided not to cope with modifications of /etc/namedb/named.conf,
> > but rather to create other file, /etc/namedb/named.forwarders.conf,
> > that should be included from the main configuration.
> >
> > I am living for two days with this configuration (DHCP + local named
> > instance) and no problems were spotted yet.
> >
> > Testing and feedback are more than welcome.
>
> You can already override the domain name and DNS servers (including either
> overriding, providing a default, or prepending or appending to the list) via
> setings in /etc/dhclient.conf, so I don't think new rc.conf variables for
> that would be warranted. Updating named.conf to forward is a neat idea.
> Howver, on my laptop on HEAD I've ended up just running nscd instead of a
> local DNS server and doing a 'nscd -I hosts' when I get a new lease to flush
> the host cache. When I get to my laptop I'll post my bits of
> dhclient-exit-hooks and dhclient.conf to make this work.
On my laptop now so here are the relevant bits:
In /etc/rc.conf:
nscd_enable="YES"
In /etc/nsswitch.conf:
hosts: cache files dns
In /etc/dhclient.conf:
append domain-name " yahoo.com freebsd.org baldwin.cx";
(This adds more domains to the 'search' line in /etc/resolv.conf.)
And my /etc/dhclient-exit-hooks (you can ignore the ntp bits):
if [ "$exit_status" -eq 0 ]; then
case $reason in
BOUND|REBOOT|TIMEOUT)
# If we have an NTP server, run ntpdate
if [ -n "$new_ntp_servers" ]; then
$LOGGER "New NTP Servers ($interface): $new_ntp_servers"
ntpdate -s $new_ntp_servers
fi
# Flush host cache since DNS may have changed
nscd -I hosts
;;
esac
fi
This will all work on 7.0 as well since it has nscd. This is also good bit
simpler than running a local DNS server if all you want to do is cache DNS
lookups.
--
John Baldwin
More information about the freebsd-current
mailing list