抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

近期使用cn.bing.com時經常需要多次刷新才能顯示搜索結果,推測是DNS解析再次受到干擾。為此我搜索了DNS服務相關的解決方案,發現NextDNS提供每月30萬次免費查詢額度,基本上能滿足個人需求。即使需要升級付費套餐,每月僅需12元的價格也頗具性價比。

NextDNS的配置流程較為簡單,官方教學已涵蓋多數系統設置。由於我的筆記本運行Arch Linux系統,在此特別說明相關配置方法:為避免頻繁切換,我選擇在系統層級設置全局DNS解析,具體可通過systemd-resolved或NetworkManager實現路由劫持。

NextDNS官方配置

按照NextDNS官方給的配置進行設置(使用systemd-resolved設置DNS):

1
2
3
4
5
6
7
8
9
sudo vim /etc/systemd/resolved.conf

# 填入以下內容:
[Resolve]
DNS=45.88.10.0#66b1be.dns.nextdns.io
DNS=2a01:a8c0::#66b1be.dns.nextdns.io
DNS=45.87.11.0#66b1be.dns.nextdns.io
DNS=2a01:a8c1::#66b1be.dns.nextdns.io
DNSOverTLS=yes

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 修改(創建)/etc/NetworkManager/conf.d/dns.conf
sudo nano /etc/NetworkManager/conf.d/dns.conf
# {可選} 編輯/etc/NetworkManager/NetworkManager.conf
#[main]
#dns=none # 禁用 NetworkManager 的 DNS 管理
#rc-manager=unmanaged # 禁止自動生成 resolv.conf



# 並填入:
[main]
dns=systemd-resolved

# 強制 /etc/resolv.conf 指向 systemd-resolved 的存根文件:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

# 重啟NetworkManager
sudo systemctl restart NetworkManager systemd-resolved

# 驗證是否生效

dig google.com # 如果輸出的SERVER類似"127.0.0.53",則表明systemd-resolved配置已生效

# 設為開機自啟動
sudo systemctl enable systemd-resolved

附加:

強制ipv6 DNS優先解析,編輯/etc/systemd/resolved.conf,將ipv6 DNS放前面,檢驗:

1
getent ahosts example.com | head -n 5   # 如果ipv6在前面表示是ipv6 DNS優先解析

v2rayA防DNS汙染

前面文章(配置v2rayA避免DNS洩露)提到過關於v2rayA的DNS汙染問題,NextDNS是替代方案。

打開v2rayA按照下圖配置後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
2
3
4
# 設置所需的https連結
[[upstream.upstream_ietf]]
url = "https://[IP or web address]/dns-query"
weight = 20

啟動服務:

1
2
3
4
5
# 重啟服務
sudo systemctl restart NetworkManager doh-client.servic

# 加入啟動項
sudo systemctl enable doh-client.service

另外需要修改/etc/NetworkManager/conf.d/dns.conf:

1
2
[main]
dns=doh-client

如果/etc/resolv.conf依然被覆蓋,一個簡單的方法是:

1
2
3
4
5
6
7
# 新建doh-client設定檔
sudo touch /etc/doh.conf
## 其中裡面需要填入nameserver
## nameserver 127.0.0.1

# 然後建立連結,然後別忘記重啟網路服務
sudo ln -sf /etc/doh.conf /etc/resolved.conf

參考

評論



Powered by Hexo | Theme keep Volantis

本站總訪問量 總訪客數 🌎