那么多

00:00/00:00

章节简述: 

本章节将让您理解DNS服务程序的原理,学习正向解析反向解析实验,掌握DNS主服务器从服务器缓存服务器的部署方法。

够熟练配置区域信息文件区域数据文件,以及通过使用分离解析技术让不同来源的用户得到更合适的解析结果。

DNS服务作为互联网的基础设施,我们还可以配置BIND服务程序支持TSIG安全加密传输机制,从而保障解析数据不被嗅探监听。

 

13.1 了解域名解析服务

一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。

DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析反向解析

正向解析:根据主机名(域名)查找对应的IP地址。

反向解析:根据IP地址查找对应的主机名(域名)。

DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统:[DNS结构模型]

DNS结构模型

而单靠几台DNS服务器肯定不能满足全球如此多用户的需求,所以从工作形式上又分主服务器从服务器缓存服务器

主服务器:在特定区域内具有唯一性、负责维护该区域内的域名与IP地址对应关系。

从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况。

缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址对应关系,提高重复查询时的效率。

这里还需要简单了解下,DNS查询时还会分为递归查询迭代查询

递归查询:用于客户机向DNS服务器查询。

迭代查询:用于DNS服务器向其它DNS服务器查询。

互联网DNS访问模型——采用分布式数据结构保存海量区域数据信息,用户从互联网中查询过程大致流程为:DNS查询流程图

DNS查询流程图
出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

13.2 安装Bind服务程序

伯克利互联网域名服务BIND(Berkeley Internet Name Daemon)是一款全球互联网使用最广泛的能够提供安全可靠、快捷高效的域名解析服务程序。并且Bind服务程序还支持chroot(change root)监牢安全机制,chroot机制会限制bind服务程序仅能对自身配置文件进行操作,从而保证了整个服务器的安全,让既然如此,那么我们也就选择安装bind-chroot吧:

[root@linuxprobe ~]# yum install bind-chroot
………………省略部分安装过程………………
bind-chroot x86_64 32:9.9.4-14.el7 rhel7 81 k
Installing for dependencies:
bind x86_64 32:9.9.4-14.el7 rhel7 1.8 M
………………省略部分安装过程………………
Complete!

域名解析服务Bind的程序名称叫做named,服务程序的配置文件如下:

主程序 /usr/sbin/named
主配置文件 /etc/named.conf
区域配置文件 /etc/named.rfc1912.zones

那么先来分析下主配置文件吧(有两处需要修改,请跟着一起操作.):

[root@linuxprobe ~]# vim /etc/named.conf

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.

options {
//将下行中的127.0.0.1修改为any,代表允许监听任何IP地址。
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };

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";

//将下行中的localhost修改为any,代表允许任何主机查询。
allow-query { localhost; };

recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";

pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

//此文件内定义了全球13台根DNS服务器的IP地址
zone "." IN {
type hint;
file "named.ca";
};

//此文件保存着正向与反向解析的区域信息,非常的重要。
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

当用户访问一个域名时(不考虑hosts文件等因素),正常情况会向指定的DNS主机发送递归查询请求,如果该DNS主机中没有该域名的解析信息那么会不断向上级DNS主机进行迭代查询,其中最高等级(权威)的根DNS主机有13台,分别为:

根DNS服务器IP地址文件:/var/named/named.ca

名称 管理单位 地理位置 IP地址
A INTERNIC.NET 美国-弗吉尼亚州 198.41.0.4
B 美国信息科学研究所 美国-加利弗尼亚州 128.9.0.107
C PSINet公司 美国-弗吉尼亚州 192.33.4.12
D 马里兰大学 美国-马里兰州 128.8.10.90
E 美国航空航天管理局 美国加利弗尼亚州 192.203.230.10
F 因特网软件联盟 美国加利弗尼亚州 192.5.5.241
G 美国国防部网络信息中心 美国弗吉尼亚州 192.112.36.4
H 美国陆军研究所 美国-马里兰州 128.63.2.53
I Autonomica公司 瑞典-斯德哥尔摩 192.36.148.17
J VeriSign公司 美国-弗吉尼亚州 192.58.128.30
K RIPE NCC 英国-伦敦 193.0.14.129
L IANA 美国-弗吉尼亚州 199.7.83.42
M WIDE Project 日本-东京 202.12.27.33

13.3 DNS服务的解析实验

既然要开始搭建使用DNS服务程序啦,那么请将系统的DNS地址修改为本机,这样才能看到实验效果哦。

将DNS地址修改为本机

为了避免经常修改主配置文件named.conf而导致DNS服务出错,所以规则的区域信息保存在了"/etc/named.rfc1912.zones"文件中,这个文件用于定义域名与IP地址解析规则保存的文件位置以及区域服务类型等内容,一定要谨慎修改。

正向解析区域文件格式:

正向解析区域文件格式

服务类型可以有三种:hint(根区域)master(主区域)slave(辅助区域)

反向解析区域文件格式:

反向解析区域文件格式

zone区域中IP信息必需反写(如上图演示),并且后面要写上"in-addr.arpa"。

接下来的实验中会分别对主配置文件区域信息文件区域数据文件做修改,当怀疑因配置参数而出错时可执行named-checkconfnamed-checkzone命令来分别用于检查主配置与区域数据文件中语法或参数的错误。

13.3.1 正向解析实验

第1步:配置区域数据信息。

正向解析的作用是根据主机名(域名)查找到对应的IP地址,区域文件中已有一些默认信息,可不必理会,直接在下面追加即可:

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};

第2步:配置解析数据信息:
我们可以直接复制正向解析模板文件:"/var/named/named.localhost",填写信息后即可直接使用。
切换工作目录到bind(named)数据目录:

[root@linuxprobe ~]# cd /var/named/

查看区域数据文件的权限:

[root@linuxprobe named]# ls -al named.localhost
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost

执行cp命令时加入-a,代表连通复制原来文件的属性、所有者、组等信息:

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone

编辑linuxprobe.com域名的区域数据文件:

[root@linuxprobe named]# vim linuxprobe.com.zone

重启named服务让配置文件立即生效:

[root@linuxprobe named]# systemctl restart named
$TTL 1D #生存周期为1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)
0;serial #更新序列号
1D;refresh #更新时间
1H;retry #重试延时
1W;expire #失效时间
3H;minimum #无效解析记录的缓存时间
NS ns.linuxprobe.com. #域名服务器记录
ns IN A 192.168.10.10 #地址记录(ns.linuxprobe.com.)
IN MX 10 mail.linuxprobe.com. #邮箱交换记录
mail IN A 192.168.10.10 #地址记录(mail.linuxprobe.com.)
www IN A 192.168.10.10 #地址记录(www.linuxprobe.com.)
bbs IN A 192.168.10.20 #地址记录(bbs.linuxprobe.com.)


第3步:检验解析结果。
nslookup命令用于检测能否从网络DNS服务器中查询到域名与IP地址的解析记录,检测named服务的解析能否成功。
此为查询DNS服务器的信息:

[root@linuxprobe ~]# nslookup
> www.linuxprobe.com
Server: 127.0.0.1
Address: 127.0.0.1#53

顺利的将域名的对应IP地址解析出来了:

Name: www.linuxprobe.com
Address: 192.168.10.10
> bbs.linuxprobe.com
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: bbs.linuxprobe.com
Address: 192.168.10.20
> mail.linuxprobe.com
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: mail.linuxprobe.com
Address: 192.168.10.10
> ns.linuxprobe.com
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: ns.linuxprobe.com
Address: 192.168.10.10

 

13.3.2 反向解析实验

反向解析的作用是根据IP地址查找到对应的主机名(域名),在区域文件(named.rfc1912.zones)中默认已存在一些注释内容与区域信息,可不需要删除上面实验及默认区域信息,直接在下面追加即可。
第1步:配置区域数据信息。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
};

第2步:配置解析数据信息。
反向解析数据文件模版为:"/var/named/named.loopback",我们可复制并填写信息后即可直接使用:

[root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa

编辑192.168.10.0/24网段的数据文件:

[root@linuxprobe named]# vim 192.168.10.arpa
$TTL 1D
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
0;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
NS ns.linuxprobe.com.
ns A 192.168.10.10
10 PTR ns.linuxprobe.com. #PTR为指针记录,仅用于反向解析中。
10 PTR mail.linuxprobe.com.
10 PTR www.linuxprobe.com.
20 PTR bbs.linuxprobe.com.


反向区域数据文件不需要写主机网络部分

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable named“。

第3步:检验解析结果。

重启named服务程序,让配置文件立即生效:

[root@linuxprobe ~]# systemctl restart named

执行nslookup命令检查反向解析结果:

[root@linuxprobe ~]# nslookup
> 192.168.10.10
Server: 127.0.0.1
Address: 127.0.0.1#53
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.

> 192.168.10.20
Server: 127.0.0.1
Address: 127.0.0.1#53
20.10.168.192.in-addr.arpa name = bbs.linuxprobe.com.

 

13.4 部署从服务器

真实网络环境中一台主服务器往往不能满足所有用户的需求,"从服务器"可以从主服务器上抓取指定的区域数据文件,起到备份解析记录与负载均衡的作用,配置过程大致流程:

1:在主服务器的区域信息文件中允许该从服务器的更新请求,并重新加载配置文件。

2:在从服务器中填写主服务器地址要抓取的区域信息,并重新加载配置文件。

3:在从服务器中查看/var/named/slaves目录或使用nslookup验证试验结果。

试验环境中主机名称与IP地址(两台)

主机名称 操作系统 IP地址
主服务器 红帽RHEL7操作系统 192.168.10.10
从服务器 红帽RHEL7操作系统 192.168.10.20

第1步:修改主服务器中区域信息文件:

allow-update { 允许更新区域信息的主机地址;};

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update { 192.168.10.20; };
};

zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-update { 192.168.10.20; };
};

重启named服务程序,让配置文件立即生效:

[root@linuxprobe ~]# systemctl restart named

第2步:修改从服务器中的区域信息文件。

必须将主配置文件"/etc/named.conf"中的监听地址允许查询地址修改为any,另外在区域文件(named.rfc1912.zones)中默认已存在一些注释内容与区域信息,可不必理会,只需将新的区域信息写到后面即可:

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
//请注意服务类型必需是slave,而不能是master。
type slave;
//指定主DNS服务器的IP地址。
masters { 192.168.10.10; };
//此为缓存到区域文件后保存的位置和名称。
file "slaves/linuxprobe.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/192.168.10.arpa";
};

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable named“。

第3步:验证试验成果(请确认DNS地址为192.168.10.20)。
重启named服务程序,让配置文件立即生效:

[root@localhost named]# systemctl restart named

当前已经在named服务的数据文件目录了:

[root@localhost named]# pwd
/var/named

果然在slaves目录中出现了主服务器中的区域文件:

[root@localhost named]# ls slaves/
192.168.10.arpa linuxprobe.com.zone

使用nslookup命令看看解析能否成功吧:

[root@localhost named]# nslookup
> www.linuxprobe.com
Server: 192.168.10.20
Address: 192.168.10.20#53
Name: www.linuxprobe.com
Address: 192.168.10.10

> 192.168.10.10
Server: 192.168.10.20
Address: 192.168.10.20#53
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.

 

13.5 安全的加密传输

DNS服务是互联网的基础建设设施,几乎所有的网络应用都依赖于DNS服务做出的查询结果,如果互联网中的DNS服务不能正常提供解析服务,那么即使Web或Email服务都运行正常,也无法让用户顺利使用到它们了。

13台根DNS服务器以及互联网中的DNS服务器绝大多数(超过95%)是基于BIND服务程序搭建的,BIND服务程序为了能够安全的提供解析服务而支持了TSIG(TSIGRFC 2845)加密机制,TSIG主要是利用密码编码方式保护区域信息的传送(Zone Transfer),也就是说保证了DNS服务器之间传送区域信息的安全

TSIG仅有一组密码,而不区分公/私钥,所以一般只会分配给可信任的从服务器。

本实验基于上面的主服务器从服务器的配置,请读者自行准备DNS实验环境,IP地址要求如下:

主机名称 操作系统 IP地址
主服务器 红帽RHEL7操作系统 192.168.10.10
从服务器 红帽RHEL7操作系统 192.168.10.20

书接上章,重新启动named服务后可以看到slaves目录中出现区域数据文件。

[root@linuxprobe ~]# systemctl restart named
[root@linuxprobe ~]# ls -al /var/named/slaves/
total 12
drwxrwx---. 2 named named 54 Jun 7 16:02 .
drwxr-x---. 6 root named 4096 Jun 7 15:58 ..
-rw-r--r--. 1 named named 432 Jun 7 16:02 192.168.10.arpa
-rw-r--r--. 1 named named 439 Jun 7 16:02 linuxprobe.com.zone

第1步:在主服务器中生成密钥

dnssec-keygen命令用于生成安全的DNS服务密钥,格式为:"dnssec-keygen [参数] "。

参数 作用
-a 指定加密算法(包括:RSAMD5 (RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等)
-b 密钥长度(HMAC-MD5长度在1-512位之间)
-n 密钥的类型(HOST为与主机相关的)

密钥参数:128位HMAC-MD5算法,主机名称叫做master-slave。

[root@linuxprobe ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+46845

查看下生成出的密钥文件(依次为公钥与密钥):

[root@linuxprobe ~]# ls -al Kmaster-slave.+157+46845.*
-rw-------. 1 root root 56 Jun 7 16:06 Kmaster-slave.+157+46845.key
-rw-------. 1 root root 165 Jun 7 16:06 Kmaster-slave.+157+46845.private

查看私钥内容(把Key的值记录下来):

[root@linuxprobe ~]# cat Kmaster-slave.+157+46845.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: 1XEEL3tG5DNLOw+1WHfE3Q==
Bits: AAA=
Created: 20150607080621
Publish: 20150607080621
Activate: 20150607080621

第2步:在主服务器上创建密钥验证文件:

[root@linuxprobe ~]# vim /var/named/chroot/etc/transfer.key
//依次为密钥名称密钥加密类型以及私钥的Key值。
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q==";
};

设置transfer.key文件的所有者和组:

[root@linuxprobe ~]# chown root.named /var/named/chroot/etc/transfer.key

为了更加的安全,设置权限为640(rw-r-----):

[root@linuxprobe ~]# chmod 640 /var/named/chroot/etc/transfer.key

将密钥文件做硬链接到/etc目录中:

[root@linuxprobe ~]# ln  /var/named/chroot/etc/transfer.key /etc/transfer.key

第3步:开启主服务器的密钥验证功能。
开启密钥验证功能(修改如下图):

[root@linuxprobe ~]# vim /etc/named.conf

开启dns的密钥验证功能

第4步:验证试验成果(无法获得区域数据信息了)。

将从服务器之前获取到的区域数据文件都删除掉:

[root@linuxprobe ~]# rm -rf /var/named/slaves/*

重新启动named服务程序:

[root@linuxprobe ~]# systemctl restart named

果然此时已经无法获取到区域数据文件了:

[root@linuxprobe ~]# ls -al /var/named/slaves/
total 4
drwxrwx---. 2 named named 6 Jun 7 17:17 .
drwxr-x---. 6 root named 4096 Jun 7 15:58 ..

第5步:配置从服务器支持密钥验证。

先将密钥文件从主服务器中传送到从服务器

[root@linuxprobe ~]# scp /var/named/chroot/etc/transfer.key root@192.168.10.20:/var/named/chroot/etc
The authenticity of host '192.168.10.20 (192.168.10.20)' can''t be established.
ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts.
root@192.168.10.20's password:此处输入对方主机的root用户密码。
transfer.key 100% 81 0.1KB/s 00:00

进入到从服务器的named服务的数据目录中:

[root@linuxprobe ~]# cd /var/named/chroot/etc

查看下刚刚transfer.key有没有成功传送过来:

[root@localhost etc]# ls -al transfer.key
-rw-r-----. 1 root root 81 Jun 7 17:20 transfer.key

修改文件的所有者和所有组:

[root@localhost etc]# chown root:named transfer.key

创建文件链接:

[root@localhost etc]# ln transfer.key /etc/transfer.key

编辑主配置文件设置支持密钥验证(有两处配置,请看下图)。
[root@localhost etc]# vim /etc/named.conf

在主配置文件中加入include语句

请先不要着急退出!!!请在大约43行部分追加以下内容:

server 主服务器IP地址 {
keys {密钥名称;};
};

在主配置文件中追加密钥信息

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable named“。

 

第6步:验证试验成果(成功获取区域数据信息)。
重新启动从服务器的named服务程序:

[root@linuxprobe ~]# systemctl restart named

果然又在slaves目录中看到了区域数据文件了:

[root@linuxprobe ~]# ls -al /var/named/slaves/
total 12
drwxrwx---. 2 named named 54 Jun 7 17:29 .
drwxr-x---. 6 root named 4096 Jun 7 15:58 ..
-rw-r--r--. 1 named named 432 Jun 7 17:29 192.168.10.arpa
-rw-r--r--. 1 named named 439 Jun 7 17:29 linuxprobe.com.zone

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

13.6 部署缓存服务器

缓存服务器(Caching DNS Server)是一种不负责域名数据维护,也不负责域名解析的DNS服务类型,缓存服务器是将用户经常使用到得域名与IP地址解析记录保存在主机本地中,提升下次解析的效率,所以一般用于对高品质上网有需求的内网之中,配置流程为:

第1步:配置系统的双网卡参数。
第2步:在主配置文件中添加缓存转发参数。
第3步:重启DNS服务后验证成果。

试验环境中主机名称与IP地址(两台)

主机名称 操作系统 IP地址
缓存服务器 红帽RHEL7操作系统 网卡(外网):根据实际情况DHCP或手工指定IP地址与网关等信息。
网卡(内网):192.168.10.10
客户端 红帽RHEL7操作系统 192.168.10.20

第1步:配置系统的双网卡参数。

如前面介绍的缓存服务器一般用于企业内网中,起到减少内网用户查询DNS的消耗,那么为了更加的贴近实际网络环境、实现外网查询功能,需要为缓存服务器中再添加一块网卡。

请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。

  • 第1步:点击“编辑虚拟机设置”。

使用nmtui工具将第1块网卡的IP地址方法修改为dhcp模式(请读者根据实际上网环境来设置):

配置桥接网卡的信息

新添加的网卡(第2块)在nmtui工具列表中还没有显示,需要聪明的读者们动手添加下:

请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。

  • 第1步:添加一块新的网卡设备。

当各位读者配置成功后网卡应该都会显示出正确的IP地址啦:

查看网卡信息
第2步:在主配置文件中添加缓存转发参数。

缓存服务器的配置步骤非常简单,首先安装bind服务(yum install bind-chroot -y),然后编辑主配置文件:

[root@linuxprobe ~]# vim /etc/named.conf

监听IP端口允许查询主机修改为any,再添加一行"forwarders { 上游DNS服务器地址; };"

上游DNS服务器地址指的是从何处取得区域数据文件,主要对比查询速度稳定性安全性等因素。

本次使用北京市DNS服务器:"210.73.64.1",请读者选择前先Ping下能否通信,否则可能会导致解析失败!!

修改DNS主配置文件

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable named“。

第3步:重启DNS服务后验证成果。
将客户端的网卡DNS地址指向缓存服务器(192.168.10.10),配置网卡应该已经很熟练,很简单了吧:

配置客户端的网卡信息

修改完主配置文件后请将named服务重启:

[root@linuxprobe ~]# systemctl restart named

使用nslookup命令验证实验成果(如果解析不成功,请读者多留意下是不是上游DNS选择的问题):

[root@linuxprobe ~]# nslookup
> www.linuxprobe.com
Server: 192.168.10.10
Address: 192.168.10.10#53

Non-authoritative answer:
Name: www.linuxprobe.com
Address: 113.207.76.73
Name: www.linuxprobe.com
Address: 116.211.121.154

再来尝试下反向查询吧(此为google的免费DNS服务器地址):

> 8.8.8.8
Server: 192.168.10.10
Address: 192.168.10.10#53

Non-authoritative answer:
8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com.

Authoritative answers can be found from:
in-addr.arpa nameserver = f.in-addr-servers.arpa.
in-addr.arpa nameserver = b.in-addr-servers.arpa.
in-addr.arpa nameserver = a.in-addr-servers.arpa.
in-addr.arpa nameserver = e.in-addr-servers.arpa.
in-addr.arpa nameserver = d.in-addr-servers.arpa.
in-addr.arpa nameserver = c.in-addr-servers.arpa.
a.in-addr-servers.arpa internet address = 199.212.0.73
a.in-addr-servers.arpa has AAAA address 2001:500:13::73
b.in-addr-servers.arpa internet address = 199.253.183.183
b.in-addr-servers.arpa has AAAA address 2001:500:87::87
c.in-addr-servers.arpa internet address = 196.216.169.10
c.in-addr-servers.arpa has AAAA address 2001:43f8:110::10
d.in-addr-servers.arpa internet address = 200.10.60.53
d.in-addr-servers.arpa has AAAA address 2001:13c7:7010::53
e.in-addr-servers.arpa internet address = 203.119.86.101
e.in-addr-servers.arpa has AAAA address 2001:dd8:6::101
f.in-addr-servers.arpa internet address = 193.0.9.1
f.in-addr-servers.arpa has AAAA address 2001:67c:e0::1

 

13.7 分离解析技术

假如喜欢《Linux就该这么学》的海外留学生越来越多,但网站服务器架设在北京市,那么留学生访问起来速度一定很慢,而将服务器架设在美国,那又会让国内用户访问变得很麻烦,于是我们便可以采用分离解析的办法,虽然访问的是相同的网址,但国内用户访问北京服务器,而留学生则直接访问美国服务器。

分离解析:当来自于不同IP地址的用户查询相同域名时会为其提供不同的解析结果,大致流程为:

第1步:在区域信息文件中填写不同的Zone区域信息。
第2步:建立独立的区域数据文件。
第3步:重新启动named服务并验证结果。

那么为了解决《Linux就该这么学》访问速度的问题,站务管理员已经在美国架设好了网站服务器,请您部署DNS服务器并实现分离解析功能,北京用户与美国用户访问相同域名时解析出不同的IP地址,拓扑如下:DNS分离解析拓扑

主机名称 操作系统 IP地址
DNS服务器 红帽RHEL7操作系统 北京网络:122.71.115.10
美国网络:106.185.25.10
北京用户 Windows7 122.71.115.1
海外用户 Windows7 106.185.25.1

请读者先动手安装下BIND服务("yum install bind-chroot -y"),并将其加入到开机启动项中。

第1步:在区域信息文件中填写不同的Zone区域信息。
修改主配置文件"/etc/named.conf",将监听端口允许查询主机修改为any并将约在51行的根域信息删除掉:

zone "." IN {
type hint;
file "name.ca";
};

编辑区域信息文件"/etc/named.rfc1912.zones",清空该文件所有默认的数据并添加以下内容:

//ACL定义了china与american分别对应的IP地址,以下就不需要写IP地址了。
acl "china" { 122.71.115.0/24; };
acl "american" { 106.185.25.0/24;};
//匹配所有china内的IP地址,对应的域名数据文件为linuxprobe.com.china。
view "china"{
match-clients { "china"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.china";
};
};
//匹配所有american内的IP地址,对应的域名数据文件为linuxprobe.com.american。
view "american" {
match-clients { "american"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.american";
};
};

这样来自不同IP地址的用户访问linuxprobe.com域时就会访问不同的区域数据文件,从而达到了分离解析的作用。
第2步:建立独立的区域数据文件。
切换工作目录到named服务目录中:

[root@linuxprobe ~]# cd /var/named

分别复制出两份域名区域文件数据的模板:

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american

编辑对中国用户有效的域名区域数据文件vim linuxprobe.com.china

$TTL 1D #生存周期为1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)
0;serial #更新序列号
1D;refresh #更新时间
1H;retry #重试延时
1W;expire #失效时间
3H;minimum #无效解析记录的缓存时间
NS ns.linuxprobe.com. #域名服务器记录
ns IN A 122.71.115.10 #地址记录(ns.linuxprobe.com.)
www IN A 122.71.115.15 #地址记录(www.linuxprobe.com.)


编辑对美国用户有效的域名区域数据文件vim linuxprobe.com.american

$TTL 1D #生存周期为1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)
0;serial #更新序列号
1D;refresh #更新时间
1H;retry #重试延时
1W;expire #失效时间
3H;minimum #无效解析记录的缓存时间
NS ns.linuxprobe.com. #域名服务器记录
ns IN A 106.185.25.10 #地址记录(ns.linuxprobe.com.)
www IN A 106.185.25.15 #地址记录(www.linuxprobe.com.)


第3步:重新启动named服务并验证结果。
开启两台windows7系统的虚拟机,分别模拟中国与美国IP地址后执行"nslookup www.linuxprobe.com",看看效果吧:

模拟美国用户的域名解析
出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)

1:DNS服务有三种服务形式,分别为?

答案:主服务器、从服务器与缓存服务器。

2:DNS服务器之间传输区域数据文件时,使用的是递归查询还是迭代查询?

答案:迭代查询。

3:主服务器可以设置允许查询的主机名或限制仅某一部分主机可以查询?

答案:是的。

4:使用TSIG加密机制可以实现DNS服务器与用户间传输区域数据文件不被嗅探拦截。

答案:错误,TSIG加密保证的是DNS服务器与DNS服务器之间迭代查询的安全。

5:分离解析功能最常使用的情况是?

答案:为用户就近选择服务器,加速解析效率,减少查询传输消耗。

刘遄

刘遄

我们懂得《Linux就该这么学》作为一本Linux入门读物,更加有责任,有必要将文章质量不断提高,知识点不断扩充,让实验更加的实用,不辜负每位读者给予我们的支持,因此我们正在全球各地部署书籍的镜像站点,想用最迅猛的访问速度满足您心中那颗求知的小宇宙,同时,向每位会员承诺,本书可永久免费学习,提供所有所需工具以及在能力范围内的答疑支持。收费培训服务:http://www.linuxprobe.com/training
刘遄