DNS 域名解析服务
相较于由数字构成的 IP 地址,域名更容易被理解和记忆,所以我们通常更习惯通过域名的方式来访问网络中的资源
但是,网络中的计算机之间只能基于 IP 地址来相互识别对方的身份,而且要想在互联网中传输数据,也必须基于外网的 IP 地址来完成
为了降低用户访问网络资源的门槛,DNS(Domain Name System,域名系统) 技术应运 而生。这是一项用于管理和解析域名与 IP 地址对应关系的技术
简单来说,就是能够接受用户输入的域名或 IP 地址,然后自动查找与之匹配(或者说具有映射关系)的 IP 地址或域名, 即将域名解析为 IP 地址(正向解析),或将 IP 地址解析为域名(反向解析)。这样一来,我们 只需要在浏览器中输入域名就能打开想要访问的网站了。DNS 域名解析技术的正向解析也是 我们最常使用的一种工作模式
鉴于互联网中的域名和 IP 地址对应关系数据库太过庞大,DNS 域名解析服务采用了类似目录树的层次结构来记录域名与 IP 地址之间的对应关系,从而形成了一个分布式的数据库系统
如图所示
DNS 域名解析服务采用的目录树层次结构
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。目前最常见的域名后缀有.com(商业组织)、.org(非营利组 织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国国家顶级域名)等
当今世界的信息化程度越来越高,大数据、云计算、物联网、人工智能等新技术不断涌 现,全球网民的数量据说也超过了 35 亿,而且每年还在以 10%的速度迅速增长。这些因素导致互联网中的域名数量进一步激增,被访问的频率也进一步加大。假设全球网民每人每天只访问一个网站域名,而且只访问一次,也会产生 35 亿次的查询请求,如此庞大的请求数量肯定无法被某一台服务器全部处理掉。DNS 技术作为互联网基础设施中重要的一环,为了为网民提供不间断、稳定且快速的域名查询服务,保证互联网的正常运转
提供了下面三种类型 的服务器
简单来说,主服务器是用于管理域名和 IP 地址对应关系的真正服务器,从服务器帮助主服务器“打下手”,分散部署在各个国家、省市或地区,以便让用户就近查询域名,从而减轻主服务器的负载压力。缓存服务器不太常用,一般部署在企业内网的网关位置,用于加速用户的域名查询请求
DNS 域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户发起的域名查询请求时,具有递归查询和迭代查询两种方式。所谓递归查询,是指 DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。 而迭代查询则是指,DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复,直到返回查询结果
由此可见,当用户向就近的一台 DNS 服务器发起对某个域名的查询请求之后(这里以 www.linuxprobe.com 为例),其查询流程大致如图所示
向 DNS 服务器发起域名查询请求的流程
当用户向网络指定的 DNS 服务器发起一个域名请求时,通常情况下会有本地由此 DNS 服务器向上级的 DNS 服务器发送迭代查询请求;如果该 DNS 服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。其中最高级、 最权威的根 DNS 服务器总共有 13 台分布在世界各地
安装bind服务
yum install bind-chroot -y
bind 服务程序的配置并不简单,因为要想为用户提供健全的 DNS 查询服务,要在本地保存相关的域名数据库,而如果把所有域名和 IP 地址的对应关系都写入到某个配置文件中,估 计要有上千万条的参数,这样既不利于程序的执行效率,也不方便日后的修改和维护。因此 在 bind 服务程序中有下面这三个比较关键的文件
-
主配置文件 [ /etc/named.conf ] : 来定义 bind 服务程序的运行
-
区域配置文件 [ /etc/named.rfc1912.zones ] : 用来保存域名和 IP 地址对应关系的所在位置
-
数据配置文件目录 [ /var/named ] : 该目录用来保存域名和 IP 地址真实对应关系的数据配置文件
配置
在 Linux 系统中,bind 服务程序的名称为 named。首先需要在/etc 目录中找到该服务程序 的主配置文件,然后把 第 13 行和第 21 行的地址均修改为 any,分别表示服务器上的所有 IP 地址均可提供 DNS 域名解析服务,以及允许所有人对本服务器发送 DNS 查询请求
vim /etc/named.conf
12 options {
13 listen-on port 53 {
any; }; # 第 13 行
14 listen-on-v6 port 53 {
::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query {
any; }; # 第 21 行
如前所述,bind 服务程序的 **区域配置文件(/etc/named.rfc1912.zones)**用来保存域名和 IP 地址对应关系的所在位置。在这个文件中,定义了域名与 IP 地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP 地址对应关系等信息
服务类型有三种,分别为 hint(根区域)、master(主区域)、slave(辅助区域),其中常用的 master 和 slave 指的就是主服务器和从服务器
将域名解析为 IP 地址的正向解析参数和将 IP 地址解析为域名的反向解析参数分别如图 13-3 和图 13-4 所示
下面的实验中会分别修改 bind 服务程序的主配置文件、区域配置文件与数据配置文件。 如果在实验中遇到了 bind 服务程序启动失败的情况,而您认为这是由于参数写错而导致的, 则可以执行 named-checkconf 命令和 named-checkzone 命令,分别检查主配置文件与数据配置 文件中语法或参数的错误
正向解析实验
正向解析是指根据域名(主机名)查找到对应的 IP 地址。也 就是说,当用户输入了一个域名后,bind 服务程序会自动进行查找,并将匹配到的 IP 地址返 给用户。这也是最常用的 DNS 工作模式
编辑区域配置文件
vim /etc/named.rfc1912.zones
zone "wangj.com" IN {
type master;
file "wangj.com.zone";
allow-update {
none;};
};
我们可以将该文件中的原有信息全部清空,只保留自己的域名解析信息
编辑数据配置文件
我们可以从/var/named 目录中复制一份正向解析的模板文 件(named.localhost),然后把域名和 IP 地址的对应数据填写数据配置文件中并保存。在复制 时记得加上-a 参数,这可以保留原始文件的所有者、所属组、权限属性等信息,以便让 bind 服务程序顺利读取文件内容
cd /var/named/
ls -al named.localhost
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
cp -a named.localhost wangj.com.zone
编辑数据配置文件。在保存并退出后文件后记得重启 named 服务程序,让新的解析数据生效
vim wangj.com.zone
$TTL 1D #生存周期为 1 天
@ IN SOA wangj.com. root.wangj.com. (
0;serial #更新序列号
1D;refresh #更新时间
1H;retry #重试延时
1W;expire #失效时间
3H);minimum # 无效解析记录的缓存时间
NS ns.wangj.com. # 域名服务器记录
ns IN A 192.168.25.143 # 地址记录(ns.wangj.com.)
IN MX 143 mail.wangj.com. # 邮箱交换记录
mail IN A 192.168.25.143 # 地址记录(mail.wangj.com.)
www IN A 192.168.25.143 # 地址记录(www.wangj.com.)
bbs IN A 192.168.25.20 # 地址记录(bbs.wangj.com.)
检验解析结果。为了检验解析结果,一定要先把 Linux 系统网卡中的 DNS 地址 参数修改成本机 IP 地址,这样就可以使用由本机提供的 DNS 查询服务了。nslookup 命令用 于检测能否从 DNS 服务器中查询到域名与 IP 地址的解析记录,进而更准确地检验 DNS 服务 器是否已经能够为用户提供服务
systemctl restart network
nslookup
> www.wangj.com
Server: 192.168.25.2
Address: 192.168.25.2
Non-authoritative answer:
Name: www.wangj.com
Address: 39.107.68.91