]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/dnsdistdist/docs/guides/downstreams.rst
dnsdist: Add a few words on source address selection in the new docs
[thirdparty/pdns.git] / pdns / dnsdistdist / docs / guides / downstreams.rst
CommitLineData
20d81666
PL
1Configuring Downstream Servers
2==============================
3
4As dnsdist is a loadbalancer and does not do any DNS resolving or serving by itself, it needs downstream servers.
5To add downstream servers, either include them on the command line::
6
7 dnsdist -l 130.161.252.29 -a 130.161.0.0/16 8.8.8.8 208.67.222.222 2620:0:ccc::2 2620:0:ccd::2
8
9Or add them to the configuration file:
10
11.. code-block:: lua
12
13 setLocal("130.161.252.29:53")
14 setACL("130.161.0.0/16")
15 newServer("8.8.8.8")
16 newServer("208.67.222.222")
17 newServer("2620:0:ccc::2")
18 newServer("2620:0:0ccd::2")
19
20These two equivalent configurations give you sane load balancing using a very sensible distribution policy.
21Many users will simply be done with this configuration.
22It works as well for authoritative as for recursive servers.
23
24Healthcheck
25-----------
26dnsdist uses a health check, sent once every second, to determine the availability of a backend server.
27
28By default, an A query for "a.root-servers.net." is sent.
29A different query type and target can be specified by passing, respectively, the ``checkType`` and ``checkName`` parameters to :func:`newServer`.
30
31The default behavior is to consider any valid response with an RCODE different from ServFail as valid.
32If the ``mustResolve`` parameter of :func:`newServer` is set to ``true``, a response will only be considered valid if its RCODE differs from NXDomain, ServFail and Refused.
33
34The number of health check failures before a server is considered down is configurable via the ``maxCheckFailures`` parameter, defaulting to 1.
35The CD flag can be set on the query by setting ``setCD`` to true.
36e.g.::
37
38 newServer({address="192.0.2.1", checkType="AAAA", checkName="a.root-servers.net.", mustResolve=true})
44f6dbd1
RG
39
40Source address selection
41------------------------
42
43In multi-homed setups, it can be useful to be able to select the source address or the outgoing
44interface used by dnsdist to contact a downstream server. This can be done by using the `source` parameter::
45
46 newServer({address="192.0.2.1", source="192.0.2.127"})
47 newServer({address="192.0.2.1", source="eth1"})
48 newServer({address="192.0.2.1", source="192.0.2.127@eth1"})
49
50The supported values for source are:
51- an IPv4 or IPv6 address, which must exist on the system
52- an interface name
53- an IPv4 or IPv6 address followed by '@' then an interface name
54
55Please note that specifying the interface name is only supported on system having `IP_PKTINFO`.