一、DNS配置

1、配置DNS服务

1)我们现在尝试着添加一个解析数据。

还记得刚才在配置文件的末尾有一个文件,用来存放区域信息

DNS配置_Linux

我们就来编辑/etc/named.rfc1912.zones这个文件   

DNS配置_Linux_02

添加3行关于magedu.com的信息

接下来我们要建立那个magedu.com.zone文件了,由于里面的内容较为复杂,我们可以复制模板然后修改一下。DNS配置_Linux_03

我们将localhost文件当做模板复制一份起名就叫magedu.com.zone

但是我们发现这个权限太小了,named用户无法读DNS配置_Linux_04

因此我们可以手动改一下权限,或者在刚才复制的时候加-p保留权限。DNS配置_Linux_05

改好权限之后我们就可以编辑这个文件了,这里就要填写之前提到的各种资源记录了。

 

在填记录之前我们先在192.168.37.106上搭建一个web服务

DNS配置_Linux_06

内容为centos6

DNS配置_Linux_07

启动一下web服务DNS配置_Linux_08

然后就可以编辑文件了,内容如下:

TTL可以在开头定义,全局继承。DNS配置_Linux_09


配好之后保存然后可以使用named-checkzone进行数据库检查

DNS配置_Linux_10

显示OK,然后我们重新加载一下服务。可以使用rndc reload,这个命令是专门管理DNS服务的,直接重新加载数据库。

DNS配置_Linux_11

那么现在,客户端就可以通过这个DNS服务器访问websrv1.magedu.com网址了。

我们去客户端ping一下:DNS配置_Linux_12

果然解析出地址为192.168.37.106.

我们可以使用links尝试打开网页:

DNS配置_Linux_13

DNS配置_Linux_14

打开成功!


2)别名

DNS配置_Linux_15

我们再添一条www别名。然后rndc reload重新加载一下。

然后用客户端测试一下:

DNS配置_Linux_16

设置成功。

于是我们现在可以使用links 打开www.magedu.com

DNS配置_Linux_17

DNS配置_Linux_18

别名设置成功!

 

3)设置两个服务器

为了避免一个服务器负载过大,我们可以使用以下方式,设两个服务器

DNS配置_Linux_19

我们把106107上都放一样的东西,这样用户访问www.magedu.com的时候,会随机分配,有一部分人访问106上的内容,一部分人访问107上的内容,效率就更高一些了。


4)模糊访问——泛域名解析

·有的时候用户本来想访问www.magedu.com的网站,但是他不小心输错了输成wwww.magedu.com或其他乱七八糟的字母,但我们仍然希望只要是后面是magedu.com的就跳到我们www.magedu.com页面去。

DNS配置_Linux_20

于是我们使用通配符*,代表任意字符。这样无论用户输入什么.magedu.com都会跳到我们正确的界面了。

 

·有的时候我们连www都不想打,想直接输入magedu.com访问,于是我们就加一条:

magedu.com. A 192.168.37.106

或者

@ A 192.168.37.106

或者

  A192.168.37.106

都可以实现。

 

2、反向地址解析

跟正向地址解析差不多,只是将IP地址解析成名字,一般用于邮件。

DNS配置_Linux_21

还是编辑这个文件,添加如下4行内容

DNS配置_Linux_22

然后再去/var/named/下创建192.168.37.zone文件DNS配置_Linux_23

同样,用named.loopback做模板,复制一份文件出来,然后修改此文件

DNS配置_Linux_24

一定记得要写.表示结束

DNS配置_Linux_25

我们来测试一下100:DNS配置_Linux_26

果然补充了后缀,所以一定要写点!DNS配置_Linux_27

106就没有问题。

 

3、主从DNS服务器

1从的数据库不需要自己创建,会自动同步主DNS的数据。DNS配置_Linux_28

从服务器的数据存放在slaves文件夹内。

 

下面我们来配置一下magedu.com的从服务器:

首先还是要先改named.conf文件DNS配置_Linux_29

将这两行注释。

然后再修改 /etc/named.rfc1912.zones文件

DNS配置_Linux_30

然后保存之后,可以先查看一下slaves文件夹下还没有备份

DNS配置_Linux_31

当我们重新加载一下之后再看,就已经做好备份了。从数据库的内容就和主数据库一样。

DNS配置_Linux_32

注意,有几个服务器,就应该有几条NS服务。

一个主可以有多个从,从也可以再有一个从。

 

2)安全隐患

但是这种主从机制有一些安全隐患,任何人使用dig-t axfr magedu.com @192.168.37.107命令,就能从192.168.37.107服务器上把magedu.com这个域的所有数据抓下来。为了防止这种数据泄露,我们在主配置文件加上一句allow-transfer,后面跟上从的地址。DNS配置_Linux_33

这样就只允许从服务器能从主上面传输数据。

但是这样也有安全问题,我虽然不能从主DNS上传输数据,我仍然可以从从DNS上传输数据。因此,我们也应该在葱的配置文件中加上这句allow-transfer,并且不允许任何人传输。DNS配置_Linux_34

这样,就解决了安全问题。

 

4、子域

比如我们开始的网址是www.magedu.com,但是我们现在做大了,magedu下面新增加了子域,比如开在河南的分公司叫www.henan.magedu.com。这样magedu就有新的子域叫henan,那么这个子域放在哪里呢?有两种方式。

1当访问量不大时,就可以与magedu放在一个服务器上。

DNS配置_Linux_35

2当访问量大的时候,可以单独拿出来作为一个独立域,但是仍然放在同一个服务器上。

       先在named.rfc1912.zones中增加以下内容:

DNS配置_Linux_36

然后仍然是复制一份模板改一改:DNS配置_Linux_37

虽然是子域,但是还是放在同一个机器上,但是从实现上是通过独立域实现的。DNS配置_Linux_38

  修改成功

DNS配置_Linux_39

3不放在同一个服务器上(这个过程叫委派)

我们之前讲过,上级服务器知道下级子域的地址的,因此我们先在上级域中添加子域信息DNS配置_Linux_40

然后再按照之前的方法,在106上把henan.magedu.com域建起来即可。    

添加配置文件内容:

DNS配置_Linux_41

建立henan.magedu.com.zone文件:DNS配置_Linux_42

这样就委派成功了。DNS配置_Linux_43

glue record:粘合记录,父域授权子域的记录

 

5bind-chroot软件搬家

bind-chroot:/var/named/chroot/ DNS很多相关文件迁移到一个比较深的文件夹,这样可以使黑客攻击时无法找到DNS文件,更加安全。

 

首先安装包:

DNS配置_Linux_44

装好之后,它有一个服务需要启动

DNS配置_Linux_45

启动服务:

DNS配置_Linux_46

搬家成功:DNS配置_Linux_47

DNS配置_Linux_48

可以看到,原来的文件也在,并且两个文件一模一样

DNS配置_Linux_49

inode号相同但是硬连接数还是1,说明它既不是硬链接也不是软连接

DNS配置_Linux_50

它是通过mount挂载实现的。目录挂目录。


二、允许动态更新

我们可以允许动态更新,通过命令,可以坐在别的机器上将这台机器的数据库的内容进行动态更新,而不是去本机的数据库里直接改。

 

1)首先得在本机上允许动态更新(就是将这个功能先开启)

修改named.rfc1912.zones文件:

指定的zone语句块中:添加Allow-update {any;};

DNS配置_Linux_51

这样允许任何人动态更新。

使用rndc reload重新加载一下。

 

2)然后需要给named目录添加写权限,让named用户可以去里面修改henan.magedu.com.zone文件DNS配置_Linux_52

(或者使用chmod 770 /var/named更改权限)

PS:如果selinux策略启用的话,记得把策略开关打开:setsebool -P named_write_master_zones on。如果selinux策略本身是关掉的就不用管它了。

 

3)最后就可以在另一台机器上开始改了,使用nsupdate命令,交互式修改,每次改完一句记得输入send发送,这样那边才会被修改。DNS配置_Linux_53

要注意,它并不会马上修改原来的文件,而是新生成了一个.jnl文件。等过一段时间才会把.jnl里的内容写进源文件。DNS配置_Linux_54

这个文件是一个二进制文件。DNS配置_Linux_55

但只要生成了.jnl文件,就已经添加成功且生效了。

 

4)那我们可以来测试一下

DNS配置_Linux_56

果然添加成功DNS配置_Linux_57

可以查看一下,源文件当前确实是没有被改变的。

 

5)可以添加当然也可以删除,使用相同的方式,命令如下:

DNS配置_Linux_58

这样就删掉了websrv那条记录DNS配置_Linux_59

果然没有6.6.6.6了。

 

6)这种方式允许任何人修改数据库,很不安全,因此我们在.zones文件中不要设成any,你允许哪个机器改,就把后面写上机器地址即可。

DNS配置_Linux_60

DNS配置_Linux_61


三、转发服务器

1、概念

DNS配置_Linux_62

正常情况下每个地方都有自己的服务器,现在先只看这三个,三个现在在三个地方都有自己的服务器,加入beijing有人想访问www.magedu.com但是它本机上没有,它就要跑到根上去问一圈然后返回结果,shanghai那边也有人想访问这个网址,它也要去根上跑一圈问,zhenghzou那边还有人想访问这个网址,它也要去根上跑一圈问,这样就很麻烦效率很低。

于是我们就设定,shanghaizhengzhou如果本机没有时先不去根上问,而是先去beijing上去问,如果beijing没有再去根上问,如果beijing上有就可以直接拿到结果了。这种方式就叫服务器转发。

 

2、代码

被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器

Options {

forward  first|only;

forwarders { ip;};

};

(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高

zone"ZONE_NAME" IN {

type forward;

forward  first|only;

forwarders { ip;};

};

注意:关闭dnssec功能:

dnssec-enableno;

dnssec-validationno;

 

3、实验

1我们现在来尝试一下转发。我们把107当做zhengzhou106当成beijing

有两种状态:

only】:用户在107上访问网址,107如果有直接返回结果,107如果没有就去106上问,106如果也没有就返回失败结果

first】:用户在107上访问网址,107如果有直接返回结果,107如果没有就去106上问,106如果也没有就107自己跑去根上问,然后成功返回结果

 

2现在开始在106上建立域:

DNS配置_Linux_63

DNS配置_Linux_64

将来如果访问www.qq.comIP就是6.6.6.6

记得service named reload重新加载一下。

 

3现在在107上设置转发:

设置转发也有两种效果。

一种是全局转发:无论问什么域我都转发给106

还有一种是特定区域转发:只问特定的域(比如这里的www.qq.com)我才转发给106,其他的还是自己去问根。

 

方法1)我们先设置简单的,全局转发,无论查谁,都转到106

修改/etc/named.conf(注意这就也分两种情况,我们之前提到过的onlyfirst

先设置[only]吧:

DNS配置_Linux_65

记得rndc reload重新加载一下服务

然后测试一下

DNS配置_Linux_66

成功。DNS配置_Linux_67

可以看一下106上的日志,发现确实是107在问她。

 

如果访问的不是www.qq.com的网址,而是106上没有的网址,就会查询失败了。因为我们设置的是only。如果106上没有结果就返回查询失败的。(注意做这个实验时记得关掉106上的桥接模式,断网,不然106会去根上查询一圈找到结果的。)DNS配置_Linux_68

可以看到查询失败。

 

刚才设置的是only,现在我们改成first试一下。

DNS配置_Linux_69

rndc flush清一下缓存,rndc reload重新加载。

查询qq没问题DNS配置_Linux_70

查询一下其他的网:

比如京东

DNS配置_Linux_71

也成功。这个就是107自己去根上查到的了。

查看日志,106上说107来它这里查但是没有结果DNS配置_Linux_72

说明确实是107自己查到的。

如果把107也断网的话,然后清空缓存,那么就无论如何也查不到了。DNS配置_Linux_73

这也确实说明刚才是107自己查到的。

 

方法2)刚才实现的是全局转发,现在我们来实现一下特定区域转发。

修改/etc/named.rfc1912.zones文件

DNS配置_Linux_74

改完记得rndc reload加载一下。

 

查询sohu,失败。DNS配置_Linux_75

查询qq,本来应该成功的,但是还是失败

DNS配置_Linux_76

因为我们还需要修改一个设置:

修改named.conf文件

DNS配置_Linux_77

有两个设置DNS安全的开关,把yes改为no

DNS配置_Linux_78

改完后保存然后rndc reload重新加载

再试一次:DNS配置_Linux_79

特定域转发成功。