Contents

AdGuard Home 架設可防廣告 DNS Server

其實這個已經玩很久了,之前應該有要記錄這篇,但忘記什麼原因就沒紀錄了。可能太過簡單了,就沒記錄。🤣
最近我朋友跟我索取動物機,這邊準備要搬到3代動物機,順便留一些記錄。

心智圖

mindmap root((AdGuard)) 介紹 使用 docker 安裝 相關配置 DNS 每秒連線數調整無限制 DNS 改寫 DNS 封鎖清單

AdGuard Home

https://user-images.githubusercontent.com/6058558/224492863-2db5083b-91ba-492b-a76e-b02db23b7584.png

Warning
這邊可能你設定,在看 Youtube 時候還會看到廣告,原因不是 DNS 沒用。因為是…APP使用 DNS over HTTPS(DoT),所以你的 DNS 根本沒辦法阻擋,目前這個方法是無解的。

安裝

這邊其實只要執行檔執行就可以了,因為 Golang 可編譯跨平台執行真的超級方便的。Docker run 也可以簡單完成,官方就有 Docker 映像檔可以用。這邊還發現各種架構都支援。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash

mkdir -p $PWD/adguardhome/workdir
mkdir -p $PWD/adguardhome/confdir

    #-p 3000:3000/tcp\
docker run --name adguardhome\
    --restart unless-stopped\
  -v $PWD/adguardhome/workdir:/opt/adguardhome/work \
  -v $PWD/adguardhome/confdir:/opt/adguardhome/conf \
    -p 53:53/tcp -p 53:53/udp\
    -p 67:67/udp -p 68:68/udp\
    -p 80:80/tcp -p 443:443/tcp -p 443:443/udp\
    -p 853:853/tcp\
    -p 3000:3000/tcp\
    -p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
    -p 5443:5443/tcp -p 5443:5443/udp\
    -d adguard/adguardhome
Tip
1
docker: Error response from daemon: driver failed programming external connectivity on endpoint adguardhome (a0ab6e2a1463854f6d2fd39f5b3c299c0e4d9312a7cc026cca043d1b8acccc03): failed to bind port 0.0.0.0:53/tcp: Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use.

2024-07-22 Ubuntu 今天安裝執行發現這個錯誤,

1
2
3
4
5
6
7
8
#停止 DNSStubListener
systemctl stop systemd-resolved

#建立資料夾(如果不存在)
sudo mkdir -p /etc/systemd/resolved.conf.d/

#使用 Nano 建立組態檔案
sudo vim /etc/systemd/resolved.conf.d/adguardhome.conf
1
2
3
4
5
6
7
8
在編輯器中貼上以下內容:
[Resolve]
DNS=127.0.0.1
DNSStubListener=no

保存後執行以下命令。
#重啟 DNSStubListener
systemctl restart systemd-resolved

注意!以下指令我就沒設定,因為發現以下是重新指令派送 DNS設定檔案,但我 DNS 剛好式同一台,所以我就沒設定這個。
以下指令我就沒設定,可以參考!!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 以下指令我就沒設定,可以參考看看要不要執行。因為我判斷預設是連到自己的 DNS,所以我就沒設定。
# malagege@malagege-NucBox-G3:~/adguardhome$ ls -l /etc/resolv.conf
# lrwxrwxrwx 1 root root 39  4月 24 18:47 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
#建立備份
sudo mv /etc/resolv.conf /etc/resolv.conf.backup

#將 /etc/resolv.conf 連結至 /run/systemd/resolve/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

#重啟 DNSStubListener
systemctl restart systemd-resolved

詳細可以參考,每篇設定方式不太一樣:

介紹 systemd-resolved 相關文章:

上面還滿多Port,我看官方 Port 設定,可以拿掉沒有要用的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    -p 53:53/tcp -p 53:53/udp: plain DNS.

    -p 67:67/udp -p 68:68/tcp -p 68:68/udp: add if you intend to use AdGuard Home as a DHCP server.

    -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp: add if you are going to use AdGuard Home's admin panel as well as run AdGuard Home as an HTTPS/DNS-over-HTTPS server.

    -p 853:853/tcp: add if you are going to run AdGuard Home as a DNS-over-TLS server.

    -p 784:784/udp -p 853:853/udp -p 8853:8853/udp: add if you are going to run AdGuard Home as a DNS-over-QUIC server. You may only leave one or two of these.

    -p 5443:5443/tcp -p 5443:5443/udp: add if you are going to run AdGuard Home as a DNSCrypt server.

因為我 3000 web port 已經有服務再用,所以我直接從 80 倒進 3000 port。之後好像 port會變成 80再改回去。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash

mkdir -p $PWD/adguardhome/workdir
mkdir -p $PWD/adguardhome/confdir

docker run --name adguardhome\
    --restart unless-stopped\
  -v $PWD/adguardhome/workdir:/opt/adguardhome/work \
  -v $PWD/adguardhome/confdir:/opt/adguardhome/conf \
    -p 53:53/tcp -p 53:53/udp\
    -p 80:3000/tcp\
    -p 5443:5443/tcp -p 5443:5443/udp\
    -d adguard/adguardhome

進去網站設定。

  1. 點選開始
    https://i.imgur.com/6LHbtWw.png

  2. 設定帳號密碼
    https://user-images.githubusercontent.com/6058558/224495819-a040c993-5961-4070-aa80-ddfeb4fc59a7.png

  3. 在路由器設定 Dns。
    https://user-images.githubusercontent.com/6058558/224495861-ddcffcdb-aff5-4a54-b387-66ae5938602f.png

Warning
這邊注意!!不是每一個路由器做 DHCP 派送會有 DNS 設定。像是中華電信 P883 沒有這個設定,所以無法做調整,但我在我的防火牆那台設定。沒支援也沒關係,可以把你的路由器 DHCP關掉,開啟 AdGuard Home 裡面的 DHCP,也可以解決這個問題。注意!!一個區網只能有一個 DHCP Server!!
https://user-images.githubusercontent.com/6058558/224497031-587392de-3e4b-4925-9b68-e8391305b020.png

https://user-images.githubusercontent.com/6058558/224495873-d3feffd1-930c-4493-b107-faa58fe63d92.png

其實到這邊就可以結束了。

DNS 每秒連線數調整無限制

https://user-images.githubusercontent.com/6058558/224689010-dc0dc827-3774-4a38-b036-34b6103883f8.png

有看到別的網站有做這個限制,不過我前面是沒調整,但也沒遇到什麼問題。網路文章上看到說調整這個設定,區網沒必要做限制,但對外網路可能就需要。

DNS 改寫

https://user-images.githubusercontent.com/6058558/224493991-7318fa65-4459-4171-9d64-2300369e4e74.png

因為有一組外網 DNS,希望可以直連內網 IP,可以這樣做設定,這樣也能 TLS 連線安全。

DNS 封鎖清單

https://user-images.githubusercontent.com/6058558/224493271-0f155f51-4770-42f4-9bea-c3b6998650ff.png

舊的安裝記錄

adguard/adguardhome:armhf-latest以前都要做 armhf-latest,之後版本都不需要做設定。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

mkdir -p $PWD/adguardhome/workdir
mkdir -p $PWD/adguardhome/confdir
docker rm -f adguardhome
docker run \
  -d \
  --name=adguardhome \
  --restart=always \
  -v $PWD/adguardhome/workdir:/opt/adguardhome/work \
  -v $PWD/adguardhome/confdir:/opt/adguardhome/conf \
  -p 53:53/tcp \
  -p 53:53/udp \
  -p 67:67/udp \
  -p 69:68/tcp \
  -p 69:68/udp \
  -p 80:80/tcp \
  -p 443:443/tcp \
  -p 853:853/tcp \
  -p 3000:3000/tcp \
  adguard/adguardhome:armhf-latest