bind 伯克利网络域名系统
DNS就是把IP和域名做一个绑定,比如说我们输入一个域名www.linux.com他会返回来一个IP地址,输入一个IP地址返回一个域名。
DNS域名解析服务
相较于由数字构成的IP地址,域名更容易被理解和记忆,所以我们通常更习惯通过域名的方式来访问网络中的资源。但是,网络中的计算机之间只能基于IP地址来相互识别对方的身份,而且要想在互联网中传输数据,也必须基于外网的IP地址来完成。
为了降低用户访问网络资源的门槛,DNS(Domain Name System,域名系统)技术应运而生。这是一项用于管理和解析域名与IP地址对应关系的技术,简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的IP地址或域名,即将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。这样一来,我们只需要在浏览器中输入域名就能打开想要访问的网站了。DNS域名解析技术的正向解析也是我们最常使用的一种工作模式。
鉴于互联网中的域名和IP地址对应关系数据库太过庞大,DNS域名解析服务采用了类似目录树的层次结构来记录域名与IP地址之间的对应关系,从而形成了一个分布式的数据库系统,如图
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。目前最常见的域名后缀有.com(商业组织)、.org(非营利组织)、.gov(*部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国国家*域名)等。
其实我们都有一个根域,就是点,本来域名是这样写的www.baidu.com.但是大家都有点所以说这个点会被浏览器自动加上,这个要知道。
linux.com.这个是1级域名,www.baidu.com.是二级域名,当我们注册域名的时候他1级域名是收费的,二级域名是免费的。不是说免费,就是说二级域名是收你一级域名的费用,多加的www是不收费的。
DNS两个功能:
正向解析:域名→IP地址(大多数情况是正向解析)
反向解析:IP地址→域名
DNS三个服务模式:
1.主服务器类型:管理该区域内的域名与IP地址之间的对应关系
2.从服务器类型:同步主服务器数据
作用:减轻主服务器压力, 加快用户的请求速度。
3.缓存服务器类型:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
简单来说,主服务器是用于管理域名和IP地址对应关系的真正服务器,从服务器帮助主服务器“打下手”,分散部署在各个国家、省市或地区,以便让用户就近查询域名,从而减轻主服务器的负载压力。缓存服务器不太常用,一般部署在企业内网的网关位置,用于加速用户的域名查询请求。
DNS域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户发起的域名查询请求时,具有递归查询和迭代查询两种方式。所谓递归查询,是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。而迭代查询则是指,DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
由此可见,当用户向就近的一台DNS服务器发起对某个域名的查询请求之后(这里以www.laoji.com为例),其查询流程大致如图
当用户向网络指定的DNS服务器发起一个域名请求时,通常情况下会有本地由此DNS服务器向上级的DNS服务器发送迭代查询请求;如果该DNS服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。其中*、最权威的根DNS服务器总共有13台,分布在世界各地,其管理单位、具体的地理位置,以及IP地址如表
名称 | 管理单位 | 地理位置 | 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 |
安装Bind服务程序
下面我们安装一下我们的bind服务程序
我们这个bind包名字叫做bind-chroot其中chroot前面见到过,叫做牢笼机制,他让我们把这个功能做一个限制,当这个黑客入侵我们服务器之后,他的破坏也就只是限于我们的DNS,而不会把整个服务器破坏了。
然后我们配置一下DNS主配置文件/etc/named.conf。
在Linux系统中,bind服务程序的名称为named。首先需要在/etc目录中找到该服务程序的主配置文件,然后把第11行和第17行的地址均修改为any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。这两个地方一定要修改准确。
我们看第11行和第17行,第11行就是说由我们服务器上的哪个网卡来为我们用户提供DNS服务,我们给他修改成any,代表就是由我们服务器上所有网卡提供DNS查询请求(他是这样的,我们服务器上有时候不止一个网卡,如果我们字样一个网卡提供DNS服务的话直接就把IP写上就可以,如果想多个网卡都提供直接写上any就行)。第17行代表谁能够进行一个查询,比如我们只允许公司内网进行查询那我们就写192.168.10.0/24,如果想所有人都能进行DNS查询的话就写上any.
如前所述,bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。将域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如图
下面的实验中会分别修改bind服务程序的主配置文件、区域配置文件与数据配置文件。如果在实验中遇到了bind服务程序启动失败的情况,而您认为这是由于参数写错而导致的,则可以执行named-checkconf命令和named-checkzone命令,分别检查主配置文件与数据配置文件中语法或参数的错误。
然后我们再配置一下我们的bind服务程序的区域配置文件
正向解析实验
这么多参数,我们看到好乱,这里我们给他全部清空,然后自己写一下,不清空也可以,这些是默认的模板。
我们先写上一个zone,因为我们的每个域名和我们的每个网段我们都把他叫做是一个区域,后面是我们域名的名称,叫做laoji.com。我们要想定义laoji.com域的话我们这样做,后面写IN代表我们域对应的位置,type代表我们服务器的类型,我们写的是master主服务器类型,他是管理我们这个地址和域名所对应关系的。file" "是我们子配置文件所保存的路径,我们这里不写路径,写上名称就可以,然后我们以.zone结尾。allow-ypdate{none}代表允许更新的地址,也就是定义了我们一个从属服务器的一个允许的一个范围(比如说允许那个从服务器来同步主服务器的数据)。这是正向解析。
反向解析实验
在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题
编辑区域配置文件。在编辑该文件时,除了不要写错格式之外,还需要记住此处定义的数据配置文件名称,因为一会儿还需要在/var/named目录中建立与其对应的同名文件。反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.0.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。把下列参数添加至正向解析参数的后面。
配置反向解析的话注意反向,还是先来一个zone,然后注意," "里面写的IP要反写,本来我们是192.168.10,这时候我们写成10.168.192,然后加一个后缀,in-addr.arpa代表就是一个反向解析文件的意思。然后IN ,然后服务器类型也是主服务器,然后是子配置文件的会待会保存到192.168.10.arpa,这个时候就没必要反写了,因为这个文件是我们程序去调用的,而且现在没有,下面我们自己创建出来。然后后面也可以allow-update{none};,这个写不写都行,看自己,你要是不允许别人更新的话就写上,然后保存退出。
然后我们就开始配置我们刚才file里面写的那两个子配置文件了。
首先我们进入/var/named目录下,我们会看到里面有几个文件,那么这里记住,named.localhost是正向解析文件模板,named.loopback是反向解析模板,我们和刚才里面起了别的名字了,所以我们给他换个名字复制一下。这里其实我们复制的时候加上-a的话最好,这样就可以把权限什么的复制过来,由于我们这里忘了,复制过来之后也一样就没加。(啊啊啊啊,一定要加-a一定要。)
$TTL 1D | #生存周期为1天 | ||||
@ | IN SOA | laoji.com. | root.laoji.com. | ( | |
#授权信息开始: | #DNS区域的地址 | #域名管理员的邮箱(不要用@符号) | |||
0;serial | #更新序列号 | ||||
1D;refresh | #更新时间 | ||||
1H;retry | #重试延时 | ||||
1W;expire | #失效时间 | ||||
3H;)minimum | #无效解析记录的缓存时间 | ||||
NS | ns.laoji.com. | #域名服务器记录 | |||
ns | IN A | 192.168.10.10 | #地址记录(ns.laoji.com.) | ||
IN MX 10 | mail.laoji.com. | #邮箱交换记录 | |||
IN A | 192.168.10.10 | #地址记录(mail.laoji.com.) | |||
www | IN A | 192.168.10.10 | #地址记录(www.laoji.com.) | ||
bbs | IN A | 192.168.10.20 | #地址记录(bbs.laoji.com.) |
复制过来之后我们先编辑一下正向解析文件,先在第一列代表我们域名的一个根域,我们写上laoji.com.我们域名后面一定要记得加.。然后后面是我们的域名邮箱,但是邮箱@他会跟我们标识会有冲突,所以我们把那个@符号改成点.。比如说当我们域名到期或者需要付费之后,就会通过邮箱发送邮件。接下来在我们里面写上具体信息,
第一列呢第一个就是我们的二级域名去哪里去找,我们给他一个NS叫做nameserver的一个地址,这个地址我们写成ns.laoji.com.就好了。
第二列的话我们具体定义ns.laoji.com这个域名它所对应的这么一个地址的话呢我们就给他写成ns.laoji.com IN A 192.168.10.10,但是由于我们在第一列已经定义好了我们的这个根域了,所以说我们可以省略掉,我们可以写成ns IN A 192.168.10.10,拿ns就代表了域名了。这就是说我们将它给他解析到192.168.10.10的地址上面了
第三列我们将www.laoji.com 给她解析到192.168.10.10上面,然后还和上面一样可以缩写www IN A 192.168.10.10.这是我们定义了一个www域名,(www.laoji.com)这样做好之后保存退出。
然后我们编辑一下我们的反向解析文件。
$TTL 1D | ||||
@ | IN SOA | laoji.com. | root.laoji.com. | ( |
0;serial | ||||
1D;refresh | ||||
1H;retry | ||||
1W;expire | ||||
3H);minimum | ||||
NS | ns.laoji.com. | |||
ns | A | 192.168.10.10 | ||
10 | PTR | ns.laoji.com. | #PTR为指针记录,仅用于反向解析中。 | |
10 | PTR | mail.laoji.com. | ||
10 | PTR | www.laoji.com. | ||
20 | PTR | bbs.laoji.com. |
我们编辑一下反向解析文件,他也需要先写上ns这么一个地址。但是我们的后面就不是IN A了,而是PTR,格式要求。先写上域名和邮箱然后编辑下面内容
第一列我们写NS ns.laoji.com. 定义一个NS 域名。
第二列ns.laoji.com 我们给她解析成A 和上面一样,省略后边,直接ns代表,因为我们上面定义过了。这是别写成IN A,就是一个A,这是格式要求。
第三列我们把192.168.10.10给他反向解析到www.laoji.com域名。因为我们前面已经定义好服务器地址了,所以直接写10就代表192.168.10.10。
然后我们保存并退出,重启一下DNS服务(服务名是named)。并且加入开机启动项。
然后我们配置一下网卡,让我们的网卡指向自己的DNS,然后我们才能看到效果。
我们学过4种方法,我们现在用第二种看一下。
编辑进来我们的网卡
我们设置DNS指向我们自己。
让后我们退出,重启网卡服务。
然后我们PING一下我们的域名,很尴尬,报错了,说没有这个域名,
先看一下服务是不是没跑,发现跑着呢。
然后我们看一下专业的nslookup查看一下,给我们的提示是不能解析成地址。
忽然发现个问题果然是报错了。
我看了半天文件之后没发现什么写错了,如果我们肉眼看不出来的话,我们这样做。
看日子吧,我们先重启一下服务,
忽然想到一个问题,我们复制子配置文件模板的时候没有加-a.我们看一下是不是。
我去,真不一样,怪我们忽视了,现在立刻将功赎罪,chown给他改一下用户组。
然后我们重启一下服务
嗯,通了,舒服了,因为偷懒。
ping的话是不是太low了,我们nslookup一下
当我们输入域名他帮我们解析成地址,输入地址解析成域名。
然后我们清空一下防火墙的策略,然后保存一下我们网卡的防火墙。然后我们开启另一台客户端(192.168.10.20)做一台从属服务器。先ping一下,然后通着。
部署从服务器
我们是在自己本地实现了DNS的效果,但是我们现实中不可能就只有主服务器去来做域名解析,那样压力太大,所以我们下面要创建从服务器,把主服务器数据同步过去
作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速且不间断的域名查询服务。在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。
主机名称 | 操作系统 | IP地址 |
主服务器 | RHEL 7 | 192.168.10.10 |
从服务器 | RHEL 7 | 192.168.10.20 |
给从服务器(客户端)先安装bind-chroot
然后我们编辑一下我们从属服务器主配置文件
还是第11行和第17行修改成any
然后配置一下从属服务器1912.zones子配置文件,还是删除光了自己写。但是在这之前我们现在主服务器上也是这个配置文件中修改一些参数,给他开放权限,这里别搞混了。我们先修改主服务器的配置文件。
我们原来写的事none,不允许任何人,现在给他开放一个白名单,允许192.168.10.20这个从属服务器来访问DNS。
然后别忘了重启服务。
然后接下来我们要编辑的是从属服务器的1912.zones这个文件,
第一个是正向解析的先写上一个zone,然后写上我们同步的域名的名称。然后服务器的类型是从属服务器slave;然后msaters { 192.168.10.10; };是主服务器的地址,意思是向他发起同步。并且我们定义一下待会同步完了那个文件的保存路径。
第二个是反向解析,和上面解释一样。
然后我们先看一下同步完之后的文件就是放在这个目录下。现在是空的。
然后我们配置一下从属服务器(客户端)的网卡,让他的DNS指向自己的地址,我们使用第三种方法配置。
我们把DNS指向自己的服务器,从属网卡。
然后重启一下网卡,然后再重启一下从属服务器的DNS服务。
咦,怎么只有一个,这里怀疑是重启服务网络有什么小问题,我们再多重启几次DNS服务。
又重启一次就有了。
我们看一下这个文件是乱码,那我们怎么才能用他呢。
我们可以PING一下。还可以用我们的nslookup命令。
我们看一下当输入域名之后他会告诉我们是192.168.10.20提供的解析,并且同步是成功的,这是一台从属服务器,现在我们的同属服务器也可以为我们的用户来提供服务了。然后输入地址,会解析出来我们的域名。
安全的加密传输
上面反复提及,域名解析服务是互联网基础设施中重要的一环,几乎所有的网络应用都依赖于DNS才能正常运行。如果DNS服务发生故障,那么即便Web网站或电子邮件系统服务等都正常运行,用户也无法找到并使用它们了。
互联网中的绝大多数DNS服务器(超过95%)都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。
大家想过没有,比如说我们把信息从日本的主服务器传到中国,然后再传到北京市,再到朝阳区,再到某个小区,信息这样传下来是不是很不安全啊,所以就有了我们的TSIG加密。
我们先进入到我们的主服务器。
在主服务器中生成密钥。dnssec-keygen命令用于生成安全的DNS服务密钥,其格式为“dnssec-keygen [参数]”,常用的参数以及作用如表
dnssec-keygen命令的常用参数
参数 | 作用 |
-a | 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等 |
-b | 密钥长度(HMAC-MD5的密钥长度在1~512位之间) |
-n | 密钥的类型(HOST表示与主机相关) |
使用下述命令生成一个主机名称为master-slave的128位HMAC-MD5算法的密钥文件。在执行该命令后默认会在当前目录中生成公钥和私钥文件,我们需要把私钥文件中Key参数后面的值记录下来,一会儿要将其写入传输配置文件中。
我们写的dnssec-keygen代表就是加密生成秘钥的意思,-a代表加密的一个协议,然后我们TSIG加密的话就是用的MD5格式的。-b 128是代表128位加密,-n是秘钥的类型,HOST是说我们的了类型是一台主机。然后我们密钥的一个名称,我们叫做masters-slave。别看错了,写到上面名称就完了,别把下面也写上,下面是你回车之后系统打印出来的。
其实我们要的不是公钥,也不是私钥,而是要的一段字符串,这个字符串长度也就10多位
第一个公钥,第二个私钥。就是要的这个么一串字符串。所以说我们其实也不用敲这么一长串,直接网上生成一串也行,但是格式得对。
在主服务器中创建密钥验证文件。进入bind服务程序用于保存配置文件的目录,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。为了安全起见,我们需要将文件的所属组修改成named,并将文件权限设置得要小一点,然后把该文件做一个硬链接到/etc目录中。
然后我们进入到/var/named/chroot/etc/目录下,创建一个文件,这个文件我们把它叫做transfer.key,就是进行数据传递的意思。
第一列秘钥的名称,我们就给他写成从主服务器同步到从属服务器的一个名称。
第二列是定义一下我们的加密类型MD5,这个文件不区分大小写。
第三列就是我们刚才生成的一串字符串。
然后我们给从属服务器(客户端)也配置这么一个文件,
为了安全起见,我们需要将文件的所属组修改成named,并将文件权限设置得要小一点,然后把该文件做一个硬链接到/etc目录中。
然后我们再配置一下我们DNS主配置文件
开启并加载Bind服务的密钥验证功能。首先需要在主服务器的主配置文件中加载密钥验证文件,然后进行设置,使得只允许带有master-slave密钥认证的DNS服务器同步数据配置文件:
然后在我们主服务器调取一下这个文件,也就是第9行,这么说吧,如果你写了这个文件不调取,那有什么用啊,不调用你也不生效啊。第18行是说允许进行传递,加密的秘钥名称以我们文件里面的为准,如果你不是我这个名称,那么这里也添你的。
别忘了重启服务。
然后我们再进入我们的从属服务器当中,
我们看到还有刚才我们同步过来的两个文件,我们现在给他删除掉。
你也可以用*代替全部删除。
然后我们在从属服务器多重启几次DNS服务,然后还没看到生成这两个文件。这是为什么呢,情况是这样的,主服务器我开了加密了,你从属服务器没有开,我觉得你配不上我了,哈哈哈,所以不能给你同步。那么大家应该想到了,要想同步那么我们从属服务器也得开。和主服务器一样。
首先我们也是调用这个文件。然后就和主服务器不一样了。在大约43行的位置,在从属服务器里面我们要指向主服务器的地址已经要秘钥的名称。
然后我们看到他又回来了,我们再ping一下和nslookup看一下。
部署缓存服务器
DNS缓存服务器(Caching DNS Server)是一种不负责域名数据维护的DNS服务器。简单来说,缓存服务器就是把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率。DNS缓存服务器一般用于经常访问某些固定站点而且对这些网站的访问速度有较高要求的企业内网中,但实际的应用并不广泛。而且,缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关,因此当前仅需了解即可。
配置系统的双网卡参数。前面讲到,缓存服务器一般用于企业内网,旨在降低内网用户查询DNS的时间消耗。因此,为了更加贴近真实的网络环境,实现外网查询功能,我们需要在缓存服务器中再添加一块网卡,并按照表13-4所示的信息来配置出两台Linux虚拟机系统。而且,还需要在虚拟机软件中将新添加的网卡设置为“桥接模式”,然后设置成与物理设备相同的网络参数(此处需要大家按照物理设备真实的网络参数来配置,图13-6所示为以DHCP方式获取IP地址与网关等信息,重启网络服务后的效果如图)
我们现在准备两台服务器,然后第一个添加一块网卡,并且是桥接模式。
说一下我们实验思路,我们两台服务器,第一个服务器是两块网卡,一块局域网一块桥接是可以上网的。第二个是一块网卡并且是局域网。然后我们拿第一个服务器查询外网的东西能传向第二个服务器,也就是缓存到了我们第二个服务器,说明我们就成功了。
先配置一下我们第一个服务器的网卡。
这个名字不用手动输入,选完之后复制就行,然后
OK,桥接DHCP。
然后重启网卡。
我们可以看到,这台服务器先在既能PING通外网也能ping通局域网。
然后我们进入到我们的客户端。
还原一下我们客户端,然后再安装一下我们的bind-chroot.
然后我们指向一下我们主服务器DNS。
重启网卡ping一下。
然后回到我们服务端也就是第一台服务器配置DNS主配置文件。
这个是转发服务器地址,我们指向谷歌。
然后用客户端nslookup测试,www.baidu.com反正我是没成功,不知道被什么拦截了。
-------------------------------------------------------------------------------------------------------------------------
分离解析技术
我们想一个问题,就是比如我们一个网站在国内国外都很火,但是服务器搭建在国内,那么国外的用户访问就很慢了,这样会照成不好的用户体验,这时候我们的分离解析技术就出来了。
为了满足海内外读者的需求,于是可以购买多台服务器并分别部署在全球各地,然后再使用DNS服务的分离解析功能,即可让位于不同地理范围内的读者通过访问相同的网址,而从不同的服务器获取到相同的数据。例如,我们可以按照表所示。
不同主机的操作系统与IP地址情况
主机名称 | 操作系统 | IP地址 |
DNS服务器 | RHEL 7 | 北京网络:122.71.115.10 |
美国网络:106.185.25.10 | ||
北京用户 | Windows 7 | 122.71.115.1 |
海外用户 | Windows 7 | 106.185.25.1 |
分别为处于北京的DNS服务器和处于美国的DNS服务器分配不同的IP地址,然后让国内读者在访问时自动匹配到北京的服务器,而让海外读者自动匹配到美国的服务器,如图
说白了就是我们在中国和美国都部署一个服务器,当不同的客户访问同一个域名的时候,他们不会从同一个地方调取数据,而是中国的调取中国服务器的,美国的调取美国服务器的,这样说就明白了吧。
在这之前,我们先打开我们的电脑命令窗口,然后ping一下www.baidu.com看一下,是不是发现那个地址不一样,这就是分离解析技术,我们访问的不同服务器,但是我们得到的结果是一样的。
下面我们实验开始
先还原虚拟机安装DNS
然后再修改DNS主配置文件。
我们还是先修改第11行和第17行变成any,就是所有人都可以使用我们的服务。
由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第51~54行的根域信息删除。
我们给他删除了。
这样我们就是一台根域了,这样我们才可以做分离解析技术。
然后我们编辑第二个区域配置文件/etc/named.rfc1912.zones
我们先把他清空,然后自己添加。
1.我们先定义一个acl,就是我们看到china的时候就会那我们就回去给他定义成一个网段122.71.115.0/24(其实就是定义了一个别名。外号总明白了吧,就是看到china就相当于看到了那个网段。)
2.第二列也一样定义一个美国的别名。
3.如果我们匹配到一个china别名网段的时候我们该怎么处理呢。或者改怎么对待这个网段的主机
4.我们匹配一个客户端,而这个客户端,而我们客户端就是来自于一个网段,也就是china网段了。match-clients参数是匹配一个客户的意思。
5.那么我们就定义一个域,这个域的名称就叫做laoji.com
6.对于我们这个域名的话我们服务器类型为主服务器(master)。
7.然后我们定义一下他要加载的配置文件laoji.com.china
8.9吧上面大括号结束掉。
下面的一样的意思。
然后我们进入/var/named目录找到正向解析文件,复制出来两个,记住加-a,上面的实验就因为没加-a找错太痛苦。
然后我们编辑这两个文件。
$TTL 1D | #生存周期为1天 | ||||
@ | IN SOA | laoji.com. | root.laoji.com. | ( | |
#授权信息开始: | #DNS区域的地址 | #域名管理员的邮箱(不要用@符号) | |||
0;serial | #更新序列号 | ||||
1D;refresh | #更新时间 | ||||
1H;retry | #重试延时 | ||||
1W;expire | #失效时间 | ||||
3H;)minimum | #无效解析记录的缓存时间 | ||||
NS | ns.laoji.com. | #域名服务器记录 | |||
ns | IN A | 122.71.115.10 | #地址记录(ns.laoji.com.) | ||
www | IN A | 122.71.115.15 | #地址记录(www.laoji.com.) |
先写上域名的根域以及对应的邮箱,然后写解析记录
第一列NS ns.laoji.com 代表供应商为我们提供的一个服务器,主要用来解析我们那的二级域名。
第二列是ns(ns.laoji.com.)我们缩写,IN A把他解析成一个IP地址
第三列也是给他解析成122.71.115.15地址。
保存退出再配置美国的。
$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.) |
现在我们就有两个地址了,我们现在配置一下我们的网卡。
因为我们是两个IP地址,所以我们配置两个
然后别忘了保存之后我们选择关闭一下再开启,达到一个重启网卡的效果。
然后我们准备客户端。
然后我们把客户端的IP先设置为中国的IP,刚才我们服务器设置的事10,我们这里就设置为20吧,但是必须是同一个网段啊。然后我门下面DNS指向到122.71.115.10服务器IP。
然后开关一下,别忘了。
然后我们ping一下我们的网络,是通的,然后我们再ping一下我们的域名,发现报错了。
找下原因。
清空一下服务器的防火墙规则,
发现通了,果然是他在搞鬼。加-c 4是只让他ping4次。而且我们发现他是122.71.115.10,中国IP服务器解析的。
下面我们客户端换成国外IP的。服务器不动。