2684b3c93f72403b53b0d47c494223df125b0c9b
[openresolv] / resolvconf.8.in
1 .\" Copyright 2007-2008 Roy Marples
2 .\" All rights reserved
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .Dd October 03, 2008
26 .Dt RESOLVCONF 8 SMM
27 .Sh NAME
28 .Nm resolvconf
29 .Nd a framework for managing multiple DNS configurations
30 .Sh SYNOPSIS
31 .Nm
32 .Op Fl m Ar metric
33 .Op Fl p
34 .Fl a Ar interface No < Ns Pa file
35 .Nm
36 .Op Fl f
37 .Fl d Ar interface
38 .Nm
39 .Fl il Ar pattern
40 .Nm
41 .Fl u
42 .Sh DESCRIPTION
43 .Nm
44 manages
45 .Xr resolv.conf 5
46 files from multiple sources, such as DHCP and VPN clients.
47 Traditionally, the host runs just one client and that updates
48 .Pa /etc/resolv.conf .
49 More modern systems frequently have wired and wireless interfaces and there is
50 no guarantee both are on the same network.
51 With the advent of VPN and other
52 types of networking daemons, many things now contend for the contents of
53 .Pa /etc/resolv.conf .
54 .Pp
55 .Nm
56 solves this by letting the daemon send their
57 .Xr resolv.conf 5
58 file to
59 .Nm
60 via
61 .Xr stdin 3
62 with the argument
63 .Fl a Ar interface
64 instead of the filesystem.
65 .Nm
66 then updates
67 .Pa /etc/resolv.conf
68 as it thinks best.
69 When a local resolver other than libc is installed, such as
70 .Xr dnsmasq 8
71 or
72 .Xr named 8
73 then
74 .Nm
75 will supply files that the resolver should be configured to include.
76 .Pp
77 .Nm
78 can mark an interfaces
79 .Pa resolv.conf
80 as private.
81 This means that the nameservers listed in that
82 .Pa resolv.conf
83 are only used for queries against the domain/search listed in the same file.
84 This only works when a local resolver other than libc is installed.
85 Doing this, you would probably want
86 .Nm
87 to always configure
88 .Pa /etc/resolv.conf
89 with the local nameserver.
90 See
91 .Pa @SYSCONFDIR@/resolv.conf.d/base
92 below on how to do this.
93 .Pp
94 When an interface goes down, it should then call
95 .Nm
96 with
97 .Fl d Ar interface
98 arguments to delete the
99 .Pa resolv.conf
100 file for the
101 .Ar interface .
102 .Pp
103 Here are some more options that
104 .Nm
105 has:-
106 .Bl -tag -width indent
107 .It Fl f
108 Ignore non existant interfaces.
109 Only really useful for deleting interfaces.
110 .It Fl i Ar pattern
111 List the interfaces, optionally matching
112 .Ar pattern ,
113 we have
114 .Pa resolv.conf
115 files for.
116 .It Fl l Ar pattern
117 List the
118 .Pa resolv.conf
119 files we have.
120 If
121 .Ar pattern
122 is specified then we list the files for the interfaces that match it.
123 .It Fl m Ar metric
124 Set the metric of the interface when adding it, default of 0.
125 Lower metrics take precedence.
126 This affects the default order of interfaces when listed.
127 .It Fl p
128 Marks the interface
129 .Pa resolv.conf
130 as private.
131 .It Fl u
132 Force
133 .Nm
134 to update all it's helpers.
135 .Nm
136 does not update the helpers when adding a reslov.conf that matches
137 what it already has for that interface.
138 .El
139 .Pp
140 .Nm
141 also has some options designed to be used by it's helpers:-
142 .Bl -tag -width indent
143 .It Fl s Ar service Ar command ...
144 Try and send the
145 .Ar command
146 to the system
147 .Ar service .
148 Normally this is something like
149 .Ar resolvconf -s named restart .
150 We have this command, so the helpers don't have to know too much about the
151 operating system on the host.
152 .It Fl v
153 Echo variables DOMAINS, SEARCH and NAMESERVERS so that the helper can configure
154 the resolver easily.
155 .El
156 .Sh ENVIRONMENT
157 .Bl -ohang
158 .It Va IF_METRIC
159 If the
160 .Fl m
161 option is not present then we use
162 .Va IF_METRIC
163 for the metric.
164 .It Va IF_PRIVATE
165 Marks the interface
166 .Pa resolv.conf
167 as private.
168 .El
169 .Sh FILES
170 .Bl -ohang
171 .It Pa @VARBASE@/run/resolvconf
172 Directory that holds the data for
173 .Nm .
174 .It Pa @SYSCONFDIR@/update.d
175 Directory of the helper scripts which are run every time
176 .Nm
177 adds, deletes or updates.
178 .It Pa @SYSCONFDIR@/update-libc.d
179 Directory of helper scripts which are run after the libc helper script is run.
180 .It Pa @SYSCONFDIR@/interface-order
181 Determines the order in which nameserver information records are processed
182 by resolvconf -l.
183 .It Pa @SYSCONFDIR@/private-interfaces
184 A list of interfaces who should be marked as private by default.
185 .It Pa @SYSCONFDIR@/resolv.conf.d/base
186 Contains basic resolver information which is included in
187 .Pa /etc/resolv.conf
188 even when no interfaces are configured.
189 This is a good place to set libc to always use your local nameserver like so:
190 .Bd -literal -offset indent
191 nameserver 127.0.0.1
192 .Ed
193 .It Pa @SYSCONFDIR@/resolv.conf.d/head
194 File to be prepended to
195 .Pa /etc/resolv.conf .
196 Normally this is just a comment line.
197 .It Pa @SYSCONFDIR@/resolv.conf.d/tail
198 File to be appended to
199 .Pa /etc/resolv.conf .
200 .El
201 .Sh HISTORY
202 This implementation of
203 .Nm
204 is called openresolv and is fully command line compatible with Debians
205 resolvconf, as written by Thomas Hood, on which openresolv is based.
206 openresolv also shares a similar directory structure with the Debian version,
207 but the included helpers are not compatible.
208 .Pp
209 The Debian version only works with bash and other GNU userland tools, whereas
210 openresolv works with a POSIX shell and userland tools.
211 .Sh BUGS
212 .Nm
213 does not validate any of the files given to it.
214 .Pp
215 When running a local resolver other than libc, you will need to configure it
216 to include files that
217 .Nm
218 will generate.
219 You should consult the comment section in the helper script
220 for your resolver found in @SYSCONFDIR@/update.d for instructions
221 on this.
222 .Sh SEE ALSO
223 .Xr dnsmasq 8 ,
224 .Xr named 8 ,
225 .Xr resolv.conf 5 ,
226 .Xr resolver 3 ,
227 .Xr stdin 3
228 .Sh AUTHORS
229 .An Roy Marples <roy@marples.name>
230 .Sh BUGS
231 Please report them to http://roy.marples.name/projects/openresolv