如何在CentOS上配置DNS服务器设置?
在服务器管理与维护过程中,DNS(域名解析系统)的正确配置直接影响网络访问效率与稳定性,CentOS作为企业级Linux发行版,其DNS设置方法需兼顾操作规范与实际需求,以下内容将从基础配置到进阶优化,提供清晰的操作指引。
一、临时修改DNS解析(重启后失效)
若需快速测试不同DNS服务器效果,可通过修改resolv.conf
文件实现。
1、打开终端,输入命令:
sudo vi /etc/resolv.conf
2、在文件中添加或修改nameserver
参数:
nameserver 8.8.8.8 # Google公共DNS nameserver 1.1.1.1 # Cloudflare DNS
3、保存文件后立即生效,但重启网络服务或系统后配置会被覆盖。
注意:此方法适用于临时调试,生产环境建议使用永久配置方案。
二、永久修改DNS配置(不同CentOS版本差异)
▍CentOS 7及以下版本(使用network服务)
1、编辑网卡配置文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
(注:eth0
为网卡名称,需根据实际环境替换)
2、添加以下参数:
DNS1=8.8.8.8 DNS2=8.8.4.4
3、重启网络服务:
sudo systemctl restart network
▍CentOS 8/9及新版(使用NetworkManager)
1、使用nmcli
工具修改连接配置:
sudo nmcli con mod eth0 ipv4.dns "8.8.8.8 1.1.1.1"
2、应用配置并重启连接:
sudo nmcli con down eth0 && sudo nmcli con up eth0
三、验证DNS配置有效性
完成配置后,需通过多维度测试确保解析正常:
1、查看当前生效的DNS
cat /etc/resolv.conf
检查输出是否包含设定的DNS服务器地址。
2、使用nslookup测试解析
nslookup example.com
若返回正确的IP地址,则说明解析成功。
3、dig工具深度检测
dig @8.8.8.8 example.com +short
指定DNS服务器进行查询,可精准判断某台服务器是否工作正常。
四、高阶优化方案
配置DNS缓存加速
安装systemd-resolved
服务提升本地解析速度:
sudo yum install systemd-resolved sudo systemctl enable --now systemd-resolved
修改/etc/resolv.conf
指向本地缓存:
nameserver 127.0.0.1
多DNS服务器负载均衡
在resolv.conf
中按优先级排列多个DNS:
nameserver 8.8.8.8 nameserver 1.1.1.1 options rotate timeout:1
rotate
参数实现轮询查询,timeout
设定查询超时时间(单位:秒)。
防御DNS污染与劫持
- 使用DoH(DNS over HTTPS)加密查询
通过dnscrypt-proxy
等工具实现:
sudo yum install epel-release sudo yum install dnscrypt-proxy
五、常见问题排查
场景1:DNS修改后未生效
- 检查/etc/resolv.conf
是否被其他服务覆盖(如DHCP客户端)
- 确认NetworkManager配置中未启用自动DNS
场景2:部分域名解析失败
- 使用tcpdump
抓包分析DNS请求:
sudo tcpdump -i eth0 port 53
- 测试不同DNS服务器的响应差异
场景3:DNS查询延迟过高
- 通过ping
和traceroute
检测网络连通性
- 更换地理位置更近的公共DNS(如阿里DNS:223.5.5.5)
个人观点
DNS配置绝非一次性任务,需定期监控解析速度与准确性,建议企业用户搭建私有DNS服务器提升内网安全,普通用户可选择两家以上公共DNS实现冗余,实际操作中,养成修改前备份配置文件的习惯,可避免误操作导致的服务中断,网络环境的复杂性决定了没有“通用最优解”,持续观察系统日志(/var/log/messages
)才能建立最适合当前业务的DNS方案。
推荐阅读
-
Java中的JavaCore/HeapDump文件及其分析方法
产生时间Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。有...
-
每个Java开发者都应该知道的5个JDK工具
JDK是Java语言的软件开发工具包,没有它就无法编译Java程序。目前,有许许多多的JDK工具呈现在大家面前,但最常用的莫过于j...
-
Java字符串的substring真的会引起内存泄露么?
在Java中开发,String是我们开发程序可以说必须要使用的类型,String有一个substring方法用来截取字...
-
Java I/O底层是如何工作的?
本博文主要讨论I/O在底层是如何工作的。本文服务的读者,迫切希望了解JavaI/O操作是在机器层面如何进行映射,以及应用运行时硬...
-
5个最优秀的Java和C#代码转换工具
本文由码农网 –小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!毋庸置疑,Java是一门最受欢迎...
-
CentOS 6.5 搭建 Java 开发环境详解
一、安装jdk1.查看Linux自带的JDK是否已安装java–version如果出现openjdk,最好还是...
-
Java阻塞队列线程集控制的实现
队列以一种先进先出的方式管理数据。如果你试图向一个已经满了的阻塞队列中添加一个元素,或是从一个空的阻塞队列中移除一个元...
-
10个使用Java最广泛的现实领域
本文由码农网 –小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!如果你是一个初学者,刚刚开始学习...
-
Java命名:可怕的DefaultAbstractHelperImpl
JOOQ的卢卡斯·艾德研究了在Spring和Java命名策略中富有创造性的类名所带来的价值。这篇文章最早是发表在j...
-
Java内存的原型及工作原理深度剖析
本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。一、java虚拟机内存原型寄存器:我...