Dynamin/Static Resolver Table [netstat like] ( was [RFC]
resolvconf(8) interface id )
jhell
jhell at DataIX.net
Fri Jun 17 02:59:39 UTC 2011
On Thu, Jun 16, 2011 at 10:29:50PM -0400, jhell wrote:
>
>
> On Thu, Jun 16, 2011 at 01:53:17AM +0900, Hiroki Sato wrote:
> > Hi,
> >
> > I would like your comments about the following issue and proposal.
> >
> > The background is as follows. The resolvconf(8) utility has been
> > imported some time before to handle update of /etc/resolv.conf by
> > using multiple RDNSS (recursive DNS server) information sources. The
> > possible sources are ppp, rtsold, dhclient, mpd, etc. The
> > resolvconf(8) prevents /etc/resolv.conf from being overwritten by
> > multiple information sources disorderly.
> >
> > The RDNSS information is handled by resolvconf(8) in a per-interface
> > basis. When a new RDNSS entry is provided on an interface, it will
> > be registered to resolvconf(8)'s internal database with the interface
> > id, and then resolvconf(8) will update /etc/resolv.conf. The
> > resultant resolv.conf contains aggregate entries from all interfaces.
> > For example, let's consider em0 received RDNSS information via
> > dhclient(8) (DHCPv4), and tun0 received one via ppp(8) (IPCP). In
> > this case, the resolvconf(8) is invoked for each, and
> > /etc/resolv.conf will be updated with all of received information.
> > This is how the resolvconf(8) works.
> >
> > However, the case that there are two or more RDNSS information
> > sources on a single interface at the same time is still troublesome.
> > DHCPv4 + DHCPv6 or rtsol + DHCPv4 on the same interface is a good
> > example. In the latter case, rtsol and dhclient will try to register
> > RDNSS information with the same interface id. As the result, RDNSS
> > entries will be overwritten, and at worst the entries in
> > /etc/resolv.conf will flap repeatedly.
> >
> > My proposal is adding a string representing the information source to
> > the interface id which is used for resolvconf(8). Specifically, I
> > would like to propose to use the following syntax throughout
> > utilities that update /etc/resolv.conf via resolvconf(8):
> >
> > ifname:origin[:unique]
> >
> > "em0:dhcpv4" for dhclient, "em0:slaac" for rtsold, for example.
> > Using this string as an interface id, resolvconf(8) can handle
> > multiple RDNSS entries on a single interface without overwriting each
> > other. Furthermore, priority control can be done with
> > resolvconf.conf and "origin" and/or "unique" keyword in the string.
> >
> > To adopt this naming scheme, patches are needed for dhclient(8),
> > rtsold(8), and all of other resolvconf(8)-aware utilities. There is
> > almost no user-visible change; the difference is that multiple RDNSS
> > entries on a single interface are aggregated and added into
> > /etc/resolv.conf after patching them.
> >
> > Any objections to this? I am working on the necessary changes for
> > utilities in the base system and planning to commit them if there is
> > no strong objection.
> >
>
> Not meaning to thread-jack here and this may have been discussed at one
> point somewhere along the road but for dynamic utilities I would see the
> following a plus.
>
> Gosh, Wouldnt it be something if we could store our dynamic resolver
> information with the interface in the same sort of fashion that we store
> our routing tables ? and then modify our routines in the library to look
> them up via the "resolving tables" and think of resolv.conf as static
> routing information only ?
>
> If we can already do this via resolvconf(8) in order to modify
> resolv.conf how hard would it be to adjust to move in this direction ?
>
> This could also provide the ability to report how many hits on the
> nameserver per interface etc etc... among other information just as like
> what the routing information already does.
>
I appologize for the insta-reply, but thinking more along the lines of
this it may come as even more of a benefit to tie this more into the
routing table so so each route can have a dynamic nameserver attached to
it so when setfib(8) is used a whole nother batch of nameserver could
also be used or fall back to the standard resolv.conf.
More information about the freebsd-net
mailing list