DNS 原理 和安装配置

DNS: 
第一季 
---------------------dns基础和安装 
Dns监听2个端口,(准确说3个tpc的953端口,用于跑rndc,远程域名控制)tcp 53(用于主,辅DNS之间的同步),udp 53(用于监听,一般客户机想要域名解析就去访问udp53端口); 
服务名:/usr/sbin/named 
其他工作原理这里就不详说了 
安装包:bind,bind-chroot,bind-utils 
这里说明一下bind-chroot包的作用: 
主要是为了安全,一旦安装bind-chroot后,dns的根目录就被锁定到了/var/named/chroot了,所以在文档里面只要是有/的地方就表示是在/var/named/chroot,如果没有就表示是在/var/named/chroot/var/named/里面。 
这里我们对这些安装后的包或者文件进行整理一下 
首先是主配置文件/etc/named.conf, 
在启动dns服务之前(service named start),/var/named/chroot/etc/和/var/named/chroot/var/named/目录下是空的,当你启动dns服务后,/var/named/chroot/etc/ 下会自动生成配置文件named.conf 和named.rfc1912.zones,当然这个文件在/etc/里存在的, 
但是当你启动服务时,发现失败了,那么这里面的文件就会消失,所以在配置后尽量不要出错,当然,这里我建议安装后就可以先开启服务。还有一个方法就是可以从/etc/下将这个2个文件复制到/var/named/chroot/etc 下,当然复制后要注意文件的组拥有人应该是named 
然后说下文件的关联性: 
首先是named.conf, 这个是主配置文件,在/etc 和/etc/var/named/chroot/etc下都有,它主要是对全局进行控制。 
其次,是named.rfc1912.zones,在/etc和/etc/var/named/chroot/etc下都有, 
我们可以如果我们要配置正解或者反解的域数据库,那么我们可以到这个文件里面添加,这里来举例说明一下 

这里我们定义了一个 file “localdomain。zone”这个文件,这个文件主要是给我们来写一些正解的数据的,相当于dns正解数据库文件吧,如果我们指定了是这个文件,那么下一步,我们就要到/var/named/chroot/var/named下面去编辑这个文件,但是这里是没有模板的,所以我们可以将/var/named/下的named.localhost这个文件复制到/var/named/chroot/var/named下面,并且改名为localdomain.zone,这里要注意了,复制后要将这个文件的组拥有人改为named:chgrp named localdomain.zone 
这就是几个文件的关联性,这个是很重要的!!! 
第二季 
--------------------配置文档的详解 
首先看全局配置文件named.conf 



这三条主要是跟安全相关,用于转发dns和缓存dns 
这可以在查询时去询问根dns 
然后来看一下named.rfc1912.zones这个文件 

这里是用来添加正解和反解的域的: 
正解: 
我们用zone “域名” IN { 定于zone, 
type master/slave; 定于类型为主dns还是辅助dns; 
file “文件名”; 这里指定编写正解信息的数据库文件,一旦指定后,服务在域名解析的时候就回去找这个文件了; 
}; 
这个语法来写,上面有模板可以复制下来写,注意很多地方都有;这个封号是不能掉的。 
反解: 
zone “0.168.192.in-addr.arpa” IN { 这里首先写要解析的网段的ip,注意这里是反着写的,且是去掉主机位的反写ip地址,然后后面固定跟上.in-addr.arpa 
type master/slave; 同上正解 
file “文件名”; 同上正解 
}; 
搞定后,我们就要去编辑我们在named.rfc1912.zones中指定的文件了,假设我们指定的正解文件是example.com,反解文件是zone.example(这里的这2个文件名可以随便自己定义,彼此没有关联性) 
那么我们将named.localhost这个模板复制到/var/named/chroot/var/named/下,并改名: 
Cp -p /var/named/named.localhost /var/named/chroot/var/named/example.zone 
Cp -p /var/named/named.localhost /var/named/chroot/var/named/zone.example 
下面讲解一下这个2个文件怎么写,及一些解释 

首先看第一行ttl表示最小存活时间,他跟ping里面的ttl一样。 
第二行SOA(start of authority)起始授权机构,这个不用管,但是在写的时候不能少 
然后soa后面的instructor.example.com.这个是dns服务器的主机名,注意在主机名的后面还有一个点,这个点是不能掉的,如果没有这个点,那么就是告诉系统,自动在后面再补齐域名,那么解释是服务器就认为是去找instructor.example.com.example.com;所以这里要么加点,要写成instructor不加点 
后面的root是指定邮箱的 
下面的主要是用于辅助dns的, 
第一个serial是序列号,当主dns的正解或者反解信息增加时,那么就要手动将序列号增加,这样辅助dns才能知道主dns更新了,然后跟主dns同步,当然信息减少了序列号也要相应的减少; 
第二个是refresh,是更新的周期,这里是说辅助一天更新一次,也就是说在主dns更新后,辅助dns要一天后才会与主dns同步; 
第三个是retry重试,这个是说当辅助dns要发信息跟主dns请求更新时,如果主dns没有回应,name就会在retry指定的是时间后再次给主dns发信息要求同步; 
第四个是expire过期,如果指定时间内没能跟主dns取得联系,那么辅助dns就将停止应该任何相关于此域的请求 
第五个是最小ttl时间; 
然后看重点: 

记录:A NS MX 
1,NS(name server)它的后面要接上dns服务器的主机名,注意这里主机名末尾也要有点 
2,A(address),A记录是用来正解的记录,是用于ipv4, 
而AAAA是用于ipv6的 
这里我们正解了instructor.example.com这个域名 
同时也正解了www.example.com这个主机名,当然我们这里是简写成了www; 
然后说一下MX记录,这里虽然没有写这个记录,但是它非常重要,这个记录主要用于邮件服务器的主机名解析,如果没有mx记录来解析邮件服务器主机名,那么将无法完成邮件的接受和发送。 
3,MX(mail exchanger) 
写法(示例):@ IN MX 10 instructor.example.com 
这里的@是指本地域,10是表示邮件服务器的级别,从1到99,级别一次减小,优先级越高,那么解析时就优先到级别高的主机名; 

第三季 
-----------------------dns服务的启动 
这里需要说明一下,启动前可以先测试一下配置文件是否有语法错误 
Service named (这里命令我忘记了。。。) 
然后如果正常开启服务后,如果发现没有语法错误,也没有其他任何报错,但是解析扔不成功,那么我们就要去看正解反解文件的拥有人拥有组和权限了,一般都是因为这个问题导致解析不成功(经验) 

第四季 
------------------------------辅助dns 
辅助dns主要是用来容错的,当主dns坏掉或者停止服务后,辅助dns会顶替主dns来工作,而且辅助dns里的信息都跟主dns信息是完全一样的; 
辅助dns的配置: 
像配置主dns一样,但是区别在于,定义数据库文件和类型是要区分文件名,类型为slave 

这个主配置文件跟主dns配置文件几乎一样,只是第一条的监听端口的ip为辅助dns的ip 
然后编辑named.rfc1912.zones文件: 

这里要注意了,正解和反解zone后面的的域跟主dns是一样的,但是type都为slave,而且定义file 目录要在slaves(注意slave后面有s)下,这里slaves/exampel1.zone的slaves目录,我们在前面说过,它前面没有/,那么我们就默认他的目录为/var/named/chroot/var/named/下,然后定义文件名,为了方便,不要跟主dns文件名一样。 
最后用masters来告诉辅助dns,它的主dns是谁,这样辅助dns就知道去跟谁同步了; 
当定义好后,我们就可以重启服务了,有点人会问,我连正解反解的信息条目还没写呢,其实辅助dns不用写了,因为它回去同步主dns的文件, 
下面service named restart 

这里我们看到slaves目录里面已经生成了我在named.rfc1912.zones中定义的文件,我们打开看看 

这里可以看到,跟主dns的正解文件一模一样; 
这样一个辅助dns就搞定了; 


第五季 
-------------------------------浅学主配置文件named。Conf 
定义acl,在主配置文件中,我们是可以控制一些主机或者ip来本地查询的, 
Acl 名 { }; 

在最前面,我们定义了一个名问pincer的acl表,后面的ip是指被acl用来限制的ip 
然后我们在allow—query后写成了acl名pincer,然后重启服务后ip为192.168.0.1的主机是能查询254这个dns服务器的, 
然后我们将配置文件中的allow-query后的pincer前面加个!,这是表示取反的意思,就是不允许0.1这个机器在254dns上进行查询; 

然后在0.1上再次测试一下: 

这里可以看到明显被拒绝了 
但是有的人就很奇怪了,他是这样做的: 
首先允许0.1可查询:在服务器254上service named restart 
然后在0.1上进行测试 

这里可以看到是成功 了,然后他更改配置文件,在pincer前面加!,然后重启服务时service named reload 
再倒0.1上去测试: 
结果 
很明显被拒绝了,他会问,我明明是用reload来重启服务的,按说是没有清空缓存的,刚刚就应该有desktop3的缓存在服务器的,为什么还是访问不到?好,这里要说明一下,只要是acl控制,限制了查询,就一并限制了对缓存的查询,说强硬点,就是都限制住了! 

视窗view 
什么叫视窗?我们都知道,国家在拿到公网ip后,会分给各个部门什么的使用,比如就把一个网段的公网ip给了电信,一个网段的公网ip给了网通,然后用他们再去划分;所以当我们上网时,就会去想dns询问主机名,这时当你是电信的网时,dns服务器就会通过视窗向电信解析的ip去查找,(主机对应的ip是电信网段的ip),同样,当你是网通的时候,就会通过视窗去查找主机名对应的网通端的ip地址这是因为运营商的dns有2个网络接口,一个接电信一个接网通,他通过视窗;所以视窗功能就是可以让不同运营商的用户,在解析同一主机名时,会得到不同的ip 
这里我们来做实验证明: 
我定义254这个ip的机会在解析www.example.com时对应的ip为192.168.0.100,但是0.1ip的主机解析时确是192.168.0.101 
首先配置主配置文件name.conf 

按要求,我们这里需要定义了2个视图,分别取名为视图server和pincer,这里match-clients的作用是,只要是它指定的ip,这询问dns服务器时,服务器就会去寻找下面include 后的文件,这里我们可以看到254将询问时查询的是named.rfc1912.zones而0.1查询时,查看的是named.zones这个文件。 
然后我们就要编辑这2个文件了: 

------------转发dns和缓存dns 
这里首先要区分这2中dns,虽然在大致上都是样的,但是还是有区别的: 
转发dns:当本地dns无法查询记录时,就把请求给转发dns,如果转发dns上没有,那么久返回无结果;一般查询不到就会很快返回无结果; 
缓存dns:当本地dns无法查询记录时,就把请求给缓存dns,如果缓存dns上没有,那么就自己去根dns上查询;而且一般查询不到时,就会等一段时间,然后提示超时; 
这里来看一下: 
转发dns配置: 

这里要添加一条:forward only; ,这个就是说明了此服务器为转发dns,再将下面的2条改为no就可以了,重启服务,我们再来测试: 
注意了,我们在重启服务时可以service named restart 或者service named reload ,前者重启服务后会清楚缓存,而后者不会 
这里先测试转发dns在查询不到的情况下 

这里很快就提示了找不到; 
下面来看缓存dns: 
配置 
这里只是将recursion后面改only; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章