为你的Linux系统装上“双重导航”:轻松添加两个DNS服务器详解
在现代互联网使用中,DNS(域名系统)就像是网络世界的电话簿,将人类可读的域名(如google.com)转换为机器可读的IP地址,对于Linux系统用户而言,正确配置DNS服务器不仅能提升网络访问速度,还能增强网络连接的可靠性和安全性,本文将详细讲解如何在Linux系统中添加两个DNS服务器,并解释为何这种“双重保险”配置值得推荐。
在深入配置步骤之前,我们先了解为什么专业用户往往推荐设置多个DNS服务器:
1、故障转移保障:当主DNS服务器不可用时,系统会自动尝试使用备用DNS,避免网络中断
2、负载均衡:多个DNS可以分散查询请求,提高解析效率
3、地理位置优化:不同DNS服务器可能对同一域名提供不同IP,选择最优路径
4、冗余备份:防止单一DNS服务器故障导致整个网络服务瘫痪
实际案例:2021年,某大型公共DNS服务出现短暂故障,导致数百万用户无法正常上网,而那些配置了备用DNS的用户几乎未受影响,这充分体现了多DNS配置的价值。
Linux系统通过/etc/resolv.conf文件管理DNS设置,但这一机制在现代发行版中有所演变,大多数系统使用网络管理器(NetworkManager)或systemd-resolved服务来管理网络配置,它们最终仍会生成或直接影响/etc/resolv.conf文件。
值得注意的是,直接编辑/etc/resolv.conf在某些系统上可能是临时性的,因为网络服务重启后可能会覆盖更改,我们需要针对不同发行版和网络管理工具采用相应的方法。
方法一:Ubuntu/Debian系统(使用Netplan或NetworkManager)
对于使用Netplan的系统(Ubuntu 18.04及以后):
1、找到Netplan配置文件,通常位于/etc/netplan/目录下
2、编辑相应YAML文件,
sudo nano /etc/netplan/01-netcfg.yaml
3、在配置文件中添加DNS服务器地址:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]上述示例添加了Google的公共DNS作为主备服务器
4、应用配置:
sudo netplan apply
对于使用NetworkManager的图形界面:
1、点击网络图标 → 网络设置
2、选择对应连接 → 齿轮图标
3、切换到IPv4或IPv6标签
4、将“自动DNS”切换为“手动”
5、输入两个DNS服务器地址,用逗号分隔
6、点击“应用”保存设置
方法二:CentOS/RHEL/Fedora系统
使用NetworkManager命令行(nmcli):
查看当前连接名称 nmcli connection show 修改指定连接的DNS设置 sudo nmcli connection modify "连接名" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli connection modify "连接名" ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844" 使更改生效 sudo nmcli connection up "连接名"
直接编辑网络配置文件:
对于使用传统网络配置的系统,可以编辑网卡配置文件:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
添加或修改以下行:
DNS1=8.8.8.8 DNS2=8.8.4.4
重启网络服务:
sudo systemctl restart network
方法三:直接管理resolv.conf(通用方法)
对于希望直接控制的用户,可以采取以下步骤确保配置持久化:
1、编辑/etc/resolv.conf文件:
sudo nano /etc/resolv.conf
2、添加以下内容(示例使用Cloudflare和Google DNS):
nameserver 1.1.1.1 nameserver 8.8.8.8 options rotate timeout:1 attempts:2
其中options rotate表示随机选择DNS查询,timeout设置查询超时,attempts设置尝试次数
3、为防止配置被覆盖,设置文件为不可变(谨慎使用):
sudo chattr +i /etc/resolv.conf
如需修改,先取消属性:
sudo chattr -i /etc/resolv.conf
选择合适的DNS服务器对网络体验至关重要,以下是几种可靠组合:
1、速度优先组合:
- 主DNS:Cloudflare (1.1.1.1) - 目前全球最快的公共DNS之一
- 备DNS:Google DNS (8.8.8.8) - 稳定性极高
2、隐私保护组合:
- 主DNS:OpenDNS (208.67.222.222)
- 备DNS:DNS.WATCH (84.200.69.80)
3、家庭安全组合过滤):
- 主DNS:CleanBrowsing (185.228.168.9)
- 备DNS:Quad9 (9.9.9.9)
配置完成后,使用以下命令验证:
1、检查当前DNS配置:
cat /etc/resolv.conf # 或 systemd-resolve --status
2、测试DNS解析速度:
dig example.com | grep "Query time"
3、追踪DNS查询路径:
dig +trace example.com
4、比较不同DNS响应时间:
for dns in 8.8.8.8 1.1.1.1 208.67.222.222; do
echo "Testing $dns"
dig @$dns example.com | grep "Query time"
done对于多网卡系统,可以为不同接口配置不同DNS:
使用ip命令和resolvectl sudo resolvectl dns enp0s3 8.8.8.8 sudo resolvectl dns enp0s8 1.1.1.1
清空DNS缓存可解决某些解析问题:
对于systemd-resolved sudo systemctl restart systemd-resolved 对于dnsmasq sudo systemctl restart dnsmasq
1、DNS配置不生效:检查网络管理器是否覆盖了设置
2、解析缓慢:尝试更换DNS服务器组合
3、部分域名无法解析:检查本地hosts文件或防火墙设置
1、避免使用不可信DNS:恶意DNS可能劫持流量或记录隐私信息
2、考虑使用DNSSEC:启用DNSSEC验证防止DNS欺骗攻击
3、定期更新配置:公共DNS服务地址偶尔会变更
对于需要批量配置多台服务器的管理员,可创建自动化脚本:
#!/bin/bash
dns-setup.sh
PRIMARY_DNS="1.1.1.1"
SECONDARY_DNS="8.8.8.8"
检测发行版
if [ -f /etc/debian_version ]; then
# Debian/Ubuntu配置
cat > /etc/resolv.conf << EOF
nameserver $PRIMARY_DNS
nameserver $SECONDARY_DNS
options rotate
EOF
chattr +i /etc/resolv.conf 2>/dev/null
elif [ -f /etc/redhat-release ]; then
# RHEL/CentOS配置
sed -i "/^DNS/d" /etc/sysconfig/network-scripts/ifcfg-eth0
echo "DNS1=$PRIMARY_DNS" >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo "DNS2=$SECONDARY_DNS" >> /etc/sysconfig/network-scripts/ifcfg-eth0
systemctl restart network
fi
echo "DNS配置完成:$PRIMARY_DNS, $SECONDARY_DNS"为Linux系统配置两个DNS服务器是一项简单却极其有效的网络优化措施,无论你是普通桌面用户还是服务器管理员,这种“双重保险”策略都能显著提升网络体验的稳定性和可靠性,随着网络环境日益复杂,合理的DNS配置已成为保障顺畅网络访问的基础技能。
通过本文介绍的方法,你可以根据自身需求灵活选择合适的DNS服务器组合,并掌握在不同Linux环境中配置它们的技能,在网络配置更改前后进行测试验证,并保留原有配置备份,这样才能在享受优化带来的好处的同时,确保网络服务的连续性。
网络世界变化迅速,DNS技术也在不断发展,建议每隔一段时间重新评估你的DNS配置,确保始终使用最优的解决方案,让你的Linux系统在网络海洋中航行得更加稳健顺畅。
文章摘自:https://idc.huochengrm.cn/dns/24493.html
评论