Linux域名服务(DNS)基础理论及 bind 部署配置实操报告

发布于:2025-08-13 ⋅ 阅读:(16) ⋅ 点赞:(0)

Linux域名服务(DNS)基础理论及 bind 部署配置实操报告

一、DNS的定义

DNS(Domain Name System,域名服务)是由解析器和域名服务器组成的系统,核心功能是实现域名与IP地址的转换(即“域名解析”)。

  • 组成:包含解析器(负责发起解析请求)和域名服务器(存储域名与IP对应关系并处理解析请求)。
  • 核心特性
    • 域名必须对应一个IP地址,而IP地址可无域名;
    • 采用类似目录树的等级结构
    • 域名服务器分为主服务器和转发服务器(基于客户机/服务器模式)。
  • 作用场景:用于TCP/IP网络(如Internet),通过用户友好的域名查找计算机或服务(如将网址解析为IP地址,实现上网)。

二、域名的规则

域名采用分层结构,从顶层到低层依次为:

  1. 根域:以“.”表示(通常省略)。
  2. 顶级域
    • 组织域:3个字符代号,如.com(商业)、.edu(教育)、.gov(政府);
    • 国家/地区域:2个字符代号,如.cn(中国)、.jp(日本)。
  3. 二级域:注册给个人、组织或公司的名称,如baidu、taobao。
  4. 主机名称:域名空间最底层,与各级域名结合构成FQDN(完全合格域名)
  • 格式规则:各级域用“.”分隔,完全合格域名格式为“主机名称+域名(根域+顶级域+二级域)”,例如www.baidu.com(完整形式为www.baidu.com.,根域“.”省略)。

三、DNS服务的作用

核心作用:将域名解析为IP地址(正向解析),也可将IP地址解析为域名(反向解析),解决“人类记域名、机器认IP”的矛盾。

四、域名查询的过程

1. 查询类别
  • 递归查询:DNS客户端向DNS服务器发起请求,服务器需返回最终结果(客户端只等结果)。
  • 迭代查询:DNS服务器之间的查询,服务器可返回中间结果(如指向其他服务器),需多次交互直到获取最终结果。
2. 解析方式
  • 正向解析:将FQDN(如www.baidu.com)解析为对应的IP地址。
  • 反向解析:将IP地址(如192.168.1.1)解析为对应的FQDN。

1、DNS服务器访问本地DNS

2、如果本地未查询到开始递归查询

  • 查询根服务器存储的顶级域(TLD)服务器地址返回到本地DNS
  • 查询顶级域存储的二级域名的权威 DNS 服务器服务器地址返回到本地DNS
  • 查询二级域名的服务器存储的主机名称的IP地址返回到本地DNS

3、返回结果到DNS服务器
在这里插入图片描述

五、DNS服务搭建(以bind为例)

1. 为何需要DNS服务器?
  • 本地解析文件/etc/hosts需手动配置IP与域名对应关系,且仅在本机生效(如在文件/etc/hosts中写入172.16.30.30 system2可实现ssh system2,但其他机器需重复配置,如果更改名字其他机器也要重复更改)。
  • 当网络规模大(如200台设备)或域名/IP变更时,手动维护成本极高,因此需要集中式的DNS服务器,所有设备只需指向DNS服务器的IP即可自动解析。
2. 重要配置文件及目录
文件/目录路径 作用描述
/etc/hosts 本地解析配置文件,手动设置IP与域名对应关系(仅本机生效)。
/etc/resolv.conf 客户端的DNS指向配置,指定使用的DNS服务器IP。
named DNS服务的名称(启动/停止服务时使用,如systemctl start named)。
bindbind-chroot DNS服务的安装软件包(通过包管理工具安装)。
/var/named DNS服务的家目录,存放解析记录文件。
/etc/named.conf DNS的主配置文件,定义全局设置及区域映射。
/var/named/chroot/etc/named.rfc1912.zones 记录正向和反向解析的全局配置文件,定义解析区域。
/var/named/named.localhost 正向解析配置文件的模板。
/var/named/named.empty 反向解析配置文件的模板。

模拟操作

下载

bind和bind-chroot

yum -y install bind bind-chroot

辑主配置文件:vim /etc/named.conf

在文件中进行如下配置:

  1. 修改监听设置,允许所有地址访问:
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
  1. 允许所有主机查询
allow-query     { any; };

include /etc/named.rfc1912.zones 也就是将这些导入这个文件中,是用来解析DNS正向、反向解析全局配置文件,再下面就是模板,复制到最后再来更改

3、编辑正向和反向解析全局配置文件

# 编辑正向和反向解析的全局配置文件
vim /etc/named.rfc1912.zones

# 正向解析区域配置
# "example.com" 是要解析的域名
zone "example.com" IN {
        type master;                  # 类型为主服务器(负责该区域的权威解析)
        file "hrz.com";           # 指定正向解析数据文件的名称(通常存放在/var/named/目录)
        allow-update { none; };       # 禁止动态更新区域数据(安全设置,生产环境常用)
};


# 反向解析区域配置
# "30.16.172.in-addr.arpa" 是反向解析的网络地址格式
# 对应实际网络为 172.16.30.0/24 网段(IP地址反向书写)
zone "30.16.172.in-addr.arpa" IN {
        type master;                  # 类型为主服务器
        file "com.hrz";           # 指定反向解析数据文件的名称
        allow-update { none; };       # 禁止动态更新
};
cp -p named.loca

(1)复制模板文件并保持权限

首先进入 DNS 数据文件目录,复制系统提供的模板文件,使用-p参数保留原文件的所有者、所属组和权限(非常重要,否则 named 服务可能无法读取):

cd /var/named
# 复制正向解析模板文件,命名为我们在配置中指定的hrz.com
cp -p named.localhost hrz.com
# 复制反向解析模板文件,命名为我们在配置中指定的com.hrz
cp -p named.empty com.hrz

(2)编辑正向解析文件

编辑hrz.com文件,配置域名到 IP 的解析规则:

vim hrz.com
$TTL 1D                   ; 缓存周期为1天(3600秒×24)
@       IN SOA  hrz.example.com. root.example.com. (
                                2025081101        ; 序列号(版本号),更新文件后建议递增
                                        1D      ; refresh(刷新时间):辅助DNS每隔1天同步一次数据
                                        1H      ; retry(重试时间):同步失败后,每隔1小时重试一次
                                        1W      ; expire(失效时间):超过1周未同步成功,辅助DNS不再提供解析
                                        3H )    ; minimum(最小缓存时间):无效解析结果缓存3小时
        NS      hrz.example.com.  ; 该区域的权威DNS服务器是server.example.com
hrz	    IN      A       172.16.30.20  ; 主机名hrz.example.com对应的IP地址
zs      IN      A       172.16.30.20  ; 主机名zs.example.com对应的IP地址

说明

  • @ 代表当前区域(即hrz.com)
  • SOA 记录是区域的起始授权记录,标志该 DNS 服务器是该区域的权威服务器
  • NS 记录指定负责该区域解析的 DNS 服务器
  • A 记录用于将域名解析为 IPv4 地址
  • hrz和zsIP一样是因为一个ip可以有多个域名

(3)编辑反向解析文件

编辑com.example文件,配置 IP 到域名的解析规则:

vim com.hrz
$TTL 3H                   ; 缓存周期为3小时
@       IN SOA  hrz.example.com. root.example.com. (
                                 2025081101        ; 序列号,建议与正向解析保持一致或单独递增
                                        1D      ; 刷新时间:1天
                                        1H      ; 重试时间:1小时
                                        1W      ; 失效时间:1周
                                        3H )    ; 最小缓存时间:3小时
        NS      server.example.com.  ; 负责该反向区域的DNS服务器
20      IN      PTR     hrz.example.com. ; IP地址172.16.30.20对应的域名
20      IN      PTR     zs.example.com.  ; IP地址172.16.30.20对应的域名

说明

  • 反向解析的@ 代表30.16.172.in-addr.arpa(对应 172.16.30.0/24 网段)
  • PTR 记录用于将 IPv4 地址解析为域名,记录中的数字(10、20)是 IP 地址的最后一段

配置完成后,需要检查配置文件语法并重启 named 服务:

# 重启服务使配置生效
systemctl  restart  named
systemctl  enable  named

关闭防火墙

7、在客户端上的网卡配置文件中配置DNS为服务器的IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=78fae162-eb2f-4a4e-b46f-e77f72410498
DEVICE=ens160
ONBOOT=yes
IPADDR=172.16.30.10
PREFIX=24
DNS1=172.16.30.20

保存退出后,重启网卡服务并激活网络连接

systemctl restart network

8、验证
在client上ping服务器server.example.com,看能否ping通

ping hrz.example.com ping hrz.example.com
PING hrz.example.com (192.168.100.10) 56(84) bytes of data.
64 bytes from hrz.example.com (192.168.100.10): icmp_seq=1 ttl=64 time=0.453 ms
64 bytes from hrz.example.com (192.168.100.10): icmp_seq=2 ttl=64 time=0.376 ms
64 bytes from hrz.example.com (192.168.100.10): icmp_seq=3 ttl=64 time=0.318 ms
64 bytes from hrz.example.com (192.168.100.10): icmp_seq=4 ttl=64 time=0.325 ms

或者使用nslookup

辅助DNS

以下是配置辅助 DNS 服务器的详细步骤:

1. 安装必要的软件包

首先安装 BIND DNS 服务器及相关组件:

yum install bind bind-chroot -y
  • bind:DNS 服务器核心程序
  • bind-chroot:提供安全的隔离环境,增强服务器安全性

2. 修改主配置文件

与主 DNS 服务器的主配置文件修改内容一致:

vim /etc/named.conf
listen-on port 53 { any; };      # 监听所有IP的53端口
listen-on-v6 port 53 { any; };   # 监听所有IPv6地址的53端口
allow-query     { any; };        # 允许所有主机查询

3. 配置区域解析(全局配置文件)

编辑区域配置文件,设置为从服务器模式:

vim /etc/named.rfc1912.zones

添加以下内容:

# 正向解析区域(从服务器配置)
zone "example.com" IN {
        type slave;                   # 类型为从服务器
        file "slaves/hrz.com";    # 同步的解析文件存储路径(相对/var/named/目录)
        masters { 172.16.30.10; };    # 指定主DNS服务器的IP地址
};
# 反向解析区域(从服务器配置)
zone "30.16.172.in-addr.arpa" IN {
        type slave;                   # 类型为从服务器
        file "slaves/com.hrz";    # 同步的反向解析文件存储路径
        masters { 172.16.30.10; };    # 主DNS服务器的IP地址
};

4. 重启并启用服务

# 启动named服务并设置开机自启
systemctl start named
systemctl enable named

# 检查服务状态
systemctl status named

重启服务后自动同步解析文件到slaves/

5. 关闭防火墙和 SELinux

为确保 DNS 服务正常通信,临时关闭防火墙和 SELinux:

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭SELinux
setenforce 0

# 永久关闭SELinux(需重启生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

配置说明

  • 辅助 DNS 服务器会自动从主 DNS 服务器(172.16.30.10)同步解析数据
  • 同步的解析文件会保存在/var/named/slaves/目录下
  • 当主 DNS 服务器的解析记录更新(序列号递增)后,辅助 DNS 会自动同步新数据

网站公告

今日签到

点亮在社区的每一天
去签到