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

DNS 服务器完整知识+实操

文章目录

    • 一、DNS 基础理论
      • 1. DNS 诞生背景
      • 2. DNS 系统组成
      • 3. DNS 两种查询方式
        • (1)递归查询 RD=1(客户端 ↔ 本地 DNS)
        • (2)迭代查询 RD=0(本地 DNS ↔ 根 / 顶级 / 权威服务器)
        • 示例:解析`www.xiaomi.com`完整流程
      • 4. DNS 核心资源记录 RR
        • SOA 字段详解
      • 5. DNS 服务器分类
      • 6. 常用 DNS 排查工具
        • Windows 工具
        • Linux 工具(bind-utils 包)
    • 二、CentOS7 BIND 权威 DNS 实操(主服务器)
      • 实验环境规划
      • 步骤 1:基础环境初始化(两台主机均执行)
      • 步骤 2:dns-server 安装 BIND 服务
      • 步骤 3:修改主配置文件`/etc/named.conf`
        • 1)定义 ACL 可信网段
        • 2)修改 options 全局配置
        • 3)定义正向、反向区域(文件末尾追加)
      • 步骤 4:创建区域解析文件
        • 1)复制模板生成区域文件
        • 2)编辑正向区域`/var/named/laogao.cloud.zone`
        • 3)编辑反向区域`/var/named/10.1.8.zone`
      • 步骤 5:校验配置语法(启动前必做)
      • 步骤 6:启动服务 + 放行防火墙
    • 三、客户端测试(dns-client 主机)
      • 1. 客户端指定 DNS 服务器
      • 2. 解析测试命令
    • 四、扩展:缓存 DNS 服务器(Unbound/Dnsmasq)
      • 方案 1:Unbound 轻量缓存 DNS
        • 1. 安装
        • 2. 核心配置`/etc/unbound/unbound.conf`
        • 3. 管理缓存
      • 方案 2:Dnsmasq 多功能缓存 DNS(小型局域网首选)
        • 1. 安装
        • 2. 核心配置`/etc/dnsmasq.conf`
        • 3. 上游 DNS 文件`/etc/resolv.dnsmasq.conf`
        • 4. 启动测试

一、DNS 基础理论

1. DNS 诞生背景

早期 ARPAnet 通过HOSTS.txt维护主机名与 IP 映射,由 NIC 统一分发,网络规模暴露出两大致命缺陷:

  • 名称冲突:用户随意修改主机名易重复;

  • 数据不一致

    :全网主机文件同步滞后,解析错乱。

    为解决分布式域名解析问题,DNS(Domain Name System,域名系统)诞生,核心作用:

    把人类易记域名翻译为机器通信 IP 地址

  • 域名解析访问流程

    流程简述:客户端输入域名→DNS 解析得到 IP→基于 IP 发起 HTTP 访问。

    2. DNS 系统组成

  • 域名:字符化主机标识,如www.huawei.com;

  • DNS 服务器:分布式数据库,存储域名 – IP 映射,响应解析请求,不存储全网所有记录;

  • 分层域名树结构

    (从顶到底)

    DNS层级结构

    • 根域:.,所有域名顶层,默认书写省略;

    • 顶级域 TLD:

      • gTLD 通用域:.com商业、.edu教育、.org组织;
      • ccTLD 国家域:.cn中国、.uk英国、.us美国;
    • 次顶级域:企业自定义,如huawei;

    • 主机名:服务器标识,如

      www

      mail

      完整 FQDN 格式:

      主机.次级域.顶级域.根

      www.huawei.com.

    3. DNS 两种查询方式

    DNS 完整解析流程为递归 + 迭代组合(互联网标准流程)

    (1)递归查询 RD=1(客户端 ↔ 本地 DNS)

    客户端只发 1 次请求,全权交给本地 DNS,服务器必须返回最终 IP 或报错,不返回中间服务器地址。

    (2)迭代查询 RD=0(本地 DNS ↔ 根 / 顶级 / 权威服务器)

    本地 DNS 查不到完整记录,上级服务器仅返回下一级 DNS 地址,本地 DNS 逐层自行询问。

    示例:解析www.xiaomi.com完整流程
  • 客户端向本地 DNS 发起递归查询,要求返回最终 IP;
  • 本地 DNS 无缓存,向根服务器迭代查询www.xiaomi.com;
  • 根服务器返回.com顶级域服务器地址;
  • 本地 DNS 向.com服务器迭代查询,返回xiaomi.com权威服务器地址;
  • 本地 DNS 向 xiaomi 权威服务器迭代查询,获取目标 IP;
  • 本地 DNS 缓存记录,将 IP 递归返回客户端。
  • 4. DNS 核心资源记录 RR

    所有解析数据存储为资源记录,通用格式:域名 TTL 类型 数据

    表格

    记录类型作用示例
    A IPv4 正向解析,域名→IP www 3600 IN A 10.1.8.200
    AAAA IPv6 正向解析,域名→IPv6 a.root-servers.net IN AAAA 2001:503:ba3e::2:30
    CNAME 域名别名,指向真实域名 student IN CNAME client.laogao.cloud.
    PTR 反向解析,IP→域名(in-addr.arpa 域) 10 IN PTR dns.laogao.cloud.
    NS 区域权威服务器记录,指定域名由哪台 DNS 解析 @ IN NS dns.laogao.cloud.
    SOA 区域起始授权记录,每个区域唯一,管控主从同步、缓存超时 包含序列号、刷新 / 重试 / 过期时间
    MX 邮件交换记录,域名邮箱服务器,数字越小优先级越高 @ IN MX 10 mail.laogao.cloud.
    TXT 文本记录,用于 SPF、域名所有权验证 "v=spf1 a -all"
    SRV 服务定位记录,标记 LDAP、数据库等服务端口与主机 _ldap._tcp IN SRV 0 100 389 server0
    SOA 字段详解

    plaintext

    @ IN SOA dns.laogao.cloud. root.laogao.cloud. (
    2026080500 ; serial 序列号,修改区域文件必须+1
    3H ; refresh 从服务器多久同步主服务器
    15M ; retry 同步失败重试间隔
    1W ; expire 长期同步失败,从服务器停止提供解析
    15M ; minimum 不存在域名的负缓存时间
    )

    • dns.laogao.cloud.:主 DNS 服务器 FQDN;
    • root.laogao.cloud.:管理员邮箱,.替代@,即root@laogao.cloud。

    5. DNS 服务器分类

  • 权威服务器(BIND Master/Slave)

    • Master 主服务器:唯一可编辑区域解析记录;

    • Slave 从服务器:定期从主服务器

      区域传输 Zone Transfer

      同步数据,提供冗余解析;

      企业规范:至少部署 2 台异地权威服务器,避免单点故障。

  • 缓存递归服务器(Unbound/Dnsmasq/BIND)

    不存储权威记录,缓存外网解析结果,加速内网解析,仅对内网可信主机开放递归,防止 DNS 放大攻击。

  • 6. 常用 DNS 排查工具

    Windows 工具
  • ipconfig /displaydns:查看本机 DNS 缓存
  • ipconfig /flushdns:清空本机 DNS 缓存
  • nslookup:交互式 / 非交互式解析查询
  • Linux 工具(bind-utils 包)
  • dig

    :功能最全,完整输出解析报文,排错首选

    • dig @DNSIP 域名:指定服务器查询
    • dig +short 域名:精简输出仅 IP
    • dig -t MX 域名:指定查询 MX 记录
    • dig -x IP:反向 PTR 查询
    • dig +trace 域名:完整追踪迭代查询全过程
  • host:轻量化简易解析工具

  • nslookup:跨平台通用

  • whois:查询域名注册商、注册时间等信息

  • getent hosts:按系统解析顺序(hosts→DNS)查询域名

  • 二、CentOS7 BIND 权威 DNS 实操(主服务器)

    实验环境规划

    表格

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

    网关:10.1.8.2

    步骤 1:基础环境初始化(两台主机均执行)

  • 修改主机名
  • bash

    # dns-server
    hostnamectl set-hostname dns-server
    # dns-client
    hostnamectl set-hostname dns-client

  • 配置静态 IP(dns-server 示例)
  • bash

    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 autoconnect yes
    nmcli connection up ens33

    dns-client 将 IP 改为10.1.8.11/24,其余参数一致。

    步骤 2:dns-server 安装 BIND 服务

    bash

    # 安装服务+解析工具
    yum install -y bind bind-utils
    # 核心文件说明
    # /etc/named.conf BIND主配置文件
    # /var/named/ 区域解析文件存放目录
    # /var/log/messages named运行日志,排错使用

    步骤 3:修改主配置文件/etc/named.conf

    1)定义 ACL 可信网段

    文件开头添加内网网段白名单

    conf

    acl classroom {
    10.1.8.0/24; # 允许内网所有主机访问DNS
    };

    内置默认 ACL:

    • any:所有 IP;none:拒绝全部;localhost:本机;localnets:本机同网段
    2)修改 options 全局配置

    conf

    options {
    listen-on port 53 { 127.0.0.1; 10.1.8.10; }; # 监听本机回环+内网网卡IP
    listen-on-v6 port 53 { ::1; };
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query { any; }; # 允许所有客户端发起查询
    recursion yes; # 开启递归(内网缓存场景;纯权威服务器建议关闭recursion no)
    allow-recursion { classroom; }; # 仅内网允许递归,防攻击
    allow-transfer { classroom; }; # 仅允许内网从服务器同步区域数据
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    };

    3)定义正向、反向区域(文件末尾追加)

    conf

    # 正向区域:laogao.cloud域名
    zone "laogao.cloud" IN {
    type master; # 角色为主服务器
    file "laogao.cloud.zone"; # 对应区域文件名称
    };
    # 反向区域:10.1.8.0/24网段,格式 网段倒写.in-addr.arpa
    zone "8.1.10.in-addr.arpa" IN {
    type master;
    file "10.1.8.zone";
    };

    步骤 4:创建区域解析文件

    1)复制模板生成区域文件

    bash

    # 正向区域模板
    cp /var/named/named.localhost /var/named/laogao.cloud.zone
    # 反向区域模板
    cp /var/named/named.loopback /var/named/10.1.8.zone
    # 修改文件权限、属组(named服务读取权限)
    chmod 640 /var/named/*.zone
    chown root:named /var/named/*.zone
    # SELinux标签修复
    chcon -t named_zone_t /var/named/*.zone

    2)编辑正向区域/var/named/laogao.cloud.zone

    conf

    $TTL 1D ; 默认TTL 1天
    @ IN SOA dns.laogao.cloud. root.laogao.cloud. (
    2026080501 ; serial 修改文件必须自增
    3H
    15M
    1W
    15M
    )
    ; NS记录,指定权威服务器
    @ IN NS dns.laogao.cloud.
    ; A记录 域名映射IPv4
    dns IN A 10.1.8.10
    server IN A 10.1.8.10
    client IN A 10.1.8.11
    www IN A 10.1.8.200
    mail IN A 10.1.8.253
    ; CNAME别名记录
    student IN CNAME client.laogao.cloud.
    ; MX邮件记录
    @ IN MX 10 mail.laogao.cloud.

    注意:完整 FQDN 必须末尾带.,简写域名自动拼接laogao.cloud

    3)编辑反向区域/var/named/10.1.8.zone

    conf

    $TTL 1D
    @ IN SOA dns.laogao.cloud. root.laogao.cloud. (
    2026080501
    3H
    15M
    1W
    15M
    )
    @ IN NS dns.laogao.cloud.
    ; PTR反向记录,仅写IP最后一段
    10 IN PTR dns.laogao.cloud.
    10 IN PTR server.laogao.cloud.
    11 IN PTR client.laogao.cloud.
    11 IN PTR student.laogao.cloud.
    200 IN PTR www.laogao.cloud.
    253 IN PTR mail.laogao.cloud.

    步骤 5:校验配置语法(启动前必做)

    bash

    # 校验主配置named.conf
    named-checkconf
    # 校验正向区域文件
    named-checkzone laogao.cloud /var/named/laogao.cloud.zone
    # 校验反向区域文件
    named-checkzone 8.1.10.in-addr.arpa /var/named/10.1.8.zone
    # 无报错再启动服务

    步骤 6:启动服务 + 放行防火墙

    bash

    # 开机自启并立即启动
    systemctl enable named –now
    # 查看运行状态
    systemctl status named
    # 防火墙放行DNS 53端口UDP/TCP
    firewall-cmd –add-service=dns –permanent
    firewall-cmd –reload
    # 实时查看named运行日志(排错)
    journalctl -f _SYSTEMD_UNIT=named.service

    三、客户端测试(dns-client 主机)

    1. 客户端指定 DNS 服务器

    bash

    # 将客户端DNS指向自建BIND服务器
    nmcli connection modify ens33 ipv4.dns 10.1.8.10
    nmcli connection up ens33

    2. 解析测试命令

  • ping 域名基础测试
  • bash

    ping dns.laogao.cloud
    ping student.laogao.cloud # CNAME别名,自动解析client
    ping www.laogao.cloud

  • host 工具查询
  • bash

    # 正向解析
    host www.laogao.cloud
    # 反向解析IP
    host 10.1.8.10
    # 查询域名MX邮件记录
    host -t MX laogao.cloud

  • dig 专业排错查询
  • bash

    # 指定服务器查询A记录
    dig @10.1.8.10 www.laogao.cloud A
    # 反向PTR查询
    dig @10.1.8.10 -x 10.1.8.200
    # 查询NS权威服务器记录
    dig @10.1.8.10 laogao.cloud NS
    # 精简输出仅IP
    dig +short www.laogao.cloud

  • getent(遵循 hosts→DNS 解析顺序)
  • bash

    getent hosts student.laogao.cloud

    四、扩展:缓存 DNS 服务器(Unbound/Dnsmasq)

    方案 1:Unbound 轻量缓存 DNS

    1. 安装

    bash

    yum install -y unbound bind-utils

    2. 核心配置/etc/unbound/unbound.conf

    conf

    server:
    interface: 10.1.8.20 # 监听内网IP
    interface: 127.0.0.1
    access-control: 10.1.8.0/24 allow # 内网允许递归
    access-control: 0.0.0.0/0 refuse # 拒绝外网
    domain-insecure: laogao.cloud # 内部域跳过DNSSEC校验
    # 内网域名转发至BIND权威服务器
    forward-zone:
    name: "laogao.cloud"
    forward-addr: 10.1.8.10
    # 所有外网域名转发公共DNS
    forward-zone:
    name: "."
    forward-addr: 114.114.114.114
    forward-addr: 8.8.8.8

    3. 管理缓存

    bash

    # 校验配置
    unbound-checkconf
    # 启停服务
    systemctl enable unbound –now
    # 导出缓存
    unbound-control dump_cache > dns_cache.log
    # 清空单域名缓存
    unbound-control flush www.laogao.cloud
    # 清空整个域缓存
    unbound-control flush_zone laogao.cloud

    方案 2:Dnsmasq 多功能缓存 DNS(小型局域网首选)

    支持 DNS 缓存 + DHCP + 广告拦截,轻量无复杂配置

    1. 安装

    bash

    yum install -y dnsmasq

    2. 核心配置/etc/dnsmasq.conf

    conf

    listen-address=10.1.8.20,127.0.0.1 # 监听IP
    resolv-file=/etc/resolv.dnsmasq.conf # 上游公共DNS文件
    strict-order # 严格按顺序查询上游DNS
    # 内网域名转发至BIND权威服务器
    server=/laogao.cloud/10.1.8.10
    # 广告域名劫持至无效IP,屏蔽广告
    address=/ad.xxx.com/127.0.0.1
    # 自定义静态内网解析(替代hosts)
    address=/server.laogao.cloud/10.1.8.10

    3. 上游 DNS 文件/etc/resolv.dnsmasq.conf

    conf

    nameserver 114.114.114.114
    nameserver 8.8.8.8

    4. 启动测试

    bash

    # 校验配置
    dnsmasq -test
    systemctl enable dnsmasq –now
    # 客户端测试
    dig @10.1.8.20 www.laogao.cloud

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » DNS 服务器完整知识+实操
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!