Fix typo
[resolvconf/resolvconf.git] / README
1                           README file for
2                             resolvconf
3
4 Contents
5 ~~~~~~~~
6 News
7 Introduction
8 Rationale
9 HOWTO
10 Order of entries in resolv.conf
11 Requirements
12 Technical overview
13 Usage information for developers
14 Usage information for maintainers
15 Usage information for administrators
16 FAQ
17 TODO
18 DONE
19 Credits
20
21 News
22 ~~~~
23 * Last updated 8 May 2014 for version 1.75
24
25 Introduction
26 ~~~~~~~~~~~~
27 Resolvconf is a framework for keeping track of the system's information about
28 currently available nameservers.  It sets itself up as the intermediary
29 between programs that supply nameserver information and applications that need
30 nameserver information.
31
32 Rationale
33 ~~~~~~~~~
34 /etc/resolv.conf was once a simple static configuration file where the
35 sysadmin placed a few directives that rarely needed to be changed.  That
36 changed with the advent of mobile computing: a computer can now move from one
37 network to another quite often.  Debian currently includes many packages that
38 alter resolv.conf more or less automatically.  Some of them are listed below,
39 along with a short description of what they do which I have tried to keep up
40 to date.  (Figures in parentheses show the number of the package's
41 popularity-contest votes as of 5 January 2005.)
42
43 pcmcia-cs (914)
44     Can overwrite resolv.conf with no backup unless (as of 3.2.5-1)
45     resolvconf is installed.  By default, doesn't.
46 ppp (4533)
47     pppd optionally overwrites /etc/ppp/resolv.conf .  By default, does.
48 pppconfig (3702)
49     Moves resolv.conf out of the way and puts it back when done.
50 pppoeconf (2938)
51     Prior to version 1.0, overwrites resolv.conf, attempting to merge
52     its stuff with the existing contents.  Creates a backup in /etc/ but
53     doesn't restore it.
54 gnome-ppp (24)
55     Contains experimental code, currently commented out, that overwrites
56     resolv.conf.
57 gnome-system-tools (1349)
58     Allows the user to write directly to /etc/resolv.conf.
59 systemconfigurator (94)
60     Allows the user to write directly to /etc/resolv.conf.
61 webmin (781)
62     Prior to version 1.150-2, the Network Configuration|DNS Client page
63     can make changes to /etc/resolv.conf.  As of 1.150-2 this page is
64     read-only when resolvconf is installed.
65 webmin-wvdial (8)
66     Copies /etc/ppp/resolv.conf over /etc/resolv.conf after PPP
67     connection established unless (as of version 1.160-3) the latter is
68     a symbolic link; restores original contents from backup file when
69     the connection is broken.
70 xisp (1 -- removed)
71     Adds lines to /etc/resolv.conf on PPP interface up and deletes those
72     lines on interface down.
73 totd (5)
74     Prior to 1.4-4, PPP hook scripts can do things to /etc/resolv.conf
75     but SFAICT are effectively no-ops if resolvconf is installed.  Hard
76     to tell.  Postinst does things to /etc/resolv.conf and also rewrites
77     dhclient_enter_hooks in a way incompatible with resolvconf.  As of
78     1.4-4 totd plays nicely with resolvconf. As of Wheezy, totd is gone
79     from Debian.
80 dhcp-client (4005)
81     Prior to version 2.0pl5-17, overwrites resolv.conf without making a
82     backup.
83 dhcp3-client (676)
84     Overwrites resolv.conf unless make_resolv_conf() is redefined.
85     Resolvconf redefines it.
86 dhcpcd (104)
87     Optionally overwrites resolv.conf .  Default is not to do so.  Prior
88     to version 1:1.3.22pl4-8, hook script overwrites
89     /etc/dhcpc/resolv.conf unless (as of 1:1.3.22pl4-7) resolvconf is
90     installed.
91 pump (734)
92     Prior to version 0.8.15, blindly overwrites resolv.conf unless nodns
93     option is used.  No backup.  As of version 0.8.15 pump calls
94     resolvconf if it is installed instead of overwriting
95     /etc/resolv.conf.
96 udhcpc (44)
97     Prior to version 0.9.8cvs20050124-2, blindly overwrites resolv.conf
98     without making a backup.
99 netenv (43)
100     Contains sample code that, if uncommented, would overwrite
101     /etc/resolv.conf without backing it up
102 switchconf (12)
103     Forcibly links selected resolv.conf file into place without making a
104     backup.
105 divine (9)
106     Symlinks-in a resolv.conf for the selected network.  Appears to
107     trash whatever was in resolv.conf when it starts.
108 intuitively (18)
109     If a resolv.conf file is included in /etc/intuitively/NETWORK,
110     blindly overwrites /etc/resolv.conf .
111 laptop-netconf (23)
112     Symlinks in a resolv.conf for the detected network.  Seems to make a
113     backup of resolv.conf but doesn't restore it.
114 whereami (23)
115     Contains utility scripts that modify resolv.conf
116 laptop-net (42)
117     Overwrites resolv.conf unless (as of 2.20) resolvconf is installed.
118
119 Several other packages recommend to the user that scripts be written to alter
120 or replace resolv.conf.
121
122 Third-party software packages also futz with /etc/resolv.conf. Among them
123 are the Cisco AnyConnect, Juniper AnyConnect and FortiClient SSL VPN clients.
124
125 These packages do not cooperate; they simply overwrite one another's changes.
126 Even those that back up and restore the file will corrupt it if interfaces are
127 brought up and down in other than a LIFO order.  Few of them support the use
128 of a local DNS cache.
129
130 Resolvconf (555) has been written in order to provide a framework for managing
131 the resolv.conf file in an way that avoids the above problems.
132
133 HOWTO
134 ~~~~~
135 Resolvconf works with most interface configurers in Debian ('(*)' below
136 meaning "with some manual configuration"): 
137
138    isc-dhcp-client, dhcpcd, pump, udhcpc
139    ppp
140    ifupdown
141    network-manager
142
143 DNS caches:
144
145    bind9(*), djbdns dnscache, dnsmasq, nscd, pdnsd
146
147 DNS recursing nameservers:
148
149    bind9(*), pdns-recursor(*), unbound
150
151 and with any program that uses a DNS client library that consults
152 /etc/resolv.conf to obtain its list of nameservers:
153
154    the GNU C Library resolver library
155    adns
156    the djbdns resolver library
157    FireDNS
158
159 Take the following steps to set things up.  Unfortunately, it is not always
160 simply a matter of installing the resolvconf package -- especially if you have
161 already tried to deal with the above problems locally by customizing your
162 configuration.
163
164 1. You may have already installed resolvconf at this point.  OK.
165 2. Stop obsolete programs from writing to /etc/resolv.conf
166   * netenv
167     + Purge or make sure that /sbin/netenv hasn't been configured such
168       that it overwrites /etc/resolv.conf
169   * switchconf
170     + Purge or make sure that there are no resolv.conf files under the
171       /etc/switchconf/ directory
172   * xisp
173     + Purge
174   * divine
175     + Purge
176   * intuitively
177     + Purge
178   * laptop-netconf
179     + Purge
180   * whereami
181       Purge or make sure that you aren't using the "setresolver",
182       "bind-forwarders" or "setdnsmasq" utility scripts.
183   * etc.
184       Delete or disable local scripts of any kind that futz with
185       /etc/resolv.conf
186 3. Configure packages not to overwrite /etc/resolv.conf and to work
187    properly with resolvconf
188   3.1 ppp
189     * Make sure that the usepeerdns option is used.  With this option,
190       pppd will obtain nameserver addresses from the peer and these will
191       be added to resolvconf's database.
192   3.2 pump
193     * Make sure that neither the nodns nor the noresolvconf option is
194       used -- either in pump.conf or on the command line
195   3.3 dhcpcd
196     * Make sure that SET_DNS is not set anywhere in /etc/dhcpc/config .
197       (In recent versions of dhcpcd, on initial installation, SET_DNS
198       is not set.)
199   3.4 ifupdown
200     * Remove any "up" or "down" commands from /etc/network/interfaces
201       that futz with /etc/resolv.conf and remove any scripts from
202       /etc/network/if-*.d/ that futz with /etc/resolv.conf.
203     * For each inet static logical interface through which a nameserver is
204       accessible, add lines like the following to /etc/network/interfaces .
205
206           dns-nameserver 11.22.33.44
207           dns-nameserver 55.66.77.88
208           dns-search foo.org bar.com
209
210       The option "dns-sortlist" is also available but rarely used.  These
211       option names correspond to the option names used in the resolv.conf
212       file. See resolv.conf(5) for more information.  The lines entered
213       in /etc/network/interfaces will be added to the resolver
214       configuration file (without the "dns-" prefix, of course) when a
215       physical interface is brought up as that logical interface.
216       Note that the resolver configuration is updated AFTER all the "up"
217       commands have been run; therefore "up" commands cannot make use of
218       nameservers listed on "dns-nameserver" lines in the same logical
219       interface stanza.  Changing this will require modifying ifupdown
220       so that it talks to resolvconf; currently resolvconf hooks into
221       ifupdown using the script /etc/network/if-up.d/000resolvconf. Note
222       too that scripts in /etc/network/if-up.d/ CAN make use of the
223       added nameservers because those scripts run after 000resolvconf.
224   3.5 bind9
225     * To make bind9 supply its nameserver address 127.0.0.1 to resolvconf,
226       set RESOLVCONF=yes in /etc/default/bind9.
227     * To make bind9 use nameserver addresses supplied by other sources as
228       addresses of forwarders, either (1) pursuade the maintainers of the
229       bind9 package to implement this feature (as already requested at
230       http://bugs.debian.org/483098) or (2) add a hook script to
231       /etc/resolvconf/update.d/ which writes out a configuration file
232       fragment and then tells named to re-read is configuration.  A sample
233       hook script meeting this description has been provided in
234       /usr/share/doc/resolvconf/resolvconf-update-bind.
235 4. Install the resolvconf package if you have not already done so.
236    If you have already done so then consider dpkg-reconfigure'ing it.
237    Agree to symlink /etc/resolv.conf to /etc/resolvconf/run/resolv.conf.
238    You can decline the offer to append the original static resolver
239    configuration file to the end of the dynamically generated resolver
240    configuration file because you have already modified
241    /etc/network/interfaces as directed above.
242 5. Reboot
243 6. Check /etc/resolv.conf to make sure that its contents make sense.
244
245 If /etc/resolv.conf is not symlinked to /etc/resolvconf/run/resolv.conf then
246 a warning message will be printed when /sbin/resolvconf is run.  If you want
247 to keep resolvconf installed but for some reason do not want /etc/resolv.conf
248 to be symlinked to /etc/resolvconf/run/resolv.conf then you can disable the
249 warning message by setting REPORT_ABSENT_SYMLINK=no in
250 /etc/default/resolvconf.
251
252 Order of entries in resolv.conf
253 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
254 Some of the information in the resolver configuration file consists of a set
255 of entries whose order is significant.  Specifically, the order of nameserver
256 lines
257
258     nameserver x1.x2.x3.x4
259     nameserver y1.y2.y3.y4
260
261 determines the order in which nameservers are consulted and the order of items
262 on the search line
263
264     search da1.da2.org db1.db2.com
265
266 determines the order in which domain names are tried.
267
268 Resolvconf orders these entries according to the names of the interfaces to
269 which they relate.  (More truthfully, it orders them according to the record
270 names in which they are stored, but it is a convention that records are named
271 like the interfaces for which they are the records, possibly with some suffix.)
272 The particular order is determined by the /etc/resolvconf/interface-order file.
273 See interface-order(5) for more information.
274
275 If you use ifrename, nameif or udev in order to assign stable names to your
276 network interfaces, I recommend that you employ names that begin with the
277 traditional pattern but differ from those names that the kernel uses as
278 defaults.  E.g., the kernel names Ethernet interfaces 'eth0', 'eth1', and so
279 on, so you might rename your Ethernet interfaces to "eth_3com", "eth_cisco",
280 etc.  Similarly you might rename your Wi-Fi interfaces "wlan_airo" and
281 "wlan_atmel".  If you follow this advice then you won't have to modify the
282 default interface-order file.
283
284 Using a static file to order the entries is obviously not very flexible;
285 however, it is adequate in most usage situations.  Situations for which it is
286 not adequate are generally situations in which it is better to use a local
287 caching nameserver that can do things like monitoring and load balancing.
288
289 Requirements
290 ~~~~~~~~~~~~
291 I hope that resolvconf satisfies the following requirements.
292 * Be opaque
293     Resolvconf must be as opaque as possible.  It must have a stable
294     interface and mustn't require that maintainers know about its
295     internals.
296 * Be order-independent
297     Interfaces going up and down in arbitrary order must be handled
298     properly.
299 * Be locally configurable
300     Administrator choices must be respected.
301 * Support DNS caches
302     Local DNS cache programs must be able to arrange for nameserver
303     addresses supplied by interfaces to be passed to them for use as
304     forwarders.  The libc resolver should use any local DNS caches that
305     are available.
306 * Be compatible with a read-only root filesystem
307     Variable files must be easily relocated out of /etc/.
308 * Be portable
309 * Be simple
310
311 Technical overview
312 ~~~~~~~~~~~~~~~~~~
313 * The /etc/resolvconf/ directory contains:
314   + resolv.conf.d/
315     Files related to the libc resolv.conf file
316     - resolv.conf.d/head
317       The head of the dynamically generated resolv.conf
318     - resolv.conf.d/tail
319       The tail of the dynamically generated resolv.conf
320     - resolv.conf.d/base
321       Information always included in the resolv.conf file.  Dynamic
322       information gets merged with this information.  E.g., if base
323       contains 'search a.b.c' and another record is added that contains
324       'search x.y.z' then the resulting file will have
325       'search a.b.c x.y.z'.
326   + run/
327     Symbolic link to /run/resolvconf/
328   + update.d/
329     Scripts to run when nameserver information is updated
330   + update-libc.d/
331     Scripts to run when the resolv.conf file changes
332 * Symlink /etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
333 * Configurers of interfaces call /sbin/resolvconf to provide
334   resolv.conf-like information after the interface is brought up.  They
335   call it again to delete the information when the interface is brought
336   down.  /sbin/resolvconf then does the equivalent of
337   "/etc/init.d/resolvconf reload".
338 * "/etc/init.d/resolvconf reload" calls scripts in
339   /etc/resolvconf/update.d/ which update DNS cache configuration file
340   fragments, reload daemons and regenerate /etc/resolv.conf.  If
341   the latter has changed then scripts in /etc/resolvconf/update-libc.d/
342   are run.
343
344 Usage information for developers
345 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346 Interface configurers send resolver information to resolvconf in the format
347 of the familiar /etc/resolv.conf file.  Thus, for example, a program foo that
348 has configured interface $IFACE would do the following after generating a
349 resolv.conf file named 'new-resolv.conf'.
350
351       resolvconf -a "${IFACE}.foo" < new-resolv.conf
352
353 This command updates the resolver information related to interface $IFACE and
354 configurer foo.  Any information previously sent for this interface/configurer
355 combination is overwritten.  On bringing the interface down, the configurer
356 (foo) would do the following.  
357
358       resolvconf -d "${IFACE}.foo"
359
360 For another example, the proxy script for pppd forwards to resolvconf the
361 resolver information that is made available to ip-up.d/ and ip-down.d/ scripts
362 in environment variables DNS1, etc.
363
364       echo "nameserver $DNS1" | resolvconf -a "${IFACE}.pppd"
365
366 For additional examples, look at the hook scripts for isc-dhcp-client and
367 ifupdown.  Support for other configurers including dhcpcd, pump and udhcpc has
368 been added to those packages.
369
370 In general, any package that currently overwrites /etc/resolv.conf can be
371 adapted to work with resolvconf while preserving backward compatibility by
372 introducing a code fragment like the following.
373
374     MYNAME=foo
375     if [ -x /sbin/resolvconf ] ; then
376       if [ "$DIRECTION" = "up" ] ; then
377          echo -n "$RESOLVINFO" | /sbin/resolvconf -a "${IFACE}.${MYNAME}"
378       else
379          /sbin/resolvconf -d "${IFACE}.${MYNAME}"
380       fi
381     else
382          # Do clever things to /etc/resolv.conf
383     fi
384
385 /sbin/resolvconf stores the information sent to it and then runs the scripts
386 in /etc/resolvconf/update.d/ .  One of the latter generates the libc resolver
387 configuration file.  Others generate lists of forwarders for dnsmasq or pdnsd
388 to use.  Any other program that needs to take action when resolver information
389 is updated could likewise employ a script in /etc/resolvconf/update.d/ .
390
391 Usage information for maintainers
392 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
393 Normally, when the resolvconf package is first installed the resolvconf
394 program takes control of /etc/resolv.conf: it writes the file
395 /run/resolvconf/resolv.conf to which /etc/resolv.conf is a symbolic link.
396 Resolvconf derives the contents of that file from nameserver information
397 that has been sent to it by other programs, as described above.
398
399 Resolvconf is not part of the base system in Debian; it is generally
400 installed on a Debian system after the system has fully booted.  At that point
401 interface configurers have already configured the machine's network interfaces
402 and obtained nameserver information.  A local forwarding nameserver may also
403 have started.  Because resolvconf is installed only later, the latter programs
404 have not sent their nameserver information to resolvconf.  This means that
405 after installation resolvconf does not have complete nameserver information.
406 The most reliable solution to this problem is to reboot.  After reboot, all
407 other programs detect resolvconf's presence when they start or configure
408 interfaces and send their information to resolvconf and/or obtain their
409 nameserver information from resolvconf.  But Debian rightly discourages
410 requiring the administrator to reboot, so the resolvconf package has been so
411 designed that it partially addresses the problem just outlined, in the manner
412 described below.  (In the future the problem may be fully solved, but this
413 will require the cooperation of other Debian package maintainers.  This is
414 less of a problem in Ubuntu, where resolvconf is part of the base system.)
415
416 In order partially to address the problem of resolvconf having incomplete
417 information after installation until the first reboot, resolvconf includes
418 the entire contents of the original (i.e., pre-resolvconf-installation)
419 resolv.conf in its runtime database.  Consequently, nameserver addresses are
420 not lost when resolvconf is installed.  Unfortunately this also means that
421 those addresses are not removed when interfaces are brought down.
422
423 Another way that the resolvconf package helps to address the problem is to
424 allow other parties to call /sbin/resolvconf as soon as it appears in the
425 filesystem: nameserver information can be registered with resolvconf before
426 the resolvconf's postinst runs.  This means that when, for example, dnsmasq
427 and resolvconf are installed in the same dpkg run, and dnsmasq happens to be
428 configured first, dnsmasq will still successfully register its nameserver
429 address with resolvconf.
430
431 The correct and complete way to solve the problem is for all suppliers of
432 nameserver information to supply their information to resolvconf after
433 resolvconf has been installed.
434
435 As of resolvconf release 1.55 this is supported via the following mechanism.
436 Any package, foo, that supports supplying information to resolvconf should
437 include a hook script /usr/lib/resolvconf/dpkg-event.d/foo which, when called
438 with the argument "install", takes whatever actions are necessary to cause the
439 program(s) in foo to supply their nameserver information to resolvconf; and
440 when called with the argument "remove" takes whatever actions are appropriate
441 given that the resolvconf package has been removed.
442
443 The hook script thus has the following form.
444
445     #!/bin/sh
446     #
447     # /usr/lib/resolvconf/dpkg-event.d/foo
448     #
449     # The resolvconf dpkg-event hook script for the foo package
450     #
451     if foo_is_running ; then
452         if [ "$1" = "install" ] ; then
453             foo-ctrl send-nameserver-info-to-resolvconf
454         elif [ "$1" = "remove" ] ; then
455             ...
456         fi
457     fi
458
459 If foo is controlled by an initscript whose methods take appropriate actions
460 conditional upon resolvconf's presence then something like the following might
461 be appropriate.
462
463         force_reload_foo() {
464             if which invoke-rc.d >/dev/null 2>&1 ; then
465                 invoke-rc.d foo force-reload
466             elif [ -x /etc/init.d/foo ] ; then
467                 /etc/init.d/foo force-reload
468             fi
469         }
470         case "$1" in
471             install|remove) force_reload_foo ;;
472         esac
473
474 The hook script is called (with argument "install") from resolvconf's postinst
475 "configure" method and (with "remove") from resolvconf's postrm "remove"
476 method.
477
478 Foo's hook script is called with argument "install" if and only if foo is
479 fully installed both when resolvconf's preinst install runs and when its
480 postinst configure runs.  The hook script is called with argument "remove" if
481 and only if foo is fully installed when resolvconf's postrm remove runs.
482
483 The hook script must be owned by root and have its execute permission bit set
484 and must have the same name as the package that owns it.
485
486 Arguments other than "install" and "remove" are reserved for future use and
487 must be silently ignored.
488
489 When the resolvconf package is installed it performs configuration actions
490 that are governed by the following two debconf settings.
491
492 1. resolvconf/linkify-resolvconf
493
494 When this is true, the package makes a single attempt to create a symbolic
495 link /etc/resolv.conf with target ../run/resolvconf/resolv.conf (Ubuntu) or
496 /etc/resolvconf/run/resolv.conf (Debian). (N.B. In both Ubuntu and Debian
497 this points ultimately to /run/resolvconf/resolv.conf .)
498
499 2. resolvconf/link-tail-to-original
500
501 When this is true, the package makes a single attempt to create a symbolic
502 link /etc/resolvconf/resolv.conf.d/tail -> original. The purpose of this is
503 to cause original nameserver configuration to be included in the dynamic
504 resolv.conf even after reboot.
505
506 In either case, after making the single attempt the package postinst writes
507 a flag file /var/lib/resolvconf/linkified whose presence causes the postinst
508 not to make another attempt to create either symlink. However, the command
509 "dpkg-reconfigure resolvconf" ignores the flag and causes the package to
510 attempt once again to create each symlink if the corresponding debconf
511 setting is true.
512
513 Usage information for administrators
514 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
515 The generation of the resolv.conf file can be controlled by editing the
516 /etc/resolvconf/update.d/libc script.  Different strategies can be followed.
517 For example, one possible strategy would be to put only the most recently
518 provided information into resolv.conf .  The current default strategy is to
519 put *all* available resolver information into resolv.conf, ordered by
520 interface type as listed in the interface-order(5) file, except that no
521 addresses are listed after a loopback address.
522
523 The admin can of course disable resolv.conf automagic by deleting the
524 /etc/resolv.conf symlink and putting a static file at that location.
525
526 Once you have installed resolvconf properly you don't normally need to run
527 /sbin/resolvconf from the command line.  However, I once encountered a
528 situation in which I did that.  Perhaps it is a useful illustration.  My ISP's
529 nameserver went down and thus my caching nameserver could not resolve names.
530 I knew of another host belonging to my ISP that I could use so I simply did:
531
532     # echo "nameserver ww.xx.yy.zz" | resolvconf -a dummy
533
534 This added the necessary nameserver line to dnsmasq's nameserver list.  When
535 my ISP's regular nameserver was fixed I did:
536
537     # resolvconf -d dummy
538
539 to restore the original situation.
540
541 FAQ
542 ~~~
543 Q. Why call it 'resolvconf' instead of 'update-resolver' or so?
544 A. Debian's update-* commands are mostly maintainer programs that update
545    static configuration files in /etc/.  Mostly they run at package
546    install time.  Resolvconf, in contrast, is a run-time configurer.
547
548 TODO
549 ~~~~
550   * bind9
551     # 483098: bind9: Please add resolvconf hook script to update
552       forwarders list
553       - NO REPLY for over a year
554     # 641714: Please add resolvconf packaging-event hook script
555       - NO REPLY for over a year
556   * dnscache-run (from djbdns)
557     # 582755: Add resolvconf support
558       - NO REPLY for several years
559   * gnome-ppp
560     # 258064: Writes to /etc/resolv.conf
561       - WORKAROUND introduced in July 2004 was to make gnome-ppp Conflict
562         with resolvconf
563   * gnome-system-tools
564     # 258553: Incompatible with resolvconf
565       - NO ACTION for several years
566   * ifupdown
567     + Handle dns-* commands natively so that the resolver is configured
568       before "up" commands are run
569   * isc-dhcp-client
570     # 700966: Please add resolvconf packaging-event hook script
571       - SUBMITTED
572   * kppp
573     # 695121; LP#1086336: Writes to /etc/resolvconf
574       - SUBMITTED
575   * libadns1
576     + It consults resolv.conf so it should already be supported.
577       However, someone should test it.
578   * libares0
579     + It consults resolv.conf so it should already be supported.
580       However, someone should test it.
581   * libdjbdns1
582     + It consults resolv.conf so it should already be supported.
583       However, someone should test it.
584     + Someone should investigate whether it could be supported better.
585       Perhaps /etc/dnsrewrite should be dynamically updated?
586   * libfiredns0.9
587     + It consults resolv.conf so it should already be supported.
588       However, someone should test it.
589     + Someone should investigate whether it could be supported better.
590       Perhaps /etc/firedns.conf should be dynamically updated?
591   * maradns
592     # 608946: resolvconf integration
593       - Its initscript should probably do
594             echo "nameserver 127.0.0.1" | resolvconf -a lo.maradns
595         as dnsmasq and pdnsd do.
596       - Could it have an update script that sets the "upstream_servers"
597         variable?
598       - Tagged WONTFIX since the maintainer doesn't have any free time
599   * Net::DNS
600     + It consults resolv.conf so it should already be supported.
601       However, someone should test it.
602     + Someone should investigate whether it could be supported better.
603   * network-manager
604     # 639803: Please add resolvconf packaging-event hook script
605       - NO REPLY for over a year
606   * nscd
607     # 266817: Please suggest resolvconf
608       - Tagged WONTFIX
609     # 700385: Invalidate hosts cache on resolv.conf change, or
610               include resolvconf update script to invalidate it
611       - SUBMITTED
612   * pdns-recursor
613     # 700850: Please add resolvconf packaging-event hook script
614       - SUBMITTED
615   * pdnsd
616     # 628846: Please add resolvconf packaging-event hook script
617       - NO REPLY for over a year
618   * ppp
619     # 208095: Please suggest resolvconf
620       - Tagged WONTFIX
621   * resolvconf
622     + See http://bugs.debian.org/resolvconf
623   * systemconfigurator
624     # 272475: Please support resolvconf
625       - NO REPLY for many years
626   * Users of resolver libraries
627     + For any package that contains a program that uses resolver(3) or a
628       compatible library, add a /etc/resolvconf/update-libc.d/ script to
629       notify running instances of the program that the resolver
630       configuration file has changed.
631
632 DONE
633 ~~~~
634   * bind
635     + Drop support for this obsolete version of BIND
636       - DONE in resolvconf 1.48
637       - bind is now gone from Debian
638   * bind9
639     + Create script /etc/resolvconf/update.d/bind to:
640       . Convert /etc/bind/named.options.sed into /var/run/bind/named.options
641         (which is to be included in /etc/bind/named.conf)
642       . Then run "/etc/init.d/bind9 reload" or "/etc/init.d/bind reload"
643       - DONE in resolvconf package
644     # 199255: Please support resolvconf
645       - DONE in 1:9.2.3-1
646     # 252232: Please use 'lo.named' as resolvconf record name
647       - DONE in 1:9.3.2-2
648     # 252285: Please Suggest resolvconf
649       - DONE in 1:9.4.2-2
650   * debian-installer
651     # 255187: Please add resolvconf support
652       - DONE in version netcfg/0.71
653   * dhcp3-client
654     + Use resolvconf via /etc/dhcp3/dhclient-enter-hooks
655       - DONE in resolvconf package
656     # 171798: dhclient-script should source hook scripts, not run-parts them
657       - DONE in 3.0+3.0.1rc11-5
658   * dhcp-client
659     # 248399: Needs resolvconf support
660       - DONE in 2.0pl5-18
661   * dhcpcd
662     + Support resolvconf without requiring local changes
663       - DONE in 1:1.3.22pl4-7
664   * dnsmasq
665     + Create script /etc/resolvconf/update.d/dnsmasq to
666       generate /var/run/dnsmasq/resolv.conf
667       - DONE in resolvconf package
668     + Support resolvconf without requiring local changes 
669       - DONE in 1.13-2
670     + Include /etc/resolvconf/update.d/dnsmasq
671       - DONE in 1.13-3
672     # 628003, #641717: Add resolvconf packaging-event hook script
673       - DONE in 2.58-3
674     # 716908: Apply patch to use "--after" option
675       - SUBMITTED
676   * fetchmail
677     + Use resolvconf to trigger restart on change of nameserver info
678       - DONE in 6.2.5-4
679   * ifupdown
680     + Use resolvconf via /etc/network/if-(up|down).d/
681       - DONE in resolvconf package
682   * laptop-net
683     + Use resolvconf instead of overwriting /etc/resolv.conf .
684       - DONE in 2.21-1
685   * pcmcia-cs
686     # 212823: pcmcia-cs: please add support for the resolvconf package
687       - DONE in 3.2.5-1
688   * pdns-recursor
689     # 308677: /etc/init.d/pdns-recursor: Please add resolvconf calls
690       - DONE in 2.9.18-4
691   * pdns-server
692     # 304528: Please add resolvconf update script in order to automate
693       the creation of the recursors list
694       - DONE in 2.9.18-4
695   * pdnsd
696     # 247946: Fix resolvconf support
697       - DONE in pdnsd 1.1.10par-4
698   * postfix
699     # 212552: Please reload on change of /etc/resolv.conf
700       - DONE in 2.0.16-4
701   * ppp
702     + Use resolvconf via /etc/ppp/ip-(up|down).d/
703       - DONE in resolvconf package
704   * pppconfig
705     # 242092: Disable pppconfig's futzing with /etc/resolv.conf
706       - DONE in 2.3.1
707     # 266819: Please suggest resolvconf
708       - DONE in 2.3.18+nmu3
709   * pppoeconf
710     # 212756: Eliminate /etc/ppp/ip-up.d/000usepeerdns
711       - DONE in 1.0
712   * pump
713     # 194204: Please add proper resolvconf support
714       - DONE in 0.8.15-1
715   * resolvconf
716     + Created and added to dialup and broadband tasks
717   * squid
718     # 200572: Please use resolvconf resolver-update notification
719       - DONE in 2.5.3-7
720   * totd
721     + Use resolvconf to update resolv.conf and to get updated
722       nameserver list
723   * udhcpc
724     # 302019: Please use resolvconf
725       - DONE in 0.9.8cvs20050124-3
726   * unbound
727     # 562031: Pleage tell resolvconf about unbound on localhost
728       - DONE in 1.4.9-1
729     # 567879: Please add resolvconf integration
730       - DONE in 1.4.9-1
731   * webmin-core
732     # 223483: Please play nicely with resolvconf
733       - DONE in 1.150-2
734   * webmin-wvdial
735     # 288481: Deletes symlink at /etc/resolv.conf
736       - DONE in 1.160-3
737
738 Credits
739 ~~~~~~~
740 The basic idea for resolvconf was expressed by Emile van Bergen on the
741 debian-devel mailing list.
742
743     http://lists.debian.org/debian-devel/2003/04/msg00580.html
744     http://lists.debian.org/debian-devel/2003/04/msg00629.html
745
746 I claim any braindamage in the implementation as my own.
747
748 Werner Heuser, Joe Nahmias, Andreas Barth and Marco Nenciarini have all
749 been helpful sponsors.
750
751 This document was written by Thomas Hood <jdthood@gmail.com> using some
752 material written by John Hasler.
753
754 I thank all the maintainers who have helped with this effort by adding
755 resolvconf support to their packages.
756
757 This document is part of resolvconf.