aboutsummaryrefslogtreecommitdiffstats
path: root/doc/index.html
blob: a4eb516b09561a5f02ac24db7631994aefd217f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="color-scheme" content="dark light" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en" />
    <title>dnsfunnel - A small local DNS cache daemon</title>
    <meta name="Description" content="dnsfunnel - a small local DNS cache daemon" />
    <meta name="Keywords" content="dnsfunnel DNS domain cache local /etc/resolv.conf resolver forwarder laurent bercot ska skarnet" />
    <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
  </head>
<body>

<p>
<a href="//skarnet.org/software/">Software</a><br />
<a href="//skarnet.org/">skarnet.org</a>
</p>

<h1> dnsfunnel </h1>

<h2> What is it&nbsp;? </h2>

<p>
 dnsfunnel is a small daemon listening to DNS client requests over UDP
(typically from the libc's
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/getaddrinfo.html">getaddrinfo()</a>
function) and forwards them to a list of DNS caches. It provides the
client with the first answer it gets, trimming the answer so it fits
in an UDP packet.
</p>

<p>
 dnsfunnel is especially useful for distributions using the
<a href="https://musl-libc.org">musl</a> libc, which sometimes exposes
bugs in common implementation of DNS caches. (Also, musl initially did not
support TCP DNS transport, which was an additional argument for dnsfunnel
that does.) dnsfunnel was originally written to be used in the
<a href="https://alpinelinux.org/">Alpine Linux</a> distribution.
</p>

<p>
 A secondary use for dnsfunnel is to serve as a small forwarder for IPv6
addresses when your DNS cache doesn't listen to IPv6, which is the case
with e.g. djbdns's <a href="https://cr.yp.to/djbdns/dnscache.html">dnscache</a>.
dnsfunnel can listen to ipv6, forward the queries to your IPv4 address where
your real cache performs the resolution, and return the answer to your client.
</p>

<hr />

<h2> Installation </h2>

<h3> Requirements </h3>

<ul>
 <li> A POSIX-compliant system with a standard C development environment. </li>
 <li> GNU make, version 3.81 or later </li>
 <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> version
2.15.0.0 or later. It's a build-time requirement. It's also a run-time
requirement if you link against the shared version of the skalibs
library. </li>
 <li> <a href="//skarnet.org/software/s6-dns/">s6-dns</a> version
2.4.1.2 or later. It's a build-time requirement. It's also a run-time
requirement if you link against the shared version of the s6dns
library. </li>
</ul>

<h3> Licensing </h3>

<p>
 dnsfunnel is free software. It is available under the
<a href="https://opensource.org/licenses/ISC">ISC license</a>.
</p>

<h3> Download </h3>

<ul>
 <li> The current released version of dnsfunnel is
<a href="dnsfunnel-0.0.3.2.tar.gz">0.0.3.2</a>.
You can access its checksum <a href="dnsfunnel-0.0.3.2.tar.gz.sha256">here</a>. </li>
 <li> Alternatively, you can checkout a copy of the
<a href="//git.skarnet.org/cgit/dnsfunnel/">dnsfunnel
git repository</a>:
<pre> git clone git://git.skarnet.org/dnsfunnel </pre> </li>
 <li> There's also a
<a href="https://codeberg.org/skarnet/dnsfunnel">Codeberg mirror</a>, or a
<a href="https://github.com/skarnet/dnsfunnel">GitHub mirror</a>, or a
<a href="https://git.sr.ht/~skarnet/dnsfunnel">SourceHut mirror</a>
of the dnsfunnel git repository. </li>
</ul>

<h3> Compilation </h3>

<ul>
 <li> See the enclosed INSTALL file for installation details. </li>
</ul>

<h3> Upgrade notes </h3>

<ul>
 <li> <a href="upgrade.html">This page</a> lists the differences to be aware of between
the previous versions of dnsfunnel and the current one. </li>
</ul>

<hr />

<h2> Reference </h2>

<h3> Commands </h3>

<ul>
<li><a href="dnsfunneld.html">The <tt>dnsfunneld</tt> program</a></li>
<li><a href="dnsfunnel-translate.html">The <tt>dnsfunnel-translate</tt> program</a></li>
</ul>

<h2> Related resources </h2>

<ul>
 <li> <tt>dnsfunnel</tt> is discussed on the
<a href="//skarnet.org/lists/#skaware">skaware</a> mailing-list. </li>
</ul>

</body>
</html>