当前位置: 首页 > news >正文

DNS服务搭建与配置详解

一、DNS基础概念

(一)什么是DNS?

DNS(Domain Name System,域名系统)是互联网的核心基础设施之一,用于将人类易读的域名(如www.it.cluster)转换为计算机可识别的IP地址(如192.168.66.143)。其本质是一个分布式数据库系统,通过分层的域名结构和递归/迭代查询机制实现高效解析。

(二)DNS核心功能

  1. 正向解析:域名→IP(A记录),如将www.it.cluster解析为Web服务器IP。
  2. 反向解析:IP→域名(PTR记录),用于安全审计或服务追踪。

(三)DNS工作原理

1. 递归查询(客户端→本地DNS)
  • 流程:客户端向本地DNS服务器发起查询,若本地服务器无缓存记录,则代其向根域、顶级域(TLD)、权威域名服务器递归查询,最终返回结果。
  • 场景:用户浏览器输入域名时的解析过程。
2. 迭代查询(DNS服务器间交互)
  • 流程:当本地DNS服务器需进一步查询时,其他服务器仅返回“下一个查询目标”而非直接结果,本地服务器需多次迭代直至获取答案。
  • 场景:根域服务器引导查询至顶级域服务器的过程。

二、DNS服务器搭建实战(CentOS 7)

(一)环境规划

角色IP地址主机名职责
DNS服务器192.168.66.138dns-server解析it.cluster域名
Web服务器192.168.66.143web-server提供Web服务
客户端192.168.66.144client测试域名解析

(二)准备工作

1. 关闭防火墙与SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2. 配置YUM源(以公网为例)
yum clean all && yum makecache

(三)安装Bind DNS软件

yum install bind -y

(四)配置正向解析(域名→IP)

1. 主配置文件:/etc/named.conf
vim /etc/named.conf
  • 关键修改:允许任意IP查询
    - allow-query     { localhost; };
    + allow-query     { any; };  # 允许所有IP访问DNS服务
    
2. 区域配置文件:/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
  • 添加域名解析规则
    zone "it.cluster" IN {type master;         # 主服务器file "it.cluster.zone";  # 区域数据文件名allow-update { none; };  # 禁止动态更新
    };
    
3. 区域数据文件:/var/named/it.cluster.zone
cp -p /var/named/named.localhost /var/named/it.cluster.zone  # 复制模板并保留权限
vim /var/named/it.cluster.zone
  • 配置解析记录
    $TTL 1D       ; 缓存生存周期(可简写为1D=1天,1H=1小时)
    @       IN SOA  @ admin.it.cluster. (  ; @代表域名it.cluster,SOA为起始授权记录20231001  ; 序列号(版本号,修改后需递增)1D        ; 从服务器刷新间隔1H        ; 失败重试间隔1W        ; 过期时间3H )      ; 最小缓存时间NS      @       ; NS记录:指定域名服务器为本机A       192.168.66.138  ; A记录:域名it.cluster指向DNS服务器IP(可选)
    www     IN A    192.168.66.143  ; 关键记录:www.it.cluster解析为Web服务器IP
    

(五)验证配置有效性

1. 检查配置文件语法
named-checkconf  # 检查主配置文件
named-checkzone it.cluster /var/named/it.cluster.zone  # 检查区域文件
2. 启动DNS服务
systemctl start named && systemctl enable named
netstat -tunlp | grep 53  # 确认53端口监听(UDP/TCP)

三、Web服务器与客户端测试

(一)搭建Web服务器(示例)

# 在Web服务器(192.168.66.143)执行
yum install httpd -y
systemctl start httpd && systemctl enable httpd
echo "DNS解析测试成功!" > /var/www/html/index.html

(二)客户端配置与测试

1. 配置客户端DNS服务器
# 临时配置(生效快,重启失效)
echo "nameserver 192.168.66.138" > /etc/resolv.conf
# 永久配置(修改网卡文件)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.66.138
systemctl restart network
2. 测试解析结果
# 工具1:nslookup(需安装yum install bind-utils -y)
nslookup www.it.cluster
# 预期输出:Name: www.it.cluster Address: 192.168.66.143# 工具2:curl(访问Web服务)
curl http://www.it.cluster
# 预期输出:DNS解析测试成功!

四、常见问题与解决方案

(一)解析失败排查步骤

  1. 检查客户端DNS配置:确保/etc/resolv.confnameserver指向正确的DNS服务器IP。
  2. 检查DNS服务器日志
    tail -f /var/log/messages | grep named  # 查看named服务日志
    
  3. 验证区域文件权限:确保/var/named/it.cluster.zone属主为named:named,权限为-rw-r-----
    chown named:named /var/named/it.cluster.zone
    chmod 640 /var/named/it.cluster.zone
    

(二)递归查询限制

若需启用递归查询(解析公网域名),需在/etc/named.conf中取消注释:

- // recursion yes;
+ recursion yes;  # 允许递归查询(谨慎开启,可能成为DNS放大攻击目标)

五、扩展:反向解析(IP→域名)

(一)配置反向解析区域

  1. 修改区域配置文件

    vim /etc/named.rfc1912.zones
    zone "66.168.192.in-addr.arpa" IN {  # 反向区域名(IP倒写+in-addr.arpa)type master;file "192.168.66.zone";  # 反向区域数据文件名allow-update { none; };
    };
    
  2. 创建反向区域文件

    cp -p /var/named/named.loopback /var/named/192.168.66.zone
    vim /var/named/192.168.66.zone
    
    $TTL 1D
    @       IN SOA  @ admin.it.cluster. (202310011D1H1W3H )NS      @
    143     IN PTR    www.it.cluster.  # PTR记录:192.168.66.143→www.it.cluster
    
  3. 测试反向解析

    nslookup 192.168.66.143
    # 预期输出:143.66.168.192.in-addr.arpa name = www.it.cluster.
    

六、总结

  • 核心文件
    • 主配置:/etc/named.conf(权限控制)
    • 区域配置:/etc/named.rfc1912.zones(域名→区域文件映射)
    • 数据文件:/var/named/xxx.zone(具体解析记录)
  • 最佳实践
    • 生产环境建议部署主从DNS(type slave)实现高可用。
    • 限制allow-query为可信IP段,避免公开递归导致安全风险。
    • 定期备份区域文件,序列号按日期递增(如YYYYMMDDXX)。

通过以上步骤,可在内网快速搭建可靠的DNS服务,实现域名与IP的高效解析,为企业内部应用提供稳定的网络寻址能力。

相关文章:

  • JS手写代码篇---手写Promise
  • 【NLP】基于JointBERT的意图识别
  • 基于JDBC的信息管理系统,那么什么是JDBC呢?什么又是DAO类?
  • DDI核心网络服务是什么意思?有什么用?
  • 模板初阶【C++】
  • drop tablespace XXX including contents and datafiles删除表空间后,磁盘空间不释放
  • LlamaIndex
  • 46页 @《人工智能生命体 新启点》中國龍 原创连载
  • 【209. 长度最小的子数组】
  • DL00988-稀疏增强数据transformer船舶AIS轨迹预测含完整数据集
  • 开源免费抓包工具:ProxyPin 的详细使用
  • [TCG] 01.QEMU TCG 概览
  • Oracle BUFFER CACHE内存不足的优化思路
  • 多线程(七)
  • BigFoot (DBM) Deadly Boss Mods
  • export和import的书写方式
  • 计算机操作系统(十)调度的概念与层次,进程调度的时机与进程的调度方式
  • 基于STM32的骑行语音播报系统
  • 3.2.3
  • 从加密到信任|密码重塑车路云一体化安全生态
  • 普通展示型网站/教育机构培训
  • 中小企业做网站推广/网络营销管理
  • 深圳企业网站建设费用明细/如何制作个人网站
  • 网页源代码在线查看/seo网站优化是什么
  • 个人网站备案名称大全/下载百度网盘