计算机网络入门教程 第四章 DNS
1.1 DNS 的角色DNS (Domain Name System) 是互联网的“导航员”或“114查号台”。它的核心作用是实现域名与IP 地址之间的相互映射。正向解析:根据域名查找对应的 IP 地址(最常用)。反向解析:根据 IP 地址查找对应的域名(用于特殊用途,如邮件服务器反垃圾验证)。1.2 端口与协议53使用协议:UDP:用于常规的域名解析查询。速度快,开销小。TCP:用于区域传送(主
一、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 两种查询方式
-
递归查询 (Recursive Query)
- 客户机与本地DNS服务器之间的查询方式。
- 客户机发出请求后,只需等待最终结果(成功或失败),中间的所有查询过程由DNS服务器代理完成。
- 一句话:“你办事,我放心,我只要结果”。
-
迭代查询 (Iterative Query)
- 本地DNS服务器与其它各级DNS服务器之间的查询方式。
- 上级服务器不会替下级服务器去查询,而是返回一个最佳查询点(另一台DNS服务器的地址),让请求者自己再去问。
- 一句话:“这个我不直接管,你去问XX办公室吧”。
2.2 完整的正向解析流程
一个完整的查询结合了递归和迭代两种方式,其过程如下图所示:
流程步骤详解:
- 客户端检查本地缓存和
hosts文件。 - 客户端向本地DNS服务器发起递归查询。
- 本地DNS服务器检查自身缓存,若无记录,则向根DNS服务器发起迭代查询。
- 根DNS服务器返回
.com顶级域服务器的地址。 - 本地DNS服务器向
.com顶级域服务器发起迭代查询。 - 顶级域服务器返回
google.com权威服务器的地址。 - 本地DNS服务器向
google.com的权威服务器发起迭代查询。 - 权威服务器返回
www.google.com对应的IP地址。 - 本地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 基础配置:主服务器与正向/反向解析
核心配置文件:
- 主配置文件:
/etc/named.conf- 定义全局设置,如监听地址、允许查询的网段。 - 区域配置文件:
/etc/named.rfc1912.zones- 定义本服务器负责管理的区域(域名)及其属性(如区域数据文件名、类型)。 - 区域数据文件:
/var/named/xxx.zone- 存储具体的域名和IP的映射记录,这是最核心的数据库文件。
记录类型详解:
- SOA:起始授权记录,定义区域全局信息(主服务器、管理员邮箱、序列号、同步参数)。
- NS:域名服务器记录,指明该区域由哪台DNS服务器负责解析。
- A:正向解析记录,将域名指向一个IPv4地址。
- AAAA:将域名指向一个IPv6地址。
- CNAME:别名记录,将一个域名指向另一个域名。
- MX:邮件交换记录,定义邮件服务器的域名和优先级。
- PTR:反向解析记录,将IP地址指向域名。
配置流程:
- 安装BIND:
yum install bind bind-chroot -y - 编辑主配置文件
named.conf,设置listen-on和allow-query。 - 在区域配置文件
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天办理公安联网备案
更多推荐

所有评论(0)