一、DNS 概述与核心作用

1.1 DNS 的角色
DNS (Domain Name System) 是互联网的“导航员”或“114查号台”。它的核心作用是实现域名IP 地址 之间的相互映射。

  • 正向解析:根据域名查找对应的 IP 地址(最常用)。
  • 反向解析:根据 IP 地址查找对应的域名(用于特殊用途,如邮件服务器反垃圾验证)。

1.2 端口与协议

  • 默认端口:53
  • 使用协议:
    • UDP:用于常规的域名解析查询。速度快,开销小。
    • TCP:用于区域传送(主从服务器同步数据)。因为TCP更可靠,能保证大数据量的准确传输。

1.3 域名结构:FQDN

  • FQDN (Fully Qualified Domain Name):全限定域名,完整标识主机在域名树中的位置。
  • 格式:主机名.子域.二级域.顶级域.根域. (根域. 通常省略)
  • 示例:www.sina.com.cn. -> http://www.sina.com.cn./
    请添加图片描述

二、DNS 查询原理

2.1 两种查询方式

  1. 递归查询 (Recursive Query)

    • 客户机与本地DNS服务器之间的查询方式。
    • 客户机发出请求后,只需等待最终结果(成功或失败),中间的所有查询过程由DNS服务器代理完成。
    • 一句话:“你办事,我放心,我只要结果”
  2. 迭代查询 (Iterative Query)

    • 本地DNS服务器与其它各级DNS服务器之间的查询方式。
    • 上级服务器不会替下级服务器去查询,而是返回一个最佳查询点(另一台DNS服务器的地址),让请求者自己再去问。
    • 一句话:“这个我不直接管,你去问XX办公室吧”

2.2 完整的正向解析流程
一个完整的查询结合了递归和迭代两种方式,其过程如下图所示:
请添加图片描述
流程步骤详解:

  1. 客户端检查本地缓存和 hosts 文件。
  2. 客户端向本地DNS服务器发起递归查询
  3. 本地DNS服务器检查自身缓存,若无记录,则向根DNS服务器发起迭代查询
  4. 根DNS服务器返回 .com 顶级域服务器的地址。
  5. 本地DNS服务器向 .com 顶级域服务器发起迭代查询。
  6. 顶级域服务器返回 google.com 权威服务器的地址。
  7. 本地DNS服务器向 google.com 的权威服务器发起迭代查询。
  8. 权威服务器返回 www.google.com 对应的IP地址。
  9. 本地DNS服务器将结果返回给客户端,并缓存该记录。

缓存清理命令:

  • Windows: ipconfig /displaydns (查看缓存), ipconfig /flushdns (清理缓存)
  • Linux: 需安装 nscd 服务,使用 nscd -i hosts 清理。

三、DNS 服务器架构与类型

3.1 分布式层次结构
全球DNS系统是一个庞大的分布式数据库,由众多服务器共同承担解析任务。

服务器类型 职责 举例
根DNS服务器 管理根域,返回顶级域服务器的地址 全球13个根服务器系统集群(编号A-M)
顶级域DNS服务器 管理特定顶级域,返回权威服务器地址 .com, .cn, .net 服务器
权威DNS服务器 管理特定域名(如google.com),返回其下主机的最终IP ns1.google.com

重要提示:所谓的“全球13台根服务器”指的是13个逻辑根服务器系统,每个系统都通过任播技术在全球部署了上百台物理服务器副本,以提高 resiliency 和访问速度。中国也有多个根镜像服务器。

3.2 DNS服务器软件(BIND)

  • BIND (Berkeley Internet Name Domain):是最广泛使用的DNS服务软件。
  • 软件包组成:
    • bind:主程序包
    • bind-utils:提供 nslookup, dig 等测试工具
    • bind-libs:提供库文件
    • bind-chroot:提供一个伪根目录,将DNS服务锁定在 /var/named/chroot/ 中,增强安全性。

3.3 DNS服务器系统类型
根据职能,一台物理DNS服务器可以被配置为以下一种或多种类型:

类型 作用 特点
主域名服务器 维护特定区域的权威数据,数据可修改 type master;
从域名服务器 从主服务器同步区域数据,提供冗余备份和负载均衡 type slave; 需指定 masters { };
缓存域名服务器 不管理任何区域,仅缓存查询结果,加速访问 必须指定根域或转发器
转发域名服务器 将所有非本地查询请求转发给指定的其他DNS服务器 配置 forwarders { };

四、DNS 部署实战

4.1 基础配置:主服务器与正向/反向解析

核心配置文件:

  1. 主配置文件/etc/named.conf - 定义全局设置,如监听地址、允许查询的网段。
  2. 区域配置文件/etc/named.rfc1912.zones - 定义本服务器负责管理的区域(域名)及其属性(如区域数据文件名、类型)。
  3. 区域数据文件/var/named/xxx.zone - 存储具体的域名和IP的映射记录,这是最核心的数据库文件。

记录类型详解:

  • SOA:起始授权记录,定义区域全局信息(主服务器、管理员邮箱、序列号、同步参数)。
  • NS:域名服务器记录,指明该区域由哪台DNS服务器负责解析。
  • A:正向解析记录,将域名指向一个IPv4地址。
  • AAAA:将域名指向一个IPv6地址。
  • CNAME:别名记录,将一个域名指向另一个域名。
  • MX:邮件交换记录,定义邮件服务器的域名和优先级。
  • PTR:反向解析记录,将IP地址指向域名。

配置流程:

  1. 安装BIND:yum install bind bind-chroot -y
  2. 编辑主配置文件 named.conf,设置 listen-onallow-query
  3. 在区域配置文件 named.rfc1912.zones 中定义正向和反向区域。
修改主要配置文件 
vim /etc/named.conf
options {
listen-on port 53 { 192.168.10.23; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; }; #ipv6行如不使用可以注释掉或者删除
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 { 192.168.10.0/24; 192.168.100.0/24; };● 允许使用本DNS解析服务的网段,也可用any代表所有
}


zone "." IN {#正向解析“."根区域
type hint;#类型为根区域
file "named.ca";#区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};


include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置


修改


(3)修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones  
#文件里有模版,可复制粘贴后修改
zone "benet.com." IN        {●正向解析"benet.com"区域
type master;#类型为主区域
file "benet.com.zone.";    ●指定区域数据文件为benet.com.zone
allow-update { none; } ;
};


配置正向区域数据文件
cd /var/ named/
cp -p named.localhost benet.com.zone               #保留源文件的权限和属主的属性复制
vim /var/named/benet.com.zone
$TTL 1D                                            #有效解析记录的生存周期
@   in SOA benet.com. admin.benet.com. (   #“@"符号表示当前的DNS区域名
                     0   ; serial              #更新序列号,可以是10位以内的整数
                    1D   ; refresh             #刷新时间,重新下载地址数据的间隔
                    1H   ; retry               #重试延时,下载失败后的重试间隔
                    1W   ; expire              #失效时间,超过该时间仍无法下载则放弃#
					3H)  ; minimum             #无效解析记录的生存周期,
        NS     benet.com                     #记录当前区域的DNS服务器的名称
        A     192.168.10.23                  #记录主机IP地址
IN   MX 10    mail.benet.com            #MX为邮件交换记录,数字越大优先级越低
www  IN A     192.168.10.23              #记录正向解析www.benet.com对应的IP
mail IN A     192.168.10.11              #MX为邮件交换记录,数字越大优先级低 
ftp  IN CNAME  www                       #CNAME使用别名,ftp 是www的别名
*    IN A   192.168.10.100               #泛域名解析,“*"代表任意主机名

#“@”这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
# "benet.com. "此为完全合格域名(FQDN) ,后面有个“."不能漏掉
#“admin.benet.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替
#IN 表示internet



(5)启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a

#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf

(6)在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf
#修改完后立即生效
nameserver 192.168.10.23
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改完后需要重启网卡
DNS1=192.168.10.23
systemctl restart network

(7)测试DNS解析
[root@benet23 ~]# systemctl restart network
[root@benet23 ~]# host www.benet.com
www.benet.com has address 192.168.10.23 
[root@benet23 ~]# nslookup www.benet.com
Server:         192.168.10.23
Address:        192.168.10.23#53

Name:   www.benet.com
Address: 192.168.10.23

[root@benet23 ~]# nslookup mail.benet.com
Server:         192.168.10.23
Address:        192.168.10.23#53

Name:   mail.benet.com
Address: 192.168.10.11

[root@benet23 ~]# nslookup zhangsan.benet.com
Server:         192.168.10.23
Address:        192.168.10.23#53

Name:   zhangsan.benet.com
Address: 192.168.10.100

五、 域名备案

域名备案的过程一企业备案(可以在阿里云 做个人备案)
1、备案前的准备:注册并且实名认证阿里云/腾讯云账号, 注册实名认证域名 ,准备好服务器(公网IP)
2、提交备案申请:登录阿里云/腾讯云ICP代备案管理系统(填写主办者信息、网站信息等),上传相关资料,通过阿里云·进行实际人核验·并且确认信息无误后提交初审
3、审核阶段:阿里云审核一般在1天,初审通过后,工信部发送短信验证码,需要在24小时完成核验之后进入管局审核最长20天~30天 快的10~15天
4、备案成功:收到短信和邮件通知,获取ICP备案号,需要在网站首页底部悬挂备案号并且生成链接指向工信部网站
公安联网部门:ICP备案成功后,在开通网站之日起30天办理公安联网备案

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐