Server ,Networking ,Photography

By

AdGuardHome DNS, DoT ,DoH


A.DNS ,DoT ,DoH簡介

1.DNS

DNS是域名解析系統的簡稱,負責將域名轉換成對應的伺服器IP
由客戶端向伺服器發送DNS request, 伺服器返回該域名對應的DNS record
傳統DNS通常跑在TCP 53 port,且使用明文傳輸

(DNS recoard大部分是type A或type AAAA,即對應IPv4和IPv6, 也有SRV之類特殊用法
這裡不展開介紹)
更詳細的DNS介紹:Cloudflare:What is DNS
常用公開DNS:
Cloudflare: 1.1.1.1
Google: 8.8.8.8
中華電信: 168.95.1.1

2.DNS over tls (DOT)

上面提到,傳統DNS是以明文傳輸,就像HTTP一樣容易被截獲、竄改 
所以衍伸出利用TLS加密DNS流量的服務
DoT一般跑在TCP 853 port上
常用DoT伺服器:
Cloudflare: tls://1.1.1.1 
Google: tls://8.8.8.8

3.DNS OVER HTTPS (DOH)

由於HTTPS早就用上TLS加密,藉由HTTPS實現的DNS加密 DoH也出現了
但由於DoH的伺服器位址本身也是域名 所以需要用Bootstrap DNS先獲取DoH的server位址
由於其使用HTTPS的原因 所以也使用TCP 443傳輸,且非常容易與瀏覽器相容
常用DoH伺服器:
Cloudflare: https://cloudflare-dns.com/dns-query
Google: https://dns.google/dns-query
Quad9: https://dns.quad9.net/dns-query

B.如何啟用DoT/DoH

1.Android

安卓從Android9以後就原生支援DoT/DoH 以原生安卓為例 
在設定>網路和網際網路>私人DNS

註:開啟私人DNS時 若選擇的DNS伺服器無法提供服務將導致系統DNS不可用 因而斷網

2.Windows10/11

Windows10並不原生支援用戶自行設定DoH,但Windows11已內建相關功能
在設定>網際網路>DNS指派 下方可以開啟DoH後填入自己的DoH伺服器

3.Linux

在Linux上 可以使用systemd-resolved以使用DoT
安裝systemd-resolved  (fedora需將apt換成dnf)
sudo apt install systemd-resolved
啟動systemd-resolved
sudo systemctl enable systemd-resolved
重啟一下 因為systemd可能跟resolv.conf衝突
sudo reboot
編輯config檔案後儲存(也可使用nano代替vim)
vim /etc/systemd/resolved.conf
將Dns-over-tls及DNS兩個項目反註釋 
DNSOverTLS 後面改成yes
DNS後面改成選用的DNS 格式爲 {DNS IP}#{DNS 域名}
這邊填入域名是為了驗證DoT的SSL證書
Fallback DNS是備用伺服器 如果主要DNS是自架伺服器之類的建議填上
[Resolve]
DNS= 1.1.1.1#cloudflare-dns.com
FallbackDNS= 8.8.8.8#dns.google
#Domains=
#DNSSEC=no
DNSOverTLS=yes
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no
完成後重啟一下systemd-resolved
sudo systemctl restart systemd-resolved

4.Browser/瀏覽器

FireFox

Settings>Privacy&Securuty>Dns-over-Https

建議選擇中間的increased protection,在DoH可用時都使用加密連線

Chrome

設定>隱私與安全性>安全性>使用安全DNS

C.安裝AdGuardHome

1.安裝環境

VM,LXC Container

使用官方的一鍵安裝腳本
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

Docker

安裝官方的Docker image 
Dockerhub連結
docker pull adguard/adguardhome

2.初始設定

在瀏覽器輸入 https://伺服器IP:3000 就可以進入初始化安裝頁面
第二步 設定管理介面/DNS界面 留預設就好
第三步 設定自己的用戶名與密碼
接下來會顯示管理端口的位址 點下一步再點中間的按鈕前往管理頁面就算安裝完成了

3.基本設定

a.DNS設定

前往"設定>DNS設定" 頁面

上游DNS(Upstream DNS)

上游DNS就是AdGuardHome請求DNS的位置 一般沒有特殊需求的話填Google,Cloudflare之類常用公開DNS就好 也可以使用DoT或DoH加強安全性
下方選項解釋:

Load-balancing :負載均衡 一般沒必要使用
會輪流使用upsteam以減輕單伺服器負擔 但對公開伺服器來說應該不用擔心

Parallel request :並行查詢 會同時對所有upstream發出查詢並使用最快回覆的
可以提高DNS請求的響應速度

Fastest IP address (推薦): 最低延遲 會在所有Upstream的回覆中取IP延遲最低的結果回覆
由於是取用延遲最低的IP 理論上可以降低延遲 提升使用體驗(例如Youtube,遊戲伺服器等)
注意! 由於要查詢所有upstream 要等所有伺服器返回結果 建議不要在Upstream放高延遲的伺服器 會導致DNS響應時間變長

備用DNS(Fallback DNS)

備用DNS是在上方upstream都沒有響應時作為備援的 建議不要在此使用DoH與DoT

引導DNS (Bootstrap DNS)

引導DNS是用來查詢DoT與DoH域名的 在Upstream含有DoT及DoH的時候務必填入 
僅可使用Plain DNS ,不可使用DoH與DoT

b.DoH/DoT設定

前往"設定>加密設定"

開啟DoT/DoH

把DoT/DoH的選項打開 下面Plain DNS預設就是開啟的
下面service port留預設就好了

設定SSL證書

首先在伺服器跑一下Letsencrypt取得SSL證書,已有證書者可略過 (記得先把本機80,443Forwd到外網)

sudo certbot certonly --standalone -d 你的域名.com

回到AdGuardHome頁面 輸入證書及密鑰的位置

Leave a Reply

Your email address will not be published. Required fields are marked *

WHAT’S NEW

  • AdGuardHome DNS, DoT ,DoH

  • Truenas 故障排除: format DIF unsupport

  • WordPress & LEMP 自架部落格