內容目錄
隱藏
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