]> git.ipfire.org Git - thirdparty/pdns.git/blob - 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
1 Configuring Downstream Servers
2 ==============================
3
4 As dnsdist is a loadbalancer and does not do any DNS resolving or serving by itself, it needs downstream servers.
5 To 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
9 Or 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
20 These two equivalent configurations give you sane load balancing using a very sensible distribution policy.
21 Many users will simply be done with this configuration.
22 It works as well for authoritative as for recursive servers.
23
24 Healthcheck
25 -----------
26 dnsdist uses a health check, sent once every second, to determine the availability of a backend server.
27
28 By default, an A query for "a.root-servers.net." is sent.
29 A different query type and target can be specified by passing, respectively, the ``checkType`` and ``checkName`` parameters to :func:`newServer`.
30
31 The default behavior is to consider any valid response with an RCODE different from ServFail as valid.
32 If 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
34 The number of health check failures before a server is considered down is configurable via the ``maxCheckFailures`` parameter, defaulting to 1.
35 The CD flag can be set on the query by setting ``setCD`` to true.
36 e.g.::
37
38 newServer({address="192.0.2.1", checkType="AAAA", checkName="a.root-servers.net.", mustResolve=true})
39
40 Source address selection
41 ------------------------
42
43 In multi-homed setups, it can be useful to be able to select the source address or the outgoing
44 interface 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
50 The 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
55 Please note that specifying the interface name is only supported on system having `IP_PKTINFO`.