Linux DNS域名解析服务器应用与管理

引导

  • 了解DNS服务的作用与域名解析工作流程
  • 掌握DNS服务器的安装和服务启停控制
  • 熟悉DNS服务器的配置文件
  • 熟悉DNS正向和反向解析的实现方法
  • 掌握DNS正反向解析的测试方法
  • 掌握主、辅和缓存DNS服务器的配置方法

1. DNS服务基础

1.1 DNS系统结构与管理

  • 作用:通过分布式数据库系统管理大规模网络中的主机名与IP映射关系。
  • 域名空间结构:树状层次结构(根域 → 顶级域 → 二级域 → 三级域)。
  • 顶级域分类
    • 传统域名:.com(商业)、.edu(教育)、.gov(政府)、.net(网络服务)等。
    • 新增域名:.info.biz.name等。
  • 服务器类型
    • 主服务器(Master):权威维护区域内域名与IP的对应关系。
    • 辅助服务器(Slave):从主服务器同步数据,提供冗余备份。
    • 缓存服务器(Cache-only):加速查询,节省带宽,无本地数据库。

1.2 DNS解析流程(以www.benet.com为例)

  1. 客户端查询本地hosts文件 → 无结果则请求Local DNS。
  2. Local DNS向根DNS发起请求 → 根DNS返回.com域的NS记录。
  3. Local DNS向.com域DNS请求 → 返回benet.com域的NS记录。
  4. Local DNS向benet.com域DNS请求 → 获得www.benet.com的A记录(IP地址)。
  5. Local DNS将IP返回客户端 → 客户端访问目标服务器。

1.3 查询类型

  • 递归查询
    DNS客户端发出一次请求,Local DNS必须返回最终结果(开启recursion yes;)。
  • 迭代查询
    DNS服务器间多次请求,逐步返回更接近目标的DNS指引(如根→顶级→二级)。

1.4 查询顺序

  1. 客户端hosts文件 → 客户端缓存
  2. DNS服务器:区域文件 → 缓存 → 转发服务器 → 根DNS(递归开启时)

2. 安装与配置Bind服务

2.1 安装Bind

# 检查已安装的Bind组件
rpm -qa | grep bind

# 安装Bind主程序及安全组件
yum install -y bind bind-chroot
  • 关键目录
    • 配置文件:/etc/named.conf(主配置)、/etc/named.rfc1912.zones(区域配置)
    • 数据文件:/var/named/
    • Chroot模式:配置文件移至/var/named/chroot/etc/,数据文件在/var/named/chroot/var/named/

2.2 启停控制与防火墙

# 服务控制
systemctl start|stop|restart named

# 开放DNS端口(UDP 53)
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

# 关闭SELinux限制
setsebool -P named_disable_trans 1

3. Bind配置文件详解

3.1 主配置文件 /etc/named.conf

options {
    listen-on port 53 { 127.0.0.1; };      # 监听IP
    directory "/var/named";                 # 数据文件目录
    allow-query { any; };                   # 允许查询的客户端
    recursion yes;                          # 开启递归查询
    forwarders { 114.114.114.114; };        # 设置转发DNS
};
zone "." IN {                               # 根域配置
    type hint;
    file "named.ca";
};
include "/etc/named.rfc1912.zones";         # 包含区域配置文件

3.2 区域配置文件 /etc/named.rfc1912.zones

  • 区域类型
    • master:主区域(可读写)
    • slave:辅助区域(从Master同步)
    • forward:转发区域
  • 定义格式
    • 正向解析
      zone "mzisle.com" IN {
          type master;
          file "mzisle.com.zone";  # 正向区域数据文件
      };
      
    • 反向解析
      zone "1.168.192.in-addr.arpa" IN {
          type master;
          file "192.168.1.rev";   # 反向区域数据文件
      };
      

3.3 区域数据文件示例

  • 正向解析文件 /var/named/mzisle.com.zone

    $TTL 1D
    @   IN SOA  dns.mzisle.com.  root.mzisle.com. (
                    2023081301 ; Serial
                    1D         ; Refresh
                    1H         ; Retry
                    1W         ; Expire
                    3H )       ; Minimum TTL
        NS      dns.mzisle.com.
    dns A       192.168.1.254
    mail A      192.168.1.101
    www  A      192.168.1.102
    bbs  CNAME  www.mzisle.com.  # 别名记录
    
  • 反向解析文件 /var/named/192.168.1.rev

    $TTL 1D
    @   IN SOA  dns.mzisle.com.  root.mzisle.com. ( ... )
        NS      dns.mzisle.com.
    254 PTR     dns.mzisle.com.   # IP末尾254 → 域名
    101 PTR     mail.mzisle.com.
    

4. 部署场景与测试

4.1 基础解析测试

# 重启服务
systemctl restart named

# 使用nslookup验证
nslookup www.mzisle.com    # 应返回192.168.1.102
nslookup 192.168.1.101    # 应返回mail.mzisle.com

4.2 辅助DNS配置

主服务器配置
/etc/named.rfc1912.zones中允许辅助服务器同步:

zone "mzisle.com" IN {
    type master;
    file "mzisle.com.zone";
    allow-transfer { 192.168.1.253; };  # 辅助DNS的IP
};

辅助服务器配置

zone "mzisle.com" IN {
    type slave;
    masters { 192.168.1.254; };         # 主DNS的IP
    file "slaves/mzisle.com.zone";        # 同步文件保存路径
};
  • 验证
    在辅助服务器执行 ls /var/named/slaves/,确认同步文件生成。

4.3 缓存DNS配置

主配置文件 /etc/named.conf

options {
    allow-query { 192.168.10.0/24; };  # 允许客户端网段
    recursion yes;
    forward only;
    forwarders { 114.114.114.114; };   # 公共DNS
    dnssec-validation no;              # 关闭DNSSEC加速解析
};
  • 客户端测试
    将DNS设置为缓存服务器IP,执行 nslookup www.baidu.com 应返回非权威应答(Non-authoritative answer)。

关键点总结

  1. 配置文件语法检查
    named-checkconf(主配置) / named-checkzone(区域文件)
  2. 区域文件修改后
    需递增Serial值(如20230813012023081302),否则辅助DNS不同步。
  3. 防火墙与SELinux
    确保开放端口并关闭安全限制,避免解析失败。