Site update
This commit is contained in:
parent
66311ee207
commit
44f8726e2d
34 changed files with 472 additions and 458 deletions
|
@ -634,12 +634,23 @@ Scan-Format: %c%u%r %-3n %10d %17f %t %2i%s
|
|||
<pubDate>27-09-2023</pubDate>
|
||||
|
||||
<guid>https://cronyakatsuki.xyz/blog/setup-dns-pihole-unbound/</guid>
|
||||
<description><p>Just another day I seted up my own private dns server that has adblocking ( and other stuff ) using pihole and uses unbound as a resolver. To safelly connect to the dns server I&rsquo;m using DNS over HTTPS for my browser&rsquo;s and HTTPS over TLS for stuffy for my whole desktop and private dns in android ( Android has DoH support but only for google and cloudflare right now). Let&rsquo;s get on to setting everything up</p>
|
||||
<description><p>Just another day I seted up my own private dns server that has adblocking ( and
|
||||
other stuff ) using pihole and uses unbound as a resolver. To safelly connect to
|
||||
the dns server I&rsquo;m using DNS over HTTPS for my browser&rsquo;s and HTTPS over TLS for
|
||||
stuffy for my whole desktop and private dns in android ( Android has DoH support
|
||||
but only for google and cloudflare right now). Let&rsquo;s get on to setting
|
||||
everything up</p>
|
||||
<!-- raw HTML omitted -->
|
||||
<h2 id="1-pihole">1. Pihole</h2>
|
||||
<p>Let&rsquo;s start with setting up pihole. I will be installing it with their script on a debian system for easier unbound integration ( unbound doesn&rsquo;t have an official docker container ).</p>
|
||||
<p>I recommend to read up on the pihole&rsquo;s docs on exactly how to install it since pihole get&rsquo;s frequent updates. <a href="https://docs.pi-hole.net/main/basic-install/">DOCS</a></p>
|
||||
<p>I recommend you to install the admin page for easier managmenet and ability to change the upstream dns server ( needed for changing it to unbound later on ). To be able to access the admin page I use an nginx configuration like this one.</p>
|
||||
<p>Let&rsquo;s start with setting up pihole. I will be installing it with their script on
|
||||
a debian system for easier unbound integration ( unbound doesn&rsquo;t have an
|
||||
official docker container ).</p>
|
||||
<p>I recommend to read up on the pihole&rsquo;s docs on exactly how to install it since
|
||||
pihole get&rsquo;s frequent updates.
|
||||
<a href="https://docs.pi-hole.net/main/basic-install/">DOCS</a></p>
|
||||
<p>I recommend you to install the admin page for easier managmenet and ability to
|
||||
change the upstream dns server ( needed for changing it to unbound later on ).
|
||||
To be able to access the admin page I use an nginx configuration like this one.</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#ca9ee6">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#81c8be">server_name</span> <span style="color:#a6d189">example.com</span> ;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
|
@ -674,14 +685,22 @@ Scan-Format: %c%u%r %-3n %10d %17f %t %2i%s
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#81c8be">listen</span> <span style="color:#a6d189">[::]:80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#81c8be">return</span> <span style="color:#ef9f76">404</span>; <span style="color:#737994;font-style:italic"># managed by Certbot
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#737994;font-style:italic"></span>}
|
||||
</span></span></code></pre></div><p>The main point of this config is the <code>/admin</code> location that you need to pass the lighttpd port to acces the website, you can just do it on your main website also.
|
||||
Also to make lighttpd work with nginx listening on port 80 you need to edit the <code>server.port</code> to port you wan&rsquo;t to use in lighttpd config file located at <code>/etc/lighttpd/lighttpd.conf</code> and then just restart lighttpd</p>
|
||||
</span></span></code></pre></div><p>The main point of this config is the <code>/admin</code> location that you need to pass the
|
||||
lighttpd port to acces the website, you can just do it on your main website
|
||||
also. Also to make lighttpd work with nginx listening on port 80 you need to
|
||||
edit the <code>server.port</code> to port you wan&rsquo;t to use in lighttpd config file located
|
||||
at <code>/etc/lighttpd/lighttpd.conf</code> and then just restart lighttpd</p>
|
||||
<h2 id="2-unbound">2. Unbound</h2>
|
||||
<p>For this part I will just link the pi-hole&rsquo;s unbound documentation because it is the most correct one and updated as things change regulary.
|
||||
<p>For this part I will just link the pi-hole&rsquo;s unbound documentation because it is
|
||||
the most correct one and updated as things change regulary.
|
||||
<a href="https://docs.pi-hole.net/guides/dns/unbound/">Pi-hole unbound docs</a></p>
|
||||
<h2 id="3-dns-over-tls">3. DNS over TLS</h2>
|
||||
<p>For dns over tls you need to first have a ssl certificate. I recommend on using certbot to generate one with this command <code>certbot --nginx -d dot.example.com</code>.</p>
|
||||
<p>Next you will need a reverse proxy, in my case I use nginx. You will need to add this configuration to your main nginx config located at <code>/etc/nginx/nginx.conf</code>. <strong>Make sure to add this outside of the http block and change example.com to your domain</strong></p>
|
||||
<p>For dns over tls you need to first have a ssl certificate. I recommend on using
|
||||
certbot to generate one with this command <code>certbot --nginx -d dot.example.com</code>.</p>
|
||||
<p>Next you will need a reverse proxy, in my case I use nginx. You will need to add
|
||||
this configuration to your main nginx config located at <code>/etc/nginx/nginx.conf</code>.
|
||||
<strong>Make sure to add this outside of the http block and change example.com to your
|
||||
domain</strong></p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#ca9ee6">stream</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#81c8be">log_format</span> <span style="color:#a6d189">basic</span> <span style="color:#a6d189">&#39;</span><span style="color:#f2d5cf">$remote_addr</span> <span style="color:#a6d189">[</span><span style="color:#f2d5cf">$time_local]</span> <span style="color:#f2d5cf">$protocol</span> <span style="color:#f2d5cf">$status</span> <span style="color:#f2d5cf">$bytes_sent</span> <span style="color:#f2d5cf">$bytes_received</span> <span style="color:#f2d5cf">$session_time</span> <span style="color:#f2d5cf">$upstream_addr&#39;</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
|
@ -711,9 +730,14 @@ Also to make lighttpd work with nginx listening on port 80 you need to edit the
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#81c8be">proxy_timeout</span> <span style="color:#a6d189">1s</span>;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><p>Also make sure to enable port 853, example ufw command is <code>ufw allow 853/tcp</code>. Then restart nginx, to test if this configuration is working you can use your android phone by setting the private dns address to <code>dot.example.com</code> and then visit the website<a href="https://dnsleaktest.com">dnsleaktest</a></p>
|
||||
</span></span></code></pre></div><p>Also make sure to enable port 853, example ufw command is <code>ufw allow 853/tcp</code>.
|
||||
Then restart nginx, to test if this configuration is working you can use your
|
||||
android phone by setting the private dns address to <code>dot.example.com</code> and then
|
||||
visit the website<a href="https://dnsleaktest.com">dnsleaktest</a></p>
|
||||
<h2 id="4-dns-over-https">4. DNS over HTTPS</h2>
|
||||
<p>For using dns over https we will be installing additional package called dnsdinst. On debian systems just run <code>apt install dnsdinst</code>. Next you will need to setup dnsdinst config and restart it. Make sure to change example.com.</p>
|
||||
<p>For using dns over https we will be installing additional package called
|
||||
dnsdinst. On debian systems just run <code>apt install dnsdinst</code>. Next you will need
|
||||
to setup dnsdinst config and restart it. Make sure to change example.com.</p>
|
||||
<pre tabindex="0"><code class="language-conf" data-lang="conf">-- dnsdist configuration file, an example can be found in /usr/share/doc/dnsdist/examples/
|
||||
|
||||
-- disable security status polling via DNS
|
||||
|
@ -730,7 +754,11 @@ newServer({address=&#34;127.0.0.1&#34;, name=&#34;Pi-hole&#34;,
|
|||
|
||||
-- Create local DOH server listener in DNS over HTTP mode, otherwise the information coming from nginx won&#39;t be processed well
|
||||
addDOHLocal(&#34;127.0.0.1:5300&#34;, nil, nil, &#34;/dns-query&#34;, { reusePort=true })
|
||||
</code></pre><p>Next we will need another ssl certificate for the doh domain, for that we will once again using certbot with this command <code>certbot --nginx -d doh.example.com</code>after that add this configuratin to nginx either in sites-available and linking it to sites enabled or in http block in main nginx configuration.</p>
|
||||
</code></pre><p>Next we will need another ssl certificate for the doh domain, for that we will
|
||||
once again using certbot with this command
|
||||
<code>certbot --nginx -d doh.example.com</code>after that add this configuratin to nginx
|
||||
either in sites-available and linking it to sites enabled or in http block in
|
||||
main nginx configuration.</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#737994;font-style:italic"># Proxy Cache storage - so we can cache the DoH response from the upstream
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#737994;font-style:italic"></span><span style="color:#ca9ee6">proxy_cache_path</span> <span style="color:#a6d189">/var/run/doh_cache</span> <span style="color:#a6d189">levels=1:2</span> <span style="color:#a6d189">keys_zone=doh_cache:10m</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
|
@ -780,8 +808,12 @@ addDOHLocal(&#34;127.0.0.1:5300&#34;, nil, nil, &#34;/dns-query&
|
|||
</span></span></span><span style="display:flex;"><span><span style="color:#737994;font-style:italic"></span> <span style="color:#81c8be">proxy_set_header</span> <span style="color:#a6d189">X-Forwarded-For</span> <span style="color:#f2d5cf">$proxy_add_x_forwarded_for</span>;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><p>After restarting nginx with this configuration you can it to your web browser as a DNS over HTTPS resolver and once again checkout <a href="https://dnsleaktest.com">dnsleaktest</a> website and check if it is all working.</p>
|
||||
<p>Hope this has been helpfull and if anybody has any way on how to make this guied better you can open a pull request or make an issue on the website&rsquo;s <a href="https://code.cronyakatsuki.xyz/crony/website">repo</a>.</p>
|
||||
</span></span></code></pre></div><p>After restarting nginx with this configuration you can it to your web browser as
|
||||
a DNS over HTTPS resolver and once again checkout
|
||||
<a href="https://dnsleaktest.com">dnsleaktest</a> website and check if it is all working.</p>
|
||||
<p>Hope this has been helpfull and if anybody has any way on how to make this guied
|
||||
better you can open a pull request or make an issue on the website&rsquo;s
|
||||
<a href="https://git.cronyakatsuki.xyz/crony/cronyakatsuki.xyz">repo</a>.</p>
|
||||
</description>
|
||||
</item>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue