云计算百科
云计算领域专业知识百科平台

零基础学 DNS!从域名层级到自建权威解析服务器全套教程

CentOS BIND DNS完整实战:域名解析原理+主从服务器+排错全流程

前言

上网输入域名就能访问网站,背后全靠DNS域名解析服务。早期互联网仅靠HOSTS文件维护域名IP映射,规模暴涨后出现名称冲突、同步困难等问题,DNS分布式架构应运而生。本文完整讲解DNS底层原理、域名层级、各类资源记录、Linux BIND自建权威服务器、缓存DNS(Unbound/Dnsmasq)、全套查询排错命令,附带实验拓扑与完整可复制配置,适合运维自学、课堂实操。

一、DNS诞生与核心作用

1.1 早期HOSTS文件缺陷

互联网前身ARPAnet时代,所有主机名与IP对应关系统一存放在HOSTS.txt,由NIC统一维护。
随着联网设备激增,出现两大致命问题:

  • 名称冲突:用户随意修改主机名,极易和全网其他主机重名;
  • 同步困难:每台机器HOSTS文件更新不及时,全网映射数据不一致。
    分布式DNS系统完美解决以上痛点。
  • 1.2 DNS核心功能

    DNS全称Domain Name System域名解析系统,核心作用:
    把人类易记的字符域名(www.huawei.com),转换为计算机通信使用的IP地址,实现域名↔IP双向映射。
    在这里插入图片描述

    上图流程:

  • 客户端发起域名解析请求,获取目标服务器IP;
  • 使用解析出的IP建立HTTP数据通信。
  • 1.3 DNS系统组成

  • 域名:面向用户的字符访问标识;
  • DNS服务器:分布式数据库,分段存储域名与IP映射;
  • 通信协议:默认使用UDP53端口,大数据包自动切换TCP53。
  • 二、DNS域名层级结构

    2.1 域名分类标准

  • 根域(.):域名最顶层,所有域名的统一父节点,日常输入域名省略末尾点;
  • 顶级域TLD
    • 通用gTLD:.com商业、.edu教育、.org组织、.gov政府;
    • 国家ccTLD:.cn中国、.uk英国、.us美国;
  • 二级域/子域:企业自定义域名,如huawei、baidu;
  • 主机名:域名下单独业务节点,www、mail、dns。
    在这里插入图片描述
  • 完整域名格式示例:www.huawei.com.(末尾.代表根域)

    三、DNS两种查询方式

    DNS查询分为递归查询、迭代查询,互联网标准流程是两者结合。

    3.1 递归查询

    客户端只发1次请求,本地DNS全权替客户端完成所有查询,直接返回最终IP或报错。
    参与角色:用户PC ↔ 本地运营商/自建DNS服务器,请求头部RD=1。

    3.2 迭代查询

    DNS服务器查不到完整结果,仅返回下一级服务器地址,由当前DNS继续逐级询问。
    参与角色:本地DNS ↔ 根服务器/顶级域/权威服务器,请求头部RD=0。

    3.3 全网标准查询流程(以www.xiaomi.com为例)

  • 客户端→本地DNS:递归查询www.xiaomi.com;
  • 本地DNS→根服务器:迭代查询,返回.com顶级域服务器地址;
  • 本地DNS→.com服务器:迭代查询,返回xiaomi.com权威服务器;
  • 本地DNS→xiaomi权威服务器:获取目标IP;
  • 本地DNS缓存记录,将IP返回客户端。
  • 四、DNS核心资源记录RR

    资源记录是DNS服务器存储域名信息的最小单元,统一格式:
    域名 TTL IN 记录类型 数据

    • TTL:缓存生存时间(秒);
    • IN:互联网通用类别;

    4.1 A记录(IPv4正向解析)

    域名映射IPv4地址

    server.liuyifei.cloud. 86400 IN A 172.25.254.254

    4.2 AAAA记录(IPv6正向解析)

    域名映射IPv6地址

    a.root-servers.net. 604800 IN AAAA 2001:503:ba3e::2:30

    4.3 CNAME别名记录

    将域名指向另一个标准域名,多用于CDN、业务切换;
    禁止CNAME嵌套多层,避免解析延迟。

    www-dev.liuyifei.cloud. 30 IN CNAME lab.liuyifei.cloud.

    4.4 PTR反向解析记录

    IP反向查询对应主机名,用于邮件反垃圾、服务器审计;
    IPv4格式:反向IP.in-addr.arpa,IPv6:ip6.arpa。

    4.0.41.198.in-addr.arpa. 785 IN PTR a.root-servers.net.

    4.5 NS名称服务器记录

    标记当前域名由哪台DNS服务器负责权威解析,一个域至少2台NS做冗余。

    laogao.cloud. 86400 IN NS dns.liuyifei.cloud.

    4.6 SOA起始授权记录

    每个区域文件必须唯一一条,定义主服务器、管理员邮箱、区域同步周期:

    laogao.cloud. 86400 IN SOA dns.liuyifei.cloud. root.liuyifei.cloud. 2015071700 3600 300 604800 60

    字段释义:序列号、刷新时间、重试间隔、过期时长、否定缓存TTL。

    4.7 MX邮件交换记录

    指定域名邮件接收服务器,数字越小优先级越高。

    laogao.cloud. 86400 IN MX 10 mail.liuyifei.cloud.
    laogao.cloud. 86400 IN MX 20 dns.liuyifei.cloud.

    4.8 TXT文本记录

    用于SPF反垃圾邮件、域名所有权验证、DKIM签名。

    4.9 SRV服务定位记录

    标记域内LDAP、FTP等业务服务端口与主机。

    五、Linux DNS查询实操命令

    Windows客户端命令

  • ipconfig /displaydns:查看本机DNS缓存;
  • ipconfig /flushdns:清空本地DNS缓存;
  • nslookup:交互式/非交互式解析查询。
  • Linux通用工具

  • host:极简解析,适合快速查看A/MX/NS
  • [root@dns-client ~]# host -t NS huawei.com
    [root@dns-client ~]# host www.qq.com
    [root@dns-client ~]# host -t MX qq.com

  • dig(最专业排错工具)
  • # 完整查询
    dig -t A www.qq.com
    # 仅输出精简IP
    dig +short www.qq.com
    # 只保留回答段
    dig +nocmd +noall +answer www.qq.com
    # 指定DNS服务器查询
    dig @114.114.114.114 www.qq.com

  • nslookup:跨平台兼容,支持指定DNS
  • whois:查询域名注册商、过期、NS信息
  • 六、DNS服务器两大类型

  • 缓存DNS服务器(Unbound/Dnsmasq)
    仅递归查询、缓存解析结果,不管理自定义域名,内网网关、虚拟机常用。
  • 权威DNS服务器(BIND)
    自建域名解析库,对外提供本域标准答案,分主服务器master、从服务器slave;
    从服务器通过区域传输AXFR同步主服务器全部记录,做高可用冗余。
  • 七、CentOS BIND权威DNS完整部署实验

    7.1 实验节点规划

    主机名IP地址角色
    dns-server 10.1.8.10/24 BIND主DNS服务器
    dns-client 10.1.8.11/24 测试客户端

    7.2 服务器基础环境配置

    # 修改主机名
    hostnamectl set-hostname dns-server
    # 静态网卡配置
    nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2
    nmcli connection up ens33

    客户端同步修改IP为10.1.8.11。

    7.3 安装BIND软件

    yum install -y bind bind-utils
    # 核心文件路径
    # 主配置:/etc/named.conf
    # 区域文件目录:/var/named
    # 服务日志:/var/log/messages

    软件说明:

    • bind:named服务主程序;
    • bind-utils:dig/host/nslookup全套查询工具。

    7.4 主配置文件/etc/named.conf详解

  • acl访问控制列表:批量定义可信网段,简化权限配置
  • acl classroom { 10.1.8.0/24; };

    内置默认acl:any/localhost/localnets/none
    2. listen-on:指定本机监听DNS的IP端口

    options {
    listen-on port 53 { 127.0.0.1; 10.1.8.10; };
    allow-query { any; };
    recursion yes;
    allow-recursion { classroom; };
    allow-transfer { none; }; # 禁止任意服务器拉取区域数据
    };

    参数说明:

    • allow-query:允许谁发起解析;
    • recursion:是否开启递归;
    • allow-transfer:限制区域传输,防止域名记录泄露。

    7.5 定义正向/反向区域

    文件末尾添加zone配置:

    zone "liuyifei.cloud" IN {
    type master;
    file "liuyifei.cloud.zone";
    };
    # 反向解析区域 10.1.8网段
    zone "8.1.10.in-addr.arpa" IN {
    type master;
    file "10.1.8.zone";
    };

    7.6 创建区域模板文件

    # 复制系统标准模板
    cp /var/named/named.localhost /var/named/liuyiufei.cloud.zone
    cp /var/named/named.loopback /var/named/10.1.8.zone
    # 修改权限与属主
    chmod 640 /var/named/*.zone
    chown root:named /var/named/*.zone
    # SELinux标签修复
    chcon -t named_zone_t /var/named/*.zone

    正向区域文件 /var/named/laogao.cloud.zone

    $TTL 1D
    @ IN SOA dns.laogao.cloud. root.laogao.cloud. (
    20260809 ;序列号每次修改+1
    1D ;刷新
    1H ;重试
    3H ;过期
    15M ;否定缓存
    )
    IN NS dns.liuyifei.cloud.
    dns IN A 10.1.8.10
    server IN A 10.1.8.10
    client IN A 10.1.8.11
    student IN CNAME client.liuyifei.cloud.
    www IN A 10.1.8.200
    @ IN MX 10 mail.liuyifei.cloud.
    mail IN A 10.1.8.253

    反向区域文件 /var/named/10.1.8.zone

    $TTL 1D
    @ IN SOA dns.laogao.cloud. root.laogao.cloud. (
    20260809
    1D
    1H
    1W
    3H
    )
    IN NS dns.liuyifei.cloud.
    10 IN PTR dns.liuyifei.cloud.
    11 IN PTR client.liuyifei.cloud.
    200 IN PTR www.liuyifei.cloud.
    253 IN PTR mail.liuyifei.cloud.

    7.7 配置语法校验(必做,防止启动失败)

    # 校验主配置
    named-checkconf
    # 校验正向区域
    named-checkzone liuyifei.cloud /var/named/liuyifei.cloud.zone
    # 校验反向区域
    named-checkzone 8.1.10 /var/named/10.1.8.zone

    7.8 启动服务+防火墙放行53端口

    systemctl enable named –now
    # 放行DNS UDP/TCP 53
    firewall-cmd –add-service=dns –permanent
    firewall-cmd –reload
    # 实时查看服务日志排错
    journalctl -f -u named

    7.9 客户端测试解析

    客户端修改DNS为10.1.8.10:

    nmcli connection modify ens33 ipv4.dns 10.1.8.11
    nmcli connection up ens33
    # 测试正向
    ping www.liuyifei.cloud
    dig student.liuyifei.cloud
    # 测试反向解析
    dig -x 10.1.8.10
    # 查询MX邮件记录
    dig -t MX liuyifei.cloud

    八、拓展自学:缓存DNS服务器

    8.1 Unbound(企业专用缓存DNS)

    轻量化递归缓存服务,隔离内网客户端公网查询,支持ACL黑白名单。
    安装配置核心命令:

    yum install -y unbound
    unbound-checkconf # 校验配置
    systemctl enable unbound –now
    unbound-control dump_cache # 导出缓存
    unbound-control flush www.liuyifei.cloud # 清空单域名缓存

    8.2 Dnsmasq(家用/小型机房轻量工具)

    集成DNS缓存+DHCP服务,适合虚拟机、小型局域网;
    特色功能:自定义域名劫持、分线路上游DNS、广告屏蔽。
    核心配置参数:

    server=/cn/114.114.114
    server=/google.com/8.8.8.8
    address=/ad.com/127.0.0.1 #屏蔽广告域名

    九、DNS故障排查完整思路

  • 检查客户端/etc/resolv.confDNS地址是否正确;
  • 使用dig @DNS服务器 域名指定服务器测试,区分本地/服务器问题;
  • 查看named服务日志journalctl -u named,定位区域文件语法错误;
  • 检查防火墙UDP/TCP 53端口是否放行;
  • 区域修改后必须递增SOA序列号,否则从服务器不会同步;
  • 反向解析PTR记录IP书写格式不能颠倒;
  • 出现NXDOMAIN:域名无对应记录;
  • 出现REFUSED:服务器ACL拒绝当前客户端查询。
  • 十、整体总结

  • DNS替代HOSTS文件解决大规模网络域名同步、冲突问题,采用根→顶级域→二级域分布式树形架构;
  • 递归查询(用户↔本地DNS)+迭代查询(DNS层级互查)是互联网标准解析流程;
  • 常用RR记录:A/AAAA正向、PTR反向、CNAME别名、MX邮件、NS域名服务器、SOA区域配置;
  • BIND是Linux主流权威DNS,分主从架构实现高可用,区域文件修改后序列号必须+1;
  • 内网可选Unbound、Dnsmasq搭建缓存DNS,减少外网解析请求、提升速度;
  • dig是排错最优工具,可完整跟踪查询链路、查看服务器返回状态码;
  • 运维规范:权威服务器限制allow-transfer,禁止外网拉取全部域名记录,降低信息泄露风险。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 零基础学 DNS!从域名层级到自建权威解析服务器全套教程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!