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

DNS(域名系统)详解与 BIND 服务搭建

DNS(域名系统)详解与 BIND 服务搭建

在这里插入图片描述

一、什么是 DNS

DNS(域名服务,Domain Name System)是由解析器和域名服务器组成的网络服务,核心功能是将用户友好的域名(如www.baidu.com)转换为机器可识别的 IP 地址(如180.101.50.242),这个过程称为 “域名解析”。

  • 组成:包含域名服务器(存储域名与 IP 的映射关系)和解析器(向服务器请求解析的客户端组件)。
  • 特性:域名与 IP 是一对一或多对一关系(可通过 DNS 轮循实现一对多);采用目录树状的层级结构;以客户机 / 服务器模式运行,分为主服务器和转发服务器。
  • 作用:解决了 “记 IP 难、记域名易” 的问题,是互联网通信的基础服务 —— 用户输入域名时,DNS 自动解析为 IP,实现主机间的连接。

二、域名的规则与结构

域名采用分层结构,类似目录树,各层级用点号 “.” 分隔:

  • 根域:最高层级,用 “.” 表示(通常省略,如www.baidu.com实际是www.baidu.com.)。
  • 顶级域:
    • 组织域:3 个字符,如.com(商业)、.edu(教育)、.gov(政府)。
    • 国家 / 地区域:2 个字符,如.cn(中国)、.jp(日本)。
  • 二级域:注册给个人、组织或公司的名称,如baidubaidu.com)、taobaotaobao.com)。
  • 主机名:域名的最底层,标识具体主机,与各级域名结合构成FQDN(完全合格域名),如server.example.com

三、DNS 服务的核心功能与查询方式

1. 核心作用

  • 正向解析:将 FQDN(如client.example.com)解析为对应的 IP 地址(如172.16.30.10)。
  • 反向解析:将 IP 地址(如172.16.30.20)解析为对应的 FQDN(如server.example.com)。

2. 查询类别

  • 递归查询:客户端向 DNS 服务器发送请求后,服务器全程处理并返回最终结果(客户端只需等待)。
  • 迭代查询:DNS 服务器若无法直接解析,会返回下一级服务器的地址,由客户端自行向新服务器查询,直至得到结果。

四、DNS 服务搭建(BIND)

BIND 是最常用的 DNS 服务器软件,以下是基于 BIND 的主 DNS 服务器搭建步骤:

1. 安装软件

[root@zhang3 ]# yum -y install bind bind-chroot
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
aa                                                       | 3.6 kB     00:00     
(1/2): aa/group_gz                                         | 166 kB   00:00     
(2/2): aa/primary_db                                       | 3.1 MB   00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 bind.x86_64.32.9.9.4-72.el7 将被 安装
--> 正在处理依赖关系 python-ply,它被软件包 32:bind-9.9.4-72.el7.x86_64 需要
---> 软件包 bind-chroot.x86_64.32.9.9.4-72.el7 将被 安装
--> 正在检查事务
---> 软件包 python-ply.noarch.0.3.4-11.el7 将被 安装
--> 解决依赖关系完成依赖关系解决================================================================================Package             架构           版本                       源          大小
================================================================================
正在安装:bind                x86_64         32:9.9.4-72.el7            aa         1.8 Mbind-chroot         x86_64         32:9.9.4-72.el7            aa          88 k
为依赖而安装:python-ply          noarch         3.4-11.el7                 aa         123 k事务概要
================================================================================
安装  2 软件包 (+1 依赖软件包)总下载量:2.0 M
安装大小:5.1 M
Downloading packages:
--------------------------------------------------------------------------------
总计                                                56 MB/s | 2.0 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : python-ply-3.4-11.el7.noarch                                1/3 正在安装    : 32:bind-9.9.4-72.el7.x86_64                                 2/3 正在安装    : 32:bind-chroot-9.9.4-72.el7.x86_64                          3/3 验证中      : 32:bind-9.9.4-72.el7.x86_64                                 1/3 验证中      : python-ply-3.4-11.el7.noarch                                2/3 验证中      : 32:bind-chroot-9.9.4-72.el7.x86_64                          3/3 已安装:bind.x86_64 32:9.9.4-72.el7         bind-chroot.x86_64 32:9.9.4-72.el7        作为依赖被安装:python-ply.noarch 0:3.4-11.el7                                                完毕!
  • bind:DNS 服务核心组件。
  • bind-chroot:为 BIND 提供 “牢笼” 环境,增强安全性。

2. 关键配置文件与目录

文件 / 目录作用
/etc/named.confDNS 主配置文件,定义监听端口、允许查询的主机等。
/etc/named.rfc1912.zones全局解析配置文件,定义正向 / 反向解析区域。
/var/named/DNS 解析文件存放目录(家目录)。
/var/named/named.localhost正向解析文件模板。
/var/named/named.empty反向解析文件模板。
/etc/hosts本地静态解析文件(优先级高于 DNS)。
/etc/resolv.conf客户端 DNS 服务器指向配置。

3. 配置主 DNS 服务器

(1)修改主配置文件 /etc/named.conf
[root@zhang3 ]# vim /etc/named.conflisten-on port 53 { any; };               # 允许所有主机监听53端口(DNS默认端口,ipv4)
listen-on-v6 port 53 { any; };            # 允许所有主机监听53端口(DNS默认端口,ipv6)
allow-query { any; };                     # 允许所有主机查询
(2)配置解析区域(/etc/named.rfc1912.zones

定义正向和反向解析的区域信息:

[root@zhang3 ]# vim /etc/named.rfc1912.zones# 正向解析区域(域名example.com)
zone "example.com" IN {type master;                  # 主服务器file "zhang3.com";            # 正向解析文件名,自行定义allow-update { none; };       # 禁止动态更新
};# 反向解析区域(IP段192.168.100.x)
# 反向区域名格式:网段倒写.in-addr.arpa(100.168.192对应192.168.100)
zone "100.168.192.in-addr.arpa" IN {type master;file "com.zhang3";             # 反向解析文件名,自行定义allow-update { none; };
};#建议复制模板在尾行配置
(3)创建正向解析文件

基于模板创建并编辑正向解析文件(映射域名到 IP):

[root@zhang3 ]# cd /var/named/
[root@zhang3 named]# cp -p named.localhost zhang3.com   # 复制模板,保留文件权限(-p)[root@zhang3 named]# vim zhang3.com$TTL 1D        # 缓存有效期1天
@       IN SOA  zhang3.example.com.root.example.com. (       #SOA授权起始;该区域主域名服务器的                                                               FQDN;该区域的管理员邮箱地址2025081101      ; serial     #序列号,自行设定,这里使用日期1D      ; refresh    #刷新时间1H      ; retry      #重试时间1W      ; expire     #过期时间3H )    ; minimum    #最小缓存时间NS      zhang3.example.com.                # 域名服务器记录
zhang3 IN   A       192.168.100.10                # zhang3.example.com → 192.168.100.10
lisi   IN   A       192.168.100.10                # lisi.example.com → 192.168.100.10
  • SOA:起始授权记录,标识主 DNS 服务器。
  • NS:域名服务器记录,指定负责该域解析的服务器。
  • A:地址记录,正向解析的核心(域名→IP)。
(4)创建反向解析文件

基于模板创建并编辑反向解析文件(映射 IP 到域名):

[root@zhang3 ]# cp -p named.empty com.example[root@zhang3 named]# vim com.example$TTL 3H      # 缓存有效期3小时
@       IN SOA  zhang3.example.com. root.example.com. (  #SOA授权起始;该区域主域名服务器的                                                               FQDN;该区域的管理员邮箱地址2025081101      ; serial     #序列号,自行设定,这里使用日期1D      ; refresh    #刷新时间1H      ; retry      #重试时间1W      ; expire     #过期时间3H )    ; minimum    #最小缓存时间NS      zhang3.example.com.
10      IN      PTR     zhang3.example.com.       # 192.168.100.10 → zhang3.example.com
10      IN      PTR     lisi.example.com.         # 192.168.100.10 → lisi.example.com
  • PTR:指针记录,反向解析的核心(IP→域名)。
(5)启动服务并配置自启
[root@zhang3]# systemctl restart named       #重启named服务
[root@zhang3]# systemctl enable named        #设置named服务开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
(6)配置防火墙

允许 DNS 服务通过防火墙:

[root@zhang3 ]# firewall-cmd --add-service=dns --permanent 
success
[root@zhang3 ]# firewall-cmd --reload           #重启防火墙
success

或仅允许特定网段(如172.16.30.0/24)

[root@zhang3 ]# firewall-cmd --add-rich-rule='rule family=ipv4 source 
address=172.16.30.0/24 service name=dns accept' --permanent
success
[root@zhang3 ]# firewall-cmd --reload
success

4. 客户端配置与验证

(1)客户端设置 DNS 服务器

在客户端网卡配置文件中指定 DNS 服务器 IP(主 DNS 服务器 IP:192.168.100.10):

[root@zhang-2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  # 网卡文件名以实际为准
# 添加如下行DNS1=192.168.100.10# 重启网络生效
[root@zhang-2 ~]# systemctl restart network
(2)验证解析
# 正向解析验证
[root@zhang-2 ~]# ping zhang3.example.com
PING zhang3.example.com (192.168.100.10) 56(84) bytes of data.
64 bytes from lisi.example.com (192.168.100.10): icmp_seq=1 ttl=64 time=0.123 ms
64 bytes from lisi.example.com (192.168.100.10): icmp_seq=2 ttl=64 time=0.367 ms
64 bytes from lisi.example.com (192.168.100.10): icmp_seq=3 ttl=64 time=0.304 ms
^C
--- zhang3.example.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.123/0.264/0.367/0.105 ms# 反向解析验证
[root@zhang-2 ~]# nslookup 192.168.100.10
Server:		192.168.100.10
Address:	192.168.100.10#5310.100.168.192.in-addr.arpa	name = zhang3.example.com.
10.100.168.192.in-addr.arpa	name = lisi.example.com.#一个FQDN(完全合格域名)只能对应一个IP地址
#一个IP地址可以对应多个FQDN(完全合格域名)

五、辅助 DNS 服务器配置

辅助 DNS 服务器从主服务器同步解析数据,提供冗余备份:

  1. 安装软件:同主服务器(bind bind-chroot)。

  2. 修改主配置文件:同主服务器(允许所有主机监听和查询)。

  3. 配置区域文件(/etc/named.rfc1912.zones):

    [root@zhang-2 ]# vim /etc/named.rfc1912.zones zone "example.com" IN {         # 正向解析区域(域名example.com)type slave;                 # 辅助服务器file "zhang3.com";  # 同步的正向解析文件存放路径,自行定义masters { 192.168.100.10; };  # 主服务器IP
    };# 反向解析区域(IP段192.168.100.x)
    zone "100.168.192.in-addr.arpa" IN {type slave;file "com.zhang3";masters { 192.168.100.10; };
    };[root@zhang-2 ]# systemctl restart named
    
  4. 启动服务systemctl restart named && systemctl enable named

  5. 关闭防火墙和 SELinux(或配置允许 DNS 服务)。

总结

DNS 通过域名与 IP 的映射实现网络通信的便捷性,BIND 是搭建 DNS 服务器的主流工具。主 DNS 服务器负责维护解析记录,辅助服务器提供冗余备份,二者结合可提高 DNS 服务的可靠性。关键配置包括主配置文件、区域定义、正向 / 反向解析记录,验证时需确保客户端正确指向 DNS 服务器并通过pingnslookup测试解析效果。

http://www.dtcms.com/a/326222.html

相关文章:

  • C# 异步编程(BeginInvoke和EndInvoke)
  • 【Java后端】Quartz任务调度核心机制详解:从基础编排到动态控制
  • Qwen 3 架构深度解析:混合推理、MoE创新与开源生态的全面突破
  • CSPOJ:1561: 【提高】买木头
  • 智能小e-智能办公文档
  • OCAD for Orienteering 20Crack 定向越野:工作流程
  • Chrome插件开发【Service Worker练手小项目】
  • MySQL 运算符
  • [CSP-J 2021] 小熊的果篮
  • Oracle数据库Library cache lock阻塞问题排查
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • AI测试平台实战:深入解析自动化评分和多模型对比评测
  • 人工智能-python-机器学习-逻辑回归与K-Means算法:理论与应用
  • 机器学习之DBSCAN
  • Redis中的AOF原理详解
  • 【unity实战】在Unity中实现不规则模型的网格建造系统(附项目源码)
  • CI/CD的持续集成和持续交付
  • 变频器实习DAY26 CDN 测试中心使用方法
  • 标准IO详解(fgets、gets、fread、fwrite、fseek 等应用)
  • ubuntu24.04设置登陆背景图片
  • 【openEuler构建测试环境或部署嵌入式系统】openEuler生态扩容新路径:内网穿透工具cpolar助力多场景落地
  • 服务器使用ADB调试手机
  • Redis 数据结构及特点
  • 计算机网络(一)——TCP
  • JavaScript Const的基础使用
  • QML的中英文翻译
  • 快速搭建前端playwright工程
  • SpringAI实现Reread(Advisor)
  • DNS核心概念与BIND配置详解
  • C++11的历史和统一的初始化列表