c5436ec89e868c4c55ab32c58130ee7463e2310a
[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 September 17, 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 .Fl a Ar interface No < Ns Pa file
34 .Nm
35 .Op Fl f
36 .Fl d Ar interface
37 .Nm
38 .Fl il Ar pattern
39 .Nm
40 .Fl u
41 .Sh DESCRIPTION
42 .Nm
43 manages
44 .Xr resolv.conf 5
45 files from multiple sources, such as DHCP and VPN clients.
46 Traditionally, the host runs just one client and that updates
47 .Pa /etc/resolv.conf .
48 More modern systems frequently have wired and wireless interfaces and there is
49 no guarantee both are on the same network.
50 With the advent of VPN and other
51 types of networking daemons, many things now contend for the contents of
52 .Pa /etc/resolv.conf .
53 .Pp
54 .Nm
55 solves this by letting the daemon send their
56 .Xr resolv.conf 5
57 file to
58 .Nm
59 via
60 .Xr stdin 3
61 with the argument
62 .Fl a Ar interface
63 instead of the filesystem.
64 .Nm
65 then updates
66 .Pa /etc/resolv.conf
67 as it thinks best.
68 When a local resolver other than libc is installed, such as
69 .Xr dnsmasq 8
70 or
71 .Xr named 8
72 then
73 .Nm
74 will supply files that the resolver should be configured to include.
75 This allows
76 .Nm
77 to configure the local resolver such that
78 .Pa resolv.conf
79 files specifiying a domain only query the listed nameservers when resolving
80 for that domain.
81 Otherwise the nameservers are treated as global nameservers.
82 This in turn means, that you can trivially configure nameservers for say
83 VPN domains.
84 Example:-
85 .Bd -literal -offset indent
86 # resolv.conf from bge0
87 search foo.com
88 nameserver 1.2.3.4
89
90 # resolv.conf from tap0
91 domain bar.org
92 nameserver 5.6.7.8
93 .Ed
94 .Pp
95 In this instance, nameserver 5.6.7.8 will only handle requests for bar.org
96 and nameserver 1.2.3.4 will handle everything else.
97 Doing this, you would probably want
98 .Nm
99 to always configure
100 .Pa /etc/resolv.conf
101 with the local nameserver.
102 See
103 .Pa @SYSCONFDIR@/resolv.conf.d/base
104 below on how to do this.
105 .Pp
106 When an interface goes down, it should then call
107 .Nm
108 with
109 .Fl d Ar interface
110 arguments to delete the
111 .Pa resolv.conf
112 file for the
113 .Ar interface .
114 .Pp
115 Here are some more options that
116 .Nm
117 has:-
118 .Bl -tag -width indent
119 .It Fl f
120 Ignore non existant interfaces.
121 Only really useful for deleting interfaces.
122 .It Fl i Ar pattern
123 List the interfaces, optionally matching
124 .Ar pattern ,
125 we have
126 .Pa resolv.conf
127 files for.
128 .It Fl l Ar pattern
129 List the
130 .Pa resolv.conf
131 files we have.
132 If
133 .Ar pattern
134 is specified then we list the files for the interfaces that match it.
135 .It Fl m Ar metric
136 Set the metric of the interface when adding it, default of 0.
137 Lower metrics take precedence.
138 This affects the default order of interfaces when listed.
139 .It Fl u
140 Force
141 .Nm
142 to update all it's helpers.
143 .Nm
144 does not update the helpers when adding a reslov.conf that matches
145 what it already has for that interface.
146 .El
147 .Pp
148 .Nm
149 also has some options designed to be used by it's helpers:-
150 .Bl -tag -width indent
151 .It Fl s Ar service Ar command ...
152 Try and send the
153 .Ar command
154 to the system
155 .Ar service .
156 Normally this is something like
157 .Ar resolvconf -s named restart .
158 We have this command, so the helpers don't have to know too much about the
159 operating system on the host.
160 .It Fl v
161 Echo variables NEWDOMAIN, NEWSEARCH and NEWNS so that the helper can configure
162 the resolver easily.
163 .El
164 .Sh ENVIRONMENT
165 .Bl -ohang
166 .It Va IF_METRIC
167 If the
168 .Fl m
169 option is not present then we use
170 .Va IF_METRIC
171 for the metric.
172 .El
173 .Sh FILES
174 .Bl -ohang
175 .It Pa @VARBASE@/run/resolvconf
176 Directory that holds the data for
177 .Nm .
178 .It Pa @SYSCONFDIR@/update.d
179 Directory of the helper scripts which are run every time
180 .Nm
181 adds, deletes or updates.
182 .It Pa @SYSCONFDIR@/update-libc.d
183 Directory of helper scripts which are run after the libc helper script is run.
184 .It Pa @SYSCONFDIR@/interface-order
185 Determines the order in which nameserver information records are processed
186 by resolvconf -l.
187 .It Pa @SYSCONFDIR@/resolv.conf.d/base
188 Contains basic resolver information which is included in
189 .Pa /etc/resolv.conf
190 even when no interfaces are configured.
191 This is a good place to set libc to always use your local nameserver like so:
192 .Bd -literal -offset indent
193 nameserver 127.0.0.1
194 .Ed
195 .It Pa @SYSCONFDIR@/resolv.conf.d/head
196 File to be prepended to
197 .Pa /etc/resolv.conf .
198 Normally this is just a comment line.
199 .It Pa @SYSCONFDIR@/resolv.conf.d/tail
200 File to be appended to
201 .Pa /etc/resolv.conf .
202 .El
203 .Sh HISTORY
204 This implementation of
205 .Nm
206 is called openresolv and is fully command line compatible with Debians
207 resolvconf, as written by Thomas Hood, on which openresolv is based.
208 openresolv also shares a similar directory structure with the Debian version,
209 but the included helpers are not compatible.
210 .Pp
211 The Debian version only works with bash and other GNU userland tools, whereas
212 openresolv works with a POSIX shell and userland tools.
213 .Sh BUGS
214 .Nm
215 does not validate any of the files given to it.
216 .Pp
217 When running a local resolver other than libc, you will need to configure it
218 to include files that
219 .Nm
220 will generate.
221 You should consult the comment section in the helper script
222 for your resolver found in @SYSCONFDIR@/update.d for instructions
223 on this.
224 .Sh SEE ALSO
225 .Xr dnsmasq 8 ,
226 .Xr named 8 ,
227 .Xr resolv.conf 5 ,
228 .Xr resolver 3 ,
229 .Xr stdin 3
230 .Sh AUTHORS
231 .An Roy Marples <roy@marples.name>
232 .Sh BUGS
233 Please report them to http://bugs.marples.name