近期使用cn.bing.com時經常需要多次刷新才能顯示搜索結果,推測是DNS解析再次受到干擾。為此我搜索了DNS服務相關的解決方案,發現NextDNS提供每月30萬次免費查詢額度,基本上能滿足個人需求。即使需要升級付費套餐,每月僅需12元的價格也頗具性價比。
NextDNS的配置流程較為簡單,官方教學已涵蓋多數系統設置。由於我的筆記本運行Arch Linux系統,在此特別說明相關配置方法:為避免頻繁切換,我選擇在系統層級設置全局DNS解析,具體可通過systemd-resolved或NetworkManager實現路由劫持。
NextDNS官方配置
按照NextDNS官方給的配置進行設置(使用systemd-resolved設置DNS):
1 | sudo vim /etc/systemd/resolved.conf |
Arch Linux全局配置
我的Arch Linux的網路配置:
- Neworkmanger連接管理WiFi部分
- systemd-resolved配置DNS部分
這裡為避免衝突,需要把Neworkmanger的DNS設為自動。並且進行下面配置:
首先確認resolv.conf沒有別的網路軟體干擾:
1 | ls -l /etc/resolv.conf # 如果沒有符號連結或者符號連結指向/run/NetworkManager/resolv.conf,表明Networkmanger正在覆蓋 |
如果是正在覆蓋的情況就需要修改配置NetworkManager使用 systemd-resolved配置DNS:
1 | # 修改(創建)/etc/NetworkManager/conf.d/dns.conf |
附加:
強制ipv6 DNS優先解析,編輯/etc/systemd/resolved.conf,將ipv6 DNS放前面,檢驗:
1 | getent ahosts example.com | head -n 5 # 如果ipv6在前面表示是ipv6 DNS優先解析 |
2025.7.17 更新
今天發現一個更簡單設定dns-over-https的方法:
首先安裝dns-over-https包,
1 | sudo pacman -S dns-over-https |
然後修改設定檔/etc/dns-over-https/doh-client.conf:
1 | # 設置所需的https連結 |
啟動服務:
1 | # 重啟服務 |
另外需要修改/etc/NetworkManager/conf.d/dns.conf:
1 | [main] |
如果/etc/resolv.conf依然被覆蓋,一個簡單的方法是:
1 | # 新建doh-client設定檔 |
