Linux系统外网DNS设置指南:告别网络卡顿,提升访问效率
如果你是一名Linux用户,无论是资深的系统管理员,还是刚刚接触这个强大开源世界的爱好者,都可能遇到过这样的场景:在终端里执行ping baidu.com
时,响应慢得令人着急;或者使用apt update
更新软件源时,进度条如同蜗牛爬行,甚至频频失败,这些问题,很多时候的罪魁祸首并不是你的网络带宽不足,而是那个隐藏在幕后、却至关重要的角色——DNS。
DNS,通俗来讲就是互联网的“电话簿”,当你在浏览器输入www.google.com
时,你的计算机并不知道这个名字对应的服务器在哪里,它需要向DNS服务器查询,获取该域名对应的真实IP地址(如142.251.42.206
),然后才能建立连接,如果这本“电话簿”本身又旧又慢,或者负责查询的“接线员”(DNS服务器)效率低下,那么即使你拥有千兆光纤,上网体验也会大打折扣。
本文将深入浅出地为你讲解如何在Linux系统中,手动设置高效、可靠的外网DNS服务器,从而显著提升网络访问速度和稳定性。
你可能会问:“我不是已经能上网了吗?为什么还要多此一举?” 通常情况下,我们的Linux系统会通过DHCP协议自动从路由器获取DNS服务器地址,这看起来很省心,但潜在问题不少:
1、运营商的DNS可能不够快:国内某些ISP提供的DNS服务器响应速度并非最优,尤其是在跨网络访问时。
2、隐私与劫持风险:部分运营商的DNS可能会记录你的查询记录,甚至对错误的域名或不存在的网站返回带有广告的页面(DNS劫持)。
3、污染与干扰:在某些网络环境下,自动获取的DNS可能受到污染,导致无法正常访问一些网站。
4、可靠性问题:路由器或本地ISP的DNS服务器可能出现故障,导致整个网络“瘫痪”。
手动指定像Google Public DNS (8.8.8.8, 8.8.4.4)、Cloudflare DNS (1.1.1.1, 1.0.0.1) 或OpenDNS这样的公共DNS服务,往往能带来更快速、更清洁、更安全的网络体验。
二、设置前的准备工作:查询当前DNS
在修改之前,我们先看看系统当前正在使用哪些DNS服务器,打开你的终端,输入以下命令:
systemd-resolve --status | grep 'DNS Servers' -A2
或者
cat /etc/resolv.conf
注意:直接查看/etc/resolv.conf
文件时,你可能会看到一行注释:This file is managed by man:systemd-resolved(8)
,这表明DNS设置正由systemd-resolved
服务管理,直接编辑这个文件可能不是永久生效的最佳方法,重启后可能会被覆盖。
记下当前的DNS地址,以便需要时可以恢复。
Linux世界有多种配置网络的方式,我们主要介绍两种最主流和现代的方法。
方法一:使用Netplan配置(Ubuntu 18.04及以后版本、Debian等)
Netplan是Ubuntu新版本引入的网络配置工具,它使用清晰的YAML语法,配置文件通常位于/etc/netplan/
目录下,文件名可能是01-netcfg.yaml
、50-cloud-init.yaml
或类似。
1、备份并编辑配置文件:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak # 备份 sudo nano /etc/netplan/01-netcfg.yaml # 使用nano编辑器,也可用vim
2、修改YAML文件:
假设你的网络接口名为ens33
(可通过ip addr
命令查看),你需要找到对应的配置块,在ens33:
下的dhcp4: no
表示禁用DHCP,然后手动指定IP地址、网关和DNS,如果你的当前配置是DHCP,需要先改为静态IP,或者采用另一种方式只设置DNS。
示例:设置为静态IP并指定DNS
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no addresses: [192.168.1.100/24] # 你的静态IP和子网掩码 gateway4: 192.168.1.1 # 你的网关地址(通常是路由器IP) nameservers: addresses: [8.8.8.8, 1.1.1.1, 208.67.222.222] # 这里设置DNS!可以设置多个
示例:在DHCP获取IP的基础上,只覆盖DNS设置(更常见)
有些Netplan配置允许在DHCP模式下覆盖DNS,确保你的Netplan版本支持,可以尝试如下配置:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: yes nameservers: addresses: [8.8.8.8, 1.1.1.1]
3、应用配置:
保存文件后,执行以下命令使配置生效:
sudo netplan apply
如果出现错误,Netplan会给出提示,请仔细检查YAML的缩进和语法。
方法二:修改systemd-resolved的配置文件(通用性更强)
systemd-resolved
是现代Linux发行版(尤其是使用systemd的)中管理DNS的系统服务,这是最推荐的方法之一,因为它能很好地处理DNS缓存和多种配置源。
1、编辑主配置文件:
sudo nano /etc/systemd/resolved.conf
2、取消注释并设置DNS:
找到文件中的DNS
和FallbackDNS
行,取消注释(删除行首的#
),并填入你想要的DNS服务器地址。FallbackDNS
是在主DNS失效时使用的备用DNS。
[Resolve] DNS=8.8.8.8 1.1.1.1 208.67.222.222 FallbackDNS=8.8.4.4 1.0.0.1 #Domains=~. #LLMNR=yes #MulticastDNS=yes #DNSSEC=allow-downgrade #DNSOverTLS=no #Cache=yes #DNSStubListener=yes
保存并退出。
3、重启服务并创建符号链接:
sudo systemctl restart systemd-resolved # 确保/run/systemd/resolve/stub-resolv.conf文件存在并指向正确的DNS sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
4、验证:
再次执行cat /etc/resolv.conf
,应该能看到你设置的DNS服务器地址了。
修改完成后,如何确认新的DNS已经起作用了呢?
1、再次查看resolv.conf
:
cat /etc/resolv.conf
确认显示的nameserver是你设置的地址。
2、使用dig
或nslookup
命令测试:
dig google.com 或 nslookup google.com
查看命令输出中的SERVER:
行,它显示的是正在使用的DNS服务器IP,如果显示的是你设置的IP(如8.8.8.8#53
),说明配置成功。
3、体验速度提升:
尝试访问之前感觉缓慢的网站,或者再次执行apt update
,感受一下速度的变化。
Google Public DNS8.8.8.8
和8.8.4.4
- 全球知名,速度快,稳定性高。
Cloudflare DNS1.1.1.1
和1.0.0.1
- 以隐私保护和速度见长。
OpenDNS208.67.222.222
和208.67.220.220
- 提供额外的安全过滤功能。
Quad99.9.9.9
- 专注于安全,能屏蔽恶意网站。
阿里云DNS223.5.5.5
和223.6.6.6
- 国内用户访问速度快。
114DNS114.114.114.114
和114.114.115.115
- 国内老牌公共DNS。
建议可以组合使用,例如将Cloudflare作为主DNS,Google作为备用DNS。
网络连接断开如果在设置静态IP时出错,可能导致无法连接网络,请确保IP地址、子网掩码(/24
)和网关地址填写正确,且在你的局域网段内,如果出现问题,恢复备份的配置文件或重新启用DHCP。
DNS缓存修改DNS后,系统可能有缓存,可以重启systemd-resolved
服务来清空缓存:sudo systemctl restart systemd-resolved
。
选择最适合的DNS不同地区的网络环境对不同DNS的响应速度可能不同,可以使用dig @8.8.8.8 google.com
这样的命令分别测试不同DNS的查询速度,选择响应时间最短的。
通过手动配置Linux系统的外网DNS,这个看似微小的调整,实则是优化网络体验的“捷径”,它不仅能解决许多莫名的网络问题,还能在速度、安全和隐私方面带来实质性的提升,花几分钟时间完成设置,从此告别因DNS导致的网络卡顿,让你的Linux系统在互联网上畅行无阻,就打开终端,开始你的优化之旅吧!
文章摘自:https://idc.huochengrm.cn/dns/16598.html
评论