All rights reserved
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
.Dd May 23, 2023 .Dt RESOLVCONF.CONF 5 .Os .Sh NAME .Nm resolvconf.conf .Nd resolvconf configuration file .Sh DESCRIPTION .Nm is the configuration file for .Xr resolvconf 8 . The .Nm file is a shell script that is sourced by .Xr resolvconf 8 , meaning that .Nm must contain valid shell commands. Listed below are the standard .Nm variables that may be set. If the values contain whitespace, wildcards or other special shell characters, ensure they are quoted and escaped correctly. See the .Sy replace variable for an example on quoting.
p After updating this file, you may wish to run .Nm resolvconf -u to apply the new configuration.
p When a dynamically generated list is appended or prepended to, the whole is made unique where left-most wins. .Sh RESOLVCONF OPTIONS l -tag -width indent t Sy resolvconf Set to NO to disable .Nm resolvconf from running any subscribers. Defaults to YES. t Sy allow_interfaces If set, only these interfaces will be processed. t Sy deny_interfaces If set, these interfaces will not be processed. t Sy interface_order These interfaces will always be processed first. If unset, defaults to the following:- d -compact -literal -offset indent lo lo[0-9]* .Ed t Sy dynamic_order These interfaces will be processed next, unless they have a metric. If unset, defaults to the following:- d -compact -literal -offset indent tap[0-9]* tun[0-9]* vpn vpn[0-9]* wg[0-9]* ppp[0-9]* ippp[0-9]* .Ed t Sy inclusive_interfaces Ignore any exclusive marking for these interfaces. This is handy when 3rd party integrations force the .Nm resolvconf -x option and you want to disable it easily. t Sy local_nameservers If unset, defaults to the following:- d -compact -literal -offset indent 127.* 0.0.0.0 255.255.255.255 ::1 .Ed t Sy search_domains Prepend search domains to the dynamically generated list. t Sy search_domains_append Append search domains to the dynamically generated list. t Sy domain_blacklist A list of domains to be removed from consideration. To remove a domain, you can use foo.* To remove a sub domain, you can use *.bar t Sy name_servers Prepend name servers to the dynamically generated list. You should set this to 127.0.0.1 if you use a local name server other than libc. t Sy name_servers_append Append name servers to the dynamically generated list. t Sy name_server_blacklist A list of name servers to be removed from consideration. The default is 0.0.0.0 as some faulty routers send it via DHCP. To remove a block, you can use 192.168.* t Sy private_interfaces These interfaces name servers will only be queried for the domains listed in their resolv.conf. Useful for VPN domains. Setting .Sy private_interfaces Ns ="*" will stop the forwarding of the root zone and allows the local resolver to recursively query the root servers directly. Requires a local nameserver other than libc. This is equivalent to the .Nm resolvconf -p option. t Sy public_interfaces Force these interface to be public, overriding the private marking. This is handy when 3rd party integrations force the .Nm resolvconf -p option and you want to disable it easily. t Sy replace Is a space separated list of replacement keywords. The syntax is this: .Va $keyword Ns / Ns Va $match Ns / Ns Va $replacement
p Example, given this resolv.conf: d -compact -literal -offset indent domain foo.org search foo.org dead.beef nameserver 1.2.3.4 nameserver 2.3.4.5 .Ed and this configuration: d -compact -literal -offset indent replace="search/foo*/bar.com" replace="$replace nameserver/1.2.3.4/5.6.7.8" replace="$replace nameserver/2.3.4.5/" .Ed you would get this resolv.conf instead: d -compact -literal -offset indent domain foo.org search bar.com nameserver 5.6.7.8 .Ed t Sy replace_sub Works the same way as .Sy replace except it works on each space separated value rather than the whole line, so it's useful for the replacing a single domain within the search directive. Using the same example resolv.conf and changing .Sy replace to .Sy replace_sub , you would get this resolv.conf instead: d -compact -literal -offset indent domain foo.org search bar.com dead.beef nameserver 5.6.7.8 .Ed t Sy state_dir Override the default state directory of
a @VARDIR@ . This should not be changed once .Nm resolvconf is in use unless the old directory is copied to the new one. .El .Sh LIBC OPTIONS The following variables affect .Xr resolv.conf 5 directly:- l -tag -width indent t Sy resolv_conf Defaults to
a /etc/resolv.conf if not set. t Sy resolv_conf_options A list of libc resolver options, as specified in .Xr resolv.conf 5 . t Sy resolv_conf_passthrough When set to YES the latest resolv.conf is written to .Sy resolv_conf without any alteration. When set to /dev/null or NULL, .Sy resolv_conf_local_only is defaulted to NO, .Sy local_nameservers is unset unless overridden and only the information set in .Nm is written to .Sy resolv_conf . t Sy resolv_conf_sortlist A libc resolver sortlist, as specified in .Xr resolv.conf 5 . t Sy resolv_conf_local_only If a local name server is configured then the default is just to specify that and ignore all other entries as they will be configured for the local name server. Set this to NO to also list non-local nameservers. This will give you working DNS even if the local nameserver stops functioning at the expense of duplicated server queries. t Sy append_nameservers Append name servers to the dynamically generated list. t Sy prepend_nameservers Prepend name servers to the dynamically generated list. t Sy append_search Append search domains to the dynamically generated list. t Sy prepend_search Prepend search domains to the dynamically generated list. t Sy resolv_conf_mv Defaults to NO. Defines if
a /etc/resolv.conf is updated by writing to a temporary file and then moving it vs writing directly to it. .El .Sh SUBSCRIBER OPTIONS openresolv ships with subscribers for the name servers .Xr dnsmasq 8 , .Xr named 8 , .Xr pdnsd 8 , .Xr pdns_recursor 1 , and .Xr unbound 8 . Each subscriber can create configuration files which should be included in the subscribers main configuration file.
p To disable a subscriber, simply set its name to NO. For example, to disable the libc subscriber you would set: d -compact -literal -offset indent libc=NO .Ed l -tag -width indent t Sy dnsmasq_conf This file tells dnsmasq which name servers to use for specific domains. t Sy dnsmasq_resolv This file tells dnsmasq which name servers to use for global lookups.
p Example resolvconf.conf for dnsmasq: d -compact -literal -offset indent name_servers=127.0.0.1 dnsmasq_conf=/etc/dnsmasq-conf.conf dnsmasq_resolv=/etc/dnsmasq-resolv.conf .Ed
p Example dnsmasq.conf: d -compact -literal -offset indent listen-address=127.0.0.1 # If dnsmasq is compiled for DBus then we can take # advantage of not having to restart dnsmasq. enable-dbus conf-file=/etc/dnsmasq-conf.conf resolv-file=/etc/dnsmasq-resolv.conf .Ed t Sy named_options Include this file in the named options block. This file tells named which name servers to use for global lookups. t Sy named_zones Include this file in the named global scope, after the options block. This file tells named which name servers to use for specific domains.
p Example resolvconf.conf for named: d -compact -literal -offset indent name_servers=127.0.0.1 named_options=/etc/named-options.conf named_zones=/etc/named-zones.conf .Ed
p Example named.conf: d -compact -literal -offset indent options { listen-on { 127.0.0.1; }; include "/etc/named-options.conf"; }; include "/etc/named-zones.conf"; .Ed t Sy pdnsd_conf This is the main pdnsd configuration file which we modify to add our forward domains to. If this variable is not set then we rely on the pdnsd configuration file setup to read
a pdnsd_resolv as documented below. t Sy pdnsd_resolv This file tells pdnsd about global name servers. If this variable is not set then it's written to
a pdnsd_conf .
p Example resolvconf.conf for pdnsd: d -compact -literal -offset indent name_servers=127.0.0.1 pdnsd_conf=/etc/pdnsd.conf # pdnsd_resolv=/etc/pdnsd-resolv.conf .Ed
p Example pdnsd.conf: d -compact -literal -offset indent global { server_ip = 127.0.0.1; status_ctl = on; } server { # A server definition is required, even if empty. label="empty"; proxy_only=on; # file="/etc/pdnsd-resolv.conf"; } .Ed t Sy pdns_zones This file tells pdns_recursor about specific and global name servers.
p Example resolvconf.conf for pdns_recursor: d -compact -literal -offset indent name_servers=127.0.0.1 pdns_zones=/etc/pdns/recursor-zones.conf .Ed
p Example recursor.conf: d -compact -literal -offset indent allow-from=127.0.0.0/8, ::1/128 forward-zones-file=/etc/pdns/recursor-zones.conf .Ed t Sy unbound_conf This file tells unbound about specific and global name servers. t Sy unbound_insecure When set to YES, unbound marks the domains as insecure, thus ignoring DNSSEC. t Sy unbound_forward_zone_options Options appended to each forward zone. Each option should be separated by an embedded new line.
p Example resolvconf.conf for unbound: d -compact -literal -offset indent name_servers=127.0.0.1 unbound_conf=/etc/unbound-resolvconf.conf .Ed
p Example unbound.conf: d -compact -literal -offset indent include: /etc/unbound-resolvconf.conf .Ed .El .Sh SUBSCRIBER INTEGRATION Not all distributions store the files the subscribers need in the same locations. For example, named service scripts have been called named, bind and rc.bind and they could be located in a directory called /etc/rc.d, /etc/init.d or similar. Each subscriber attempts to automatically configure itself, but not every distribution has been catered for. Also, users could equally want to use a different version from the one installed by default, such as bind8 and bind9. To accommodate this, the subscribers have these files in configurable variables, documented below. l -tag -width indent t Sy dnsmasq_service Name of the dnsmasq service. t Sy dnsmasq_restart Command to restart the dnsmasq service. t Sy dnsmasq_pid Location of the dnsmasq pidfile. t Sy libc_service Name of the libc service. t Sy libc_restart Command to restart the libc service. t Sy named_service Name of the named service. t Sy named_restart Command to restart the named service. t Sy pdnsd_restart Command to restart the pdnsd service. t Sy pdns_service Command to restart the pdns_recursor service. t Sy pdns_restart Command to restart the pdns_recursor service. t Sy unbound_service Name of the unbound service. t Sy unbound_restart Command to restart the unbound service. t Sy unbound_pid Location of the unbound pidfile. .El .Sh SEE ALSO .Xr sh 1 , .Xr resolv.conf 5 , .Xr resolvconf 8 .Sh AUTHORS .An Roy Marples Aq Mt roy@marples.name .Sh BUGS Each distribution is a special snowflake and likes to name the same thing differently, namely the named service script.
p Please report them to .Lk https://roy.marples.name/projects/openresolv