From 8271543fd86eb43a0d3d09488595073b03d50559 Mon Sep 17 00:00:00 2001 From: Carlos <835129+cvscarlos@users.noreply.github.com> Date: Thu, 11 Jan 2024 19:40:41 +0100 Subject: [PATCH 1/2] docs: add guide to use DNS-over-HTTPS with `AdguardTeam/dnsproxy` Signed-off-by: Carlos <835129+cvscarlos@users.noreply.github.com> --- docs/guides/dns/dnsproxy-doh.md | 113 ++++++++++++++++++++ docs/images/screenshot-dnsproxy-adguard.png | Bin 0 -> 70272 bytes mkdocs.yml | 1 + 3 files changed, 114 insertions(+) create mode 100644 docs/guides/dns/dnsproxy-doh.md create mode 100644 docs/images/screenshot-dnsproxy-adguard.png diff --git a/docs/guides/dns/dnsproxy-doh.md b/docs/guides/dns/dnsproxy-doh.md new file mode 100644 index 000000000..70838ed09 --- /dev/null +++ b/docs/guides/dns/dnsproxy-doh.md @@ -0,0 +1,113 @@ +## Configuring DNS-Over-HTTPS using `dnsproxy` + +This guide shows how to install the [dnsproxy](https://github.com/AdguardTeam/dnsproxy) tool (created by AdguardTeam). + +These steps where tested on a Ubuntu Server 22. + +But should work on any Linux distributionm, maybe with some minor changes. + +--- + +### Installing `dnsproxy` + +You just need to download it from the [releases page](https://github.com/AdguardTeam/dnsproxy/releases). Choose your architecture and download the binary. + +For this guide we will use the `dnsproxy-linux-amd64-v0.61.1.tar.gz` binary available at https://github.com/AdguardTeam/dnsproxy/releases/download/v0.61.1/dnsproxy-linux-amd64-v0.61.1.tar.gz + + +```bash +wget https://github.com/AdguardTeam/dnsproxy/releases/download/v0.61.1/dnsproxy-linux-amd64-v0.61.1.tar.gz +tar -zxvf dnsproxy-linux-amd64-v0.61.1.tar.gz +mv linux-amd64/dnsproxy ./ +``` + +--- + +### Configuring `dnsproxy` to run on startup + +1. Copy the `dnsproxy` binary to `/usr/bin`: + ```bash + sudo cp ./dnsproxy /usr/bin/ + ``` +2. Create a `dnsproxy` user to run the daemon: + ```bash + sudo useradd -s /usr/sbin/nologin -r -M dnsproxy + ``` +3. Allow the `dnsproxy` user to run the `dnsproxy` binary: + ```bash + sudo chown dnsproxy:dnsproxy /usr/bin/dnsproxy + ``` +4. Create a service file for `dnsproxy`: + ```bash + sudo nano /etc/systemd/system/dnsproxy.service + ``` + And copy the following into `/etc/systemd/system/dnsproxy.service`. + This will control the running of the service and allow it to run on startup: + ```ini + [Unit] + Description=DNS Proxy over HTTPS + After=syslog.target network-online.target + + [Service] + Type=simple + User=dnsproxy + ExecStart=/usr/bin/dnsproxy -l 127.0.0.1 -p 5353 -u https://cloudflare-dns.com/dns-query -u https://dns.google/dns-query + Restart=on-failure + RestartSec=10 + KillMode=process + + [Install] + WantedBy=multi-user.target + ``` +5. Enable the `systemd` service to run on startup, then start the service and check its status: + ```bash + sudo systemctl enable dnsproxy + sudo systemctl start dnsproxy + sudo systemctl status dnsproxy + ``` +6. Now test that it is working! Run the following `dig` command, a response should be returned similar to the one below: + ```bash + $ dig @127.0.0.1 -p 5353 example.com + + ; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> @127.0.0.1 -p 5353 example.com + ; (1 server found) + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45290 + ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 1232 + ;; QUESTION SECTION: + ;example.com. IN A + + ;; ANSWER SECTION: + example.com. 79150 IN A 93.184.216.34 + + ;; Query time: 20 msec + ;; SERVER: 127.0.0.1#5353(127.0.0.1) (UDP) + ;; WHEN: Thu Jan 11 18:28:05 UTC 2024 + ;; MSG SIZE rcvd: 56 + ``` + +--- + +### Configuring Pi-hole + +On the Pi-hole web interface, go to `Settings > DNS` and set the following: + +![Screenshot of Pi-hole configuration](/images/screenshot-dnsproxy-adguard.png) + +### Uninstalling `dnsproxy` + +```bash +sudo systemctl stop dnsproxy +sudo systemctl disable dnsproxy +sudo systemctl daemon-reload +sudo deluser dnsproxy +sudo rm /usr/bin/dnsproxy +``` + +--- + +Guide based on the `cloudflared` guide from the [Pi-hole documentation](/guides/dns/cloudflared/). diff --git a/docs/images/screenshot-dnsproxy-adguard.png b/docs/images/screenshot-dnsproxy-adguard.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b6e0879038f89bd871fb6d9e41860258f7e5f5 GIT binary patch literal 70272 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 z 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 O0H`bLDAg<2ME(ySRsYxk literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index 5bb55224d..b1ad3539f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -150,6 +150,7 @@ nav: - 'unbound': guides/dns/unbound.md - 'cloudflared (DoH)': guides/dns/cloudflared.md - 'Upstream DNS Providers': guides/dns/upstream-dns-providers.md + - 'dnsproxy (DoH)': guides/dns/dnsproxy-doh.md - 'VPN': - 'WireGuard': - 'Overview': guides/vpn/wireguard/overview.md From dff031af6bda46db261971c34f5da5f43732f89d Mon Sep 17 00:00:00 2001 From: Carlos <835129+cvscarlos@users.noreply.github.com> Date: Fri, 12 Jan 2024 06:11:16 +0100 Subject: [PATCH 2/2] docs: add guide to use DNS-over-HTTPS with `AdguardTeam/dnsproxy` Signed-off-by: Carlos <835129+cvscarlos@users.noreply.github.com> --- docs/guides/dns/dnsproxy-doh.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/guides/dns/dnsproxy-doh.md b/docs/guides/dns/dnsproxy-doh.md index 70838ed09..1cfbd76ef 100644 --- a/docs/guides/dns/dnsproxy-doh.md +++ b/docs/guides/dns/dnsproxy-doh.md @@ -12,7 +12,7 @@ But should work on any Linux distributionm, maybe with some minor changes. You just need to download it from the [releases page](https://github.com/AdguardTeam/dnsproxy/releases). Choose your architecture and download the binary. -For this guide we will use the `dnsproxy-linux-amd64-v0.61.1.tar.gz` binary available at https://github.com/AdguardTeam/dnsproxy/releases/download/v0.61.1/dnsproxy-linux-amd64-v0.61.1.tar.gz +For this guide we will use the `dnsproxy-linux-amd64-v0.61.1.tar.gz` binary available at `https://github.com/AdguardTeam/dnsproxy/releases/download/v0.61.1/dnsproxy-linux-amd64-v0.61.1.tar.gz` ```bash @@ -26,23 +26,32 @@ mv linux-amd64/dnsproxy ./ ### Configuring `dnsproxy` to run on startup 1. Copy the `dnsproxy` binary to `/usr/bin`: + ```bash sudo cp ./dnsproxy /usr/bin/ ``` + 2. Create a `dnsproxy` user to run the daemon: + ```bash sudo useradd -s /usr/sbin/nologin -r -M dnsproxy ``` + 3. Allow the `dnsproxy` user to run the `dnsproxy` binary: + ```bash sudo chown dnsproxy:dnsproxy /usr/bin/dnsproxy ``` + 4. Create a service file for `dnsproxy`: + ```bash sudo nano /etc/systemd/system/dnsproxy.service ``` + And copy the following into `/etc/systemd/system/dnsproxy.service`. This will control the running of the service and allow it to run on startup: + ```ini [Unit] Description=DNS Proxy over HTTPS @@ -59,13 +68,17 @@ mv linux-amd64/dnsproxy ./ [Install] WantedBy=multi-user.target ``` + 5. Enable the `systemd` service to run on startup, then start the service and check its status: + ```bash sudo systemctl enable dnsproxy sudo systemctl start dnsproxy sudo systemctl status dnsproxy ``` + 6. Now test that it is working! Run the following `dig` command, a response should be returned similar to the one below: + ```bash $ dig @127.0.0.1 -p 5353 example.com @@ -79,10 +92,10 @@ mv linux-amd64/dnsproxy ./ ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: - ;example.com. IN A + ;example.com. IN A ;; ANSWER SECTION: - example.com. 79150 IN A 93.184.216.34 + example.com. 79150 IN A 93.184.216.34 ;; Query time: 20 msec ;; SERVER: 127.0.0.1#5353(127.0.0.1) (UDP)