[RFC] resolvconf(8) interface id

Hiroki Sato hrs at FreeBSD.org
Wed Jun 15 16:54:09 UTC 2011


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.

-- Hiroki
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20110615/76e11573/attachment.pgp


More information about the freebsd-net mailing list