summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Smith <Luke Smith>2022-07-01 20:16:22 -0400
committerLuke Smith <Luke Smith>2022-07-01 20:16:22 -0400
commit3d0d763bc719fbd8f65276c78536e7b3528814b0 (patch)
treee2653105db8c5bedc814f21d7d7022abc4e682ff
parent0d9ba39dd0e73c9c19a6fae7aee97a5b05cb0358 (diff)
dns over https draft in hugo
-rw-r--r--content/dns-over-http.md148
-rw-r--r--doh-server.html121
2 files changed, 148 insertions, 121 deletions
diff --git a/content/dns-over-http.md b/content/dns-over-http.md
new file mode 100644
index 0000000..079439c
--- /dev/null
+++ b/content/dns-over-http.md
@@ -0,0 +1,148 @@
+---
+title: "Run your own DNS over HTTPS server."
+tags: ['service']
+draft: true
+---
+
+Encrypted DNS can be a great tool for your online privacy if it\'s
+hosted by a trustworthy entity, and who can you trust more with your
+data than yourself?
+
+## Installing Unbound.
+
+First of all, we need to install our DNS server, Unbound. Unbound is a
+validating, recursive and caching DNS server.
+
+```sh
+apt install -y unbound
+```
+
+### Now that Unbound is installed, we will configure it a bit.
+
+Using your favorite editor, edit the file `/etc/unbound/unbound.conf`
+and add the following values, if they don\'t exist already:
+
+```
+include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"
+server:
+ log-queries: no
+ log-replies: no
+ aggressive-nsec: yes
+ ratelimit: 150
+ verbosity: 1
+ ```
+
+Now restart Unbound to activate your new configuration:
+
+ ```sh
+ systemctl restart unbound
+ ```
+
+To test to see if your DNS server is resolving, add
+`nameserver 127.0.0.1` to your `/etc/resolv.conf`. If you are able to
+resolve domains, Unbound is working.
+
+## Installing DNSS.
+
+Now we need to install a program to convert HTTP requests to DNS
+queries. `dnss` accomplishes that goal very well.
+
+To install DNSS, run the following command:
+
+```sh
+apt install -y dnss
+```
+
+### Configuring DNSS.
+
+DNSS comes with a bad default configuration, disable it using the
+following command:
+
+```sh
+systemctl disable --now dnss dnss.socket
+```
+
+Now, using your favorite text editor, create a new file in
+`/etc/systemd/system` named `doh.service`. This will be the new DNSS
+configuration file. Add the following values to the file:
+
+```systemd
+[Unit]
+Description=DNSS DNS over HTTPS Proxy
+[Service]
+ExecStart=/usr/bin/dnss \
+ -enable_https_to_dns \
+ -https_server_addr 127.0.0.1:8080 \
+ -insecure_http_server \
+ -dns_upstream 127.0.0.1:53
+
+Type=simple
+Restart=always
+User=dnss
+Group=dnss
+
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE
+ProtectSystem=full
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Close the file and enable/start it using the command:
+
+```sh
+systemctl enable --now doh.service
+```
+
+## Setting up Nginx.
+
+To set up Nginx with HTTPS, follow [these](/nginx) [guides](/certbot).
+
+Once you\'ve gotten all of that set up, we\'ll reverse proxy our HTTPS
+to DNS proxy. Open up your Nginx config file, and add the following
+values:
+
+```nginx
+location /dns-query {
+ proxy_pass http://127.0.0.1:8080/;
+}
+```
+
+Now, your configuration should look something like this:
+
+```nginx
+server {
+ listen 80;
+ server_name landchad.net;
+ return 301 https://$host$request_uri;
+}
+server {
+ listen 443 ssl http2;
+ server_name landchad.net;
+ root /var/www/landchad;
+ ssl_certificate /etc/letsencrypt/live/landchad.net/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/landchad.net/privkey.pem;
+ location /dns-query {
+ proxy_pass http://127.0.0.1:8080/;
+ }
+}
+```
+
+Finally, you can check your Nginx config using `nginx -t`, if the check
+passes, restart Nginx using the command:
+
+```sh
+systemctl restart nginx
+```
+
+## Using your DNS over HTTPS server.
+
+To use your new DNS over HTTPS server, go to your browser\'s settings
+and navigate to the \"Network Settings\" area. You should be able to set
+a custom secure DNS url. Once set, you can check to see if it\'s working
+by attempting to resolve domains, and by testing your browser with
+[whatismydnsserver.com](http://www.whatsmydnsserver.com/).
+
+## Contributor
+
+[Josiah.](https://ioens.is)
diff --git a/doh-server.html b/doh-server.html
deleted file mode 100644
index ca38e1d..0000000
--- a/doh-server.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html>
-<html lang=en>
- <head>
- <title>Personal DNS over HTTPS server &ndash; LandChad.net</title>
- <meta charset="utf-8"/>
- <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
- <link rel='stylesheet' type='text/css' href='style.css'>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel='alternate' type='application/rss+xml' title='Land Chad RSS' href='/rss.xml'>
- </head>
-<body>
- <header><h1>Run your own DNS over HTTPS server.</h1></header>
- <nav></nav>
- <main>
- <p>Encrypted DNS can be a great tool for your online privacy if it's hosted by a trustworthy entity, and who can you trust more with your data than yourself?
- </p>
-
- <h2>Installing Unbound.</h2>
-
- <p>First of all, we need to install our DNS server, Unbound. Unbound is a validating, recursive and caching DNS server.
- </p>
- <pre><code>apt install -y unbound</code></pre>
-
- <h3>Now that Unbound is installed, we will configure it a bit.
- </h3>
- <p>Using your favorite editor, edit the file <code>/etc/unbound/unbound.conf</code> and add the following values, if they don't exist already:
- <pre><code>include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"
-server:
- log-queries: no
- log-replies: no
- aggressive-nsec: yes
- ratelimit: 150
- verbosity: 1</code></pre>
-
- <p>Now restart Unbound to activate your new configuration:
- </p>
- <pre><code> systemctl restart unbound</code></pre>
- <p>To test to see if your DNS server is resolving, add <code>nameserver 127.0.0.1</code> to your <code>/etc/resolv.conf</code>. If you are able to resolve domains, Unbound is working.
- </p>
-
- <h2>Installing DNSS.</h2>
-
- <p>Now we need to install a program to convert HTTP requests to DNS queries. <code>dnss</code> accomplishes that goal very well.
- </p>
- <p>To install DNSS, run the following command:
- </p>
- <code><pre>apt install -y dnss</code></pre>
-
- <h3>Configuring DNSS.</h3>
-
- <p>DNSS comes with a bad default configuration, disable it using the following command:
- </p>
- <pre><code>systemctl disable --now dnss dnss.socket</code></pre>
-
- <p>Now, using your favorite text editor, create a new file in <code>/etc/systemd/system</code> named <code>doh.service</code>. This will be the new DNSS configuration file. Add the following values to the file:
- </p>
- <pre><code>[Unit]
-Description=DNSS DNS over HTTPS Proxy
-[Service]
-ExecStart=/usr/bin/dnss \
- -enable_https_to_dns \
- -https_server_addr 127.0.0.1:8080 \
- -insecure_http_server \
- -dns_upstream 127.0.0.1:53
-
-Type=simple
-Restart=always
-User=dnss
-Group=dnss
-
-CapabilityBoundingSet=CAP_NET_BIND_SERVICE
-ProtectSystem=full
-
-[Install]
-WantedBy=multi-user.target</code></pre>
-
- <p>Close the file and enable/start it using the command:
- </p>
- <pre><code>systemctl enable --now doh.service</code></pre>
-
- <h2>Setting up Nginx.</h2>
-
- <p>To set up Nginx with HTTPS, follow <a href="https://landchad.net/nginx.html">these</a> <a href=https://landchad.net/certbot.html>guides.</a>
- </p>
- <p>Once you've gotten all of that set up, we'll reverse proxy our HTTPS to DNS proxy. Open up your Nginx config file, and add the following values:
- </p>
- <pre><code>location /dns-query {
- proxy_pass http://127.0.0.1:8080/;
-}</code></pre>
- <p>Now, your configuration should look something like this:
- </p>
- <pre><code>server {
- listen 80;
- server_name landchad.net;
- return 301 https://$host$request_uri;
-}
-server {
- listen 443 ssl http2;
- server_name landchad.net;
- root /var/www/landchad;
- ssl_certificate /etc/letsencrypt/live/landchad.net/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/landchad.net/privkey.pem;
- location /dns-query {
- proxy_pass http://127.0.0.1:8080/;
- }
-}</code></pre>
-
- <p>Finally, you can check your Nginx config using <code>nginx -t</code>, if the check passes, restart Nginx using the command:
- <pre><code>systemctl restart nginx</code></pre>
-
- <h2>Using your DNS over HTTPS server.</h2>
-
- <p>To use your new DNS over HTTPS server, go to your browser's settings and navigate to the "Network Settings" area. You should be able to set a custom secure DNS url. Once set, you can check to see if it's working by attempting to resolve domains, and by testing your browser with <a href="http://www.whatsmydnsserver.com/">whatismydnsserver.com</a>.
- </p>
- <p><strong>Written by <a href="https://ioens.is">Josiah.</a></strong></p>
- </main>
- <footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><li><a href="index.html"><img src="pix/chad.gif" alt="chad"></a></li><li><a href="rss.xml"><img src="pix/rss.svg" alt="RSS"></a></li><li><a href="pix/btc.png"><img src="pix/btc.svg" alt="BTC"></a></li><li><a href="pix/xmr.png"><img src="pix/xmr.svg" alt="XMR"></a></li><li><a href="https://github.com/lukesmithxyz/landchad"><img src="pix/git.svg" alt="Github"></a></footer>
-</body>
-</html>
-
-