近期使用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配置文件 |
