5154

Good Luck To You!

修改centos7 dns配置

修改CentOS7 DNS需编辑/etc/resolv.conf,添加/修改nameserver指向新DNS(如8.8.8.8),保存后执行`systemctl restart NetworkManager

CentOS 7 DNS 配置详解及实践指南

域名系统(DNS)是互联网的核心基础设施之一,负责将人类可读的域名转换为计算机使用的 IP 地址,在 CentOS 7 系统中,合理配置 DNS 服务器不仅能提升网络访问效率,还能满足企业级安全策略需求,本文将从基础概念出发,全面讲解 CentOS 7 下 DNS 的配置方法、验证手段及常见问题处理,并提供完整的操作示例。

修改centos7 dns配置


DNS 配置的核心作用与原理

1 核心功能解析

功能分类 具体描述
正向解析 将域名(如 example.com)映射为对应的 IP 地址
反向解析 将 IP 地址反向查询关联的域名
负载均衡 通过轮询机制分散流量至多个服务器
故障转移 主 DNS 失效时自动切换至备用服务器
本地加速 减少跨运营商/地域的递归查询延迟

2 关键配置文件路径

  • /etc/resolv.conf:客户端最终使用的 DNS 配置文件
  • /run/systemd/resolve/...:Systemdresolved 服务的动态生成文件
  • /etc/sysconfig/networkscripts/ifcfg*:网络接口配置文件中的静态 DNS 参数

三种主流配置方案对比

✅ 方案 A:通过图形界面 Network Manager 配置(推荐新手)

操作步骤:
  1. 打开「Applications」→「System Tools」→「Settings」→「Network」
  2. 选择当前连接 → 点击齿轮图标进入详细设置
  3. 切换到「IPv4 Settings」标签页
  4. 在「DNS Servers」栏输入目标 DNS IP(支持多条逗号分隔)
  5. 保存并重启网络服务:systemctl restart NetworkManager
特点:
优点 缺点
可视化操作 依赖桌面环境
自动同步到所有接口 无法精细控制单个接口
支持拖拽排序优先级 不适合批量部署

✅ 方案 B:手动编辑 /etc/resolv.conf(传统方法)

标准操作流程:
# 查看当前配置
cat /etc/resolv.conf
# 备份原文件(重要!)
cp /etc/resolv.conf{,.bak}
# 清空原有内容并添加新 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf     # Google Public DNS
echo "nameserver 1.1.1.1" >> /etc/resolv.conf    # Cloudflare DNS
# 可选:设置搜索域(缩短完整域名输入)
echo "search example.com localdomain" >> /etc/resolv.conf
特殊场景处理:
  • 多网卡独立配置:需结合 ifcfgethX 文件中的 PEERDNS=no 参数禁用全局覆盖
  • 防止自动重置:执行 chattr +i /etc/resolv.conf 禁止意外修改

✅ 方案 C:使用 nmcli 命令行工具(自动化首选)

常用命令集锦:
功能 命令示例
查看当前 DNS nmcli dev show | grep 'DNS'
添加单个 DNS nmcli con mod enp0s3 dns "8.8.8.8"
批量添加 DNS nmcli con mod enp0s3 dns "8.8.8.8,1.1.1.1"
删除指定位置的 DNS nmcli con mod enp0s3 dns 1.1.1.1
应用更改 nmcli con up enp0s3

配置验证与调试技巧

1 基础检测命令

命令 输出说明
ping www.baidu.com 验证基本连通性
dig www.baidu.com 显示完整 DNS 查询过程(含权威记录)
nslookup www.baidu.com 交互式查询工具,支持多种记录类型
host www.baidu.com 简洁版正向解析结果

2 深度诊断案例

现象dig 返回 SERVFAIL 错误
可能原因及解决

  1. 上游 DNS 不可达 → 更换更稳定的公共 DNS(如 114.114.114.114)
  2. 防火墙阻断 UDP 53 端口 → 执行 firewallcmd permanent addport=53/udp
  3. 递归查询超时 → 增加 options ndots:1/etc/resolv.conf

进阶配置场景示例

1 搭建私有 DNS 集群

# 安装 BIND9 服务端
yum install bind bindutils y
# 主配置文件示例 (/etc/named.conf)
options {
    directory "/var/named";
    allowquery { any; };
    forwarders { 8.8.8.8; 1.1.1.1; };
};
zone "internal.corp" IN {
    type master;
    file "internal.corp.zone";
};
# 创建区域文件模板
cat << EOF > /var/named/internal.corp.zone
\$TTL 86400
@   IN  SOA     ns1.internal.corp. admin.internal.corp. (
            2023101001 ; serial number
            3600       ; refresh interval
            1800       ; retry interval
            604800     ; expiry time
            86400 )    ; minimum TTL
    IN  NS      ns1.internal.corp.
ns1 IN  A       192.168.1.100
www IN  A       192.168.1.200
EOF
# 启动服务并设为开机自启
systemctl enable named && systemctl start named

2 双栈 DNS 配置(IPv4+IPv6)

# 同时配置 IPv4 和 IPv6 DNS
echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf  # IPv6 DNS
echo "nameserver 8.8.8.8" >> /etc/resolv.conf               # IPv4 DNS
# 验证 IPv6 解析能力
dig AAAA google.com

常见问题与解答

Q1: 修改 /etc/resolv.conf 后为何很快被还原?

原因分析:当启用了 networkmanager 且未关闭其自动管理功能时,该服务会定期重写 /etc/resolv.conf
解决方案

修改centos7 dns配置

  1. 在 Network Manager 中取消勾选「Automatically connect to VPN connections」等相关选项
  2. 改用 nmcli 命令进行持久化配置
  3. 停止并禁用 Network Manager 服务(仅适用于纯命令行环境)

Q2: 如何实现不同网络接口使用不同的 DNS?

实施步骤

  1. 编辑对应网卡的配置文件(如 /etc/sysconfig/networkscripts/ifcfgeth0
  2. 添加以下参数:
    PEERDNS=no          # 禁止从 DHCP 获取 DNS
    DNS1=8.8.8.8        # 自定义 DNS1
    DNS2=1.1.1.1        # 自定义 DNS2
  3. 重启网络服务:systemctl restart network

最佳实践建议

项目 推荐配置 备注
DNS 数量 ≥2 个(主备模式) 避免单点故障
更新频率 每周检查一次 监控日志异常请求
安全防护 启用 DNSSEC 验证 防范中间人攻击
性能优化 优先选择地理位置近的 DNS 降低 RTT 时间
日志审计 定期分析 /var/log/messages 发现潜在 DDoS 攻击迹象

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年9月    »
1234567
891011121314
15161718192021
22232425262728
2930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.