Implement replace and replace_sub to allow for keyword/value/replacement
[openresolv] / resolvconf.8.in
1 .\" Copyright (c) 2007-2014 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 26, 2014
26 .Dt RESOLVCONF 8 SMM
27 .Os
28 .Sh NAME
29 .Nm resolvconf
30 .Nd a framework for managing multiple DNS configurations
31 .Sh SYNOPSIS
32 .Nm
33 .Fl I
34 .Nm
35 .Op Fl m Ar metric
36 .Op Fl p
37 .Fl a Ar interface No < Ns Pa file
38 .Nm
39 .Op Fl f
40 .Fl d Ar interface
41 .Nm
42 .Fl il Ar pattern
43 .Nm
44 .Fl u
45 .Sh DESCRIPTION
46 .Nm
47 manages
48 .Xr resolv.conf 5
49 files from multiple sources, such as DHCP and VPN clients.
50 Traditionally, the host runs just one client and that updates
51 .Pa /etc/resolv.conf .
52 More modern systems frequently have wired and wireless interfaces and there is
53 no guarantee both are on the same network.
54 With the advent of VPN and other
55 types of networking daemons, many things now contend for the contents of
56 .Pa /etc/resolv.conf .
57 .Pp
58 .Nm
59 solves this by letting the daemon send their
60 .Xr resolv.conf 5
61 file to
62 .Nm
63 via
64 .Xr stdin 3
65 with the argument
66 .Fl a Ar interface
67 instead of the filesystem.
68 .Nm
69 then updates
70 .Pa /etc/resolv.conf
71 as it thinks best.
72 When a local resolver other than libc is installed, such as
73 .Xr dnsmasq 8
74 or
75 .Xr named 8 ,
76 then
77 .Nm
78 will supply files that the resolver should be configured to include.
79 .Pp
80 .Nm
81 assumes it has a job to do.
82 In some situations
83 .Nm
84 needs to act as a deterrent to writing to
85 .Pa /etc/resolv.conf .
86 Where this file cannot be made immutable or you just need to toggle this
87 behaviour,
88 .Nm
89 can be disabled by adding
90 .Sy resolvconf Ns = Ns NO
91 to
92 .Xr resolvconf.conf 5 .
93 .Pp
94 .Nm
95 can mark an interfaces
96 .Pa resolv.conf
97 as private.
98 This means that the name servers listed in that
99 .Pa resolv.conf
100 are only used for queries against the domain/search listed in the same file.
101 This only works when a local resolver other than libc is installed. 
102 See
103 .Xr resolvconf.conf 5
104 for how to configure
105 .Nm
106 to use a local name server.
107 .Pp
108 When an interface goes down, it should then call
109 .Nm
110 with
111 .Fl d Ar interface
112 arguments to delete the
113 .Pa resolv.conf
114 file for the
115 .Ar interface .
116 .Pp
117 Here are some more options that
118 .Nm
119 has:-
120 .Bl -tag -width indent
121 .It Fl I
122 Initialise the state directory
123 .Pa @VARDIR@ .
124 This only needs to be called if the initial system boot sequence does not
125 automatically clean it out; for example the state directory is moved
126 somewhere other than
127 .Pa /var/run .
128 If used, it should only be called once as early in the system boot sequence
129 as possible and before
130 .Nm
131 is used to add interfaces.
132 .It Fl f
133 Ignore non existant interfaces.
134 Only really useful for deleting interfaces.
135 .It Fl i Ar pattern
136 List the interfaces, optionally matching
137 .Ar pattern ,
138 we have
139 .Pa resolv.conf
140 files for.
141 .It Fl l Ar pattern
142 List the
143 .Pa resolv.conf
144 files we have.
145 If
146 .Ar pattern
147 is specified then we list the files for the interfaces that match it.
148 .It Fl m Ar metric
149 Set the metric of the interface when adding it, default of 0.
150 Lower metrics take precedence.
151 This affects the default order of interfaces when listed.
152 .It Fl p
153 Marks the interface
154 .Pa resolv.conf
155 as private.
156 .It Fl u
157 Force
158 .Nm
159 to update all its subscribers.
160 .Nm
161 does not update the subscribers when adding a resolv.conf that matches
162 what it already has for that interface.
163 .El
164 .Pp
165 .Nm
166 also has some options designed to be used by its subscribers:-
167 .Bl -tag -width indent
168 .It Fl v
169 Echo variables DOMAINS, SEARCH and NAMESERVERS so that the subscriber can
170 configure the resolver easily.
171 .It Fl V
172 Same as
173 .Fl v
174 except that only the information configured in
175 .Xr resolvconf.conf 5
176 is set.
177 .El
178 .Sh INTERFACE ORDERING
179 For
180 .Nm
181 to work effectively, it has to process the resolv.confs for the interfaces
182 in the correct order.
183 .Nm
184 first processes interfaces from the
185 .Sy interface_order
186 list, then interfaces without a metic and that match the
187 .Sy dynamic_order
188 list, then interfaces with a metric in order and finally the rest in
189 the operating systems lexical order.
190 See
191 .Xr resolvconf.conf 5
192 for details on these lists.
193 .Sh IMPLEMENTATION NOTES
194 If a subscriber has the executable bit then it is executed otherwise it is
195 assumed to be a shell script and sourced into the current environment in a
196 subshell.
197 This is done so that subscribers can remain fast, but are also not limited
198 to the shell language.
199 .Pp
200 Portable subscribers should not use anything outside of
201 .Pa /bin
202 and
203 .Pa /sbin
204 because
205 .Pa /usr
206 and others may not be available when booting.
207 Also, it would be unwise to assume any shell specific features.
208 .Sh ENVIRONMENT
209 .Bl -ohang
210 .It Va IF_METRIC
211 If the
212 .Fl m
213 option is not present then we use
214 .Va IF_METRIC
215 for the metric.
216 .It Va IF_PRIVATE
217 Marks the interface
218 .Pa resolv.conf
219 as private.
220 .El
221 .Sh FILES
222 .Bl -ohang
223 .It Pa /etc/resolv.conf.bak
224 Backup file of the original resolv.conf.
225 .It Pa @SYSCONFDIR@/resolvconf.conf
226 Configuration file for
227 .Nm .
228 .It Pa @LIBEXECDIR@
229 Directory of subscribers which are run every time
230 .Nm
231 adds, deletes or updates.
232 .It Pa @LIBEXECDIR@/libc.d
233 Directory of subscribers which are run after the libc subscriber is run.
234 .It Pa @VARDIR@
235 State directory for
236 .Nm .
237 .El
238 .Sh HISTORY
239 This implementation of
240 .Nm
241 is called openresolv and is fully command line compatible with Debian's
242 resolvconf, as written by Thomas Hood.
243 .Sh SEE ALSO
244 .Xr resolv.conf 5 ,
245 .Xr resolvconf.conf 5 ,
246 .Xr resolver 3 ,
247 .Xr stdin 3
248 .Sh AUTHORS
249 .An Roy Marples Aq Mt roy@marples.name
250 .Sh BUGS
251 Please report them to
252 .Lk http://roy.marples.name/projects/openresolv
253 .Pp
254 .Nm
255 does not validate any of the files given to it.
256 .Pp
257 When running a local resolver other than libc, you will need to configure it
258 to include files that
259 .Nm
260 will generate.
261 You should consult
262 .Xr resolvconf.conf 5
263 for instructions on how to configure your resolver.