章节简述:
本章节将让您理解DNS服务程序的原理,学习正向解析与反向解析实验,掌握DNS主服务器、从服务器、缓存服务器的部署方法。
够熟练配置区域信息文件与区域数据文件,以及通过使用分离解析技术让不同来源的用户得到更合适的解析结果。
DNS服务作为互联网的基础设施,我们还可以配置BIND服务程序支持TSIG安全加密传输机制,从而保障解析数据不被嗅探监听。
本章目录结构
13.1 了解域名解析服务
一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。
DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:
正向解析:根据主机名(域名)查找对应的IP地址。
反向解析:根据IP地址查找对应的主机名(域名)。
DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统:[DNS结构模型]
而单靠几台DNS服务器肯定不能满足全球如此多用户的需求,所以从工作形式上又分主服务器、从服务器和缓存服务器。
主服务器:在特定区域内具有唯一性、负责维护该区域内的域名与IP地址对应关系。
从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址对应关系,提高重复查询时的效率。
这里还需要简单了解下,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地址修改为本机,这样才能看到实验效果哦。
为了避免经常修改主配置文件named.conf而导致DNS服务出错,所以规则的区域信息保存在了”/etc/named.rfc1912.zones“文件中,这个文件用于定义域名与IP地址解析规则保存的文件位置以及区域服务类型等内容,一定要谨慎修改。
正向解析区域文件格式:
服务类型可以有三种:hint(根区域)、master(主区域)、slave(辅助区域)。
反向解析区域文件格式:
zone区域中IP信息必需反写(如上图演示),并且后面要写上”in-addr.arpa“。
接下来的实验中会分别对主配置文件、区域信息文件与区域数据文件做修改,当怀疑因配置参数而出错时可执行named-checkconf或named-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. | #邮箱交换记录 | |||
IN A | 192.168.10.10 | #地址记录(mail.linuxprobe.com.) | |||
www | IN A | 192.168.10.10 | #地址记录(***.) | ||
bbs | IN A | 192.168.10.20 | #地址记录(bbs.linuxprobe.com.) |
第3步:检验解析结果。
nslookup命令用于检测能否从网络DNS服务器中查询到域名与IP地址的解析记录,检测named服务的解析能否成功。
此为查询DNS服务器的信息:
[root@linuxprobe ~]# nslookup > *** Server: 127.0.0.1 Address: 127.0.0.1#53
顺利的将域名的对应IP地址解析出来了:
Name: *** 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 | ***. | ||
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 = ***. 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 > *** Server: 192.168.10.20 Address: 192.168.10.20#53 Name: *** 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 = ***. 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
第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
请先不要着急退出!!!请在大约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的消耗,那么为了更加的贴近实际网络环境、实现外网查询功能,需要为缓存服务器中再添加一块网卡。
请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。
使用nmtui工具将第1块网卡的IP地址方法修改为dhcp模式(请读者根据实际上网环境来设置):
新添加的网卡(第2块)在nmtui工具列表中还没有显示,需要聪明的读者们动手添加下:
请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。
当各位读者配置成功后网卡应该都会显示出正确的IP地址啦:
第2步:在主配置文件中添加缓存转发参数。
缓存服务器的配置步骤非常简单,首先安装bind服务(yum install named -y),然后编辑主配置文件:
[root@linuxprobe ~]# vim /etc/named.conf
将监听IP端口与允许查询主机修改为any,再添加一行”forwarders { 上游DNS服务器地址; };”
上游DNS服务器地址指的是从何处取得区域数据文件,主要对比查询速度、稳定性、安全性等因素。
本次使用北京市DNS服务器:”210.73.64.1″,请读者选择前先Ping下能否通信,否则可能会导致解析失败!!
因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。
所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable named“。
第3步:重启DNS服务后验证成果。
将客户端的网卡DNS地址指向缓存服务器(192.168.10.10),配置网卡应该已经很熟练,很简单了吧:
修改完主配置文件后请将named服务重启:
[root@linuxprobe ~]# systemctl restart named
使用nslookup命令验证实验成果(如果解析不成功,请读者多留意下是不是上游DNS选择的问题):
[root@linuxprobe ~]# nslookup > *** Server: 192.168.10.10 Address: 192.168.10.10#53 Non-authoritative answer: Name: *** Address: 113.207.76.73 Name: *** 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 | #地址记录(***.) |
编辑对美国用户有效的域名区域数据文件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 | #地址记录(***.) |
第3步:重新启动named服务并验证结果。
开启两台windows7系统的虚拟机,分别模拟中国与美国IP地址后执行”nslookup ***“,看看效果吧: