Debian 12 DNS配置咨询:如何替换VPS默认解析器为公共DNS(如1.1.1.1)
Debian 12 DNS配置咨询:如何替换VPS默认解析器为公共DNS(如1.1.1.1)
嘿,我完全懂你这种找不到正确配置入口的困惑!Debian 12默认切换到systemd-resolved来管理DNS解析了,所以原来直接编辑/etc/resolv.conf的老方法行不通——那个文件现在是resolved自动生成的 stub 文件,手动改了也会被覆盖。下面给你两种靠谱的解决方案,按需选就行:
方法一:用resolvectl命令(推荐,最贴合Debian 12默认环境)
这是systemd-resolved官方推荐的配置方式,操作简单:
1. 临时生效(重启后会恢复默认)
先确认你的VPS网络接口名(比如eth0、ens3,可以用ip link show命令查看),然后运行:
sudo resolvectl dns <你的接口名> 1.1.1.1 1.0.0.1
如果想给所有接口统一设置,把接口名换成global就行:
sudo resolvectl dns global 1.1.1.1 1.0.0.1
2. 永久生效(重启后保持设置)
编辑systemd-resolved的主配置文件:
sudo nano /etc/systemd/resolved.conf
找到[Resolve]区块,把注释掉的DNS行解开,改成你要的公共DNS:
[Resolve] DNS=1.1.1.1 1.0.0.1 # 可选:可以再加备用DNS # FallbackDNS=8.8.8.8 8.8.4.4
保存退出后,重启服务让配置生效:
sudo systemctl restart systemd-resolved
方法二:用resolvconf(适合习惯老Debian配置方式的用户)
如果你还是偏好原来的resolvconf workflow,也可以这么做:
- 先确保安装了resolvconf包(Debian 12默认可能没装):
sudo apt update && sudo apt install resolvconf
- 编辑
resolvconf的头部配置文件,这个文件里的内容会被自动添加到生成的/etc/resolv.conf开头:
sudo nano /etc/resolvconf/resolv.conf.d/head
添加两行公共DNS:
nameserver 1.1.1.1 nameserver 1.0.0.1
- 强制更新resolvconf配置:
sudo resolvconf -u
验证配置是否生效
不管用哪种方法,都可以通过以下命令确认DNS是否已经切换成功:
- 查看当前DNS服务器:
resolvectl status(找DNS Servers字段) - 测试解析:
dig example.com(看输出里的SERVER字段是不是1.1.1.1)
备注:内容来源于stack exchange,提问作者Cherona




