首页 > 代码库 > DNS服务器简单配置和view实现

DNS服务器简单配置和view实现

简介:

DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。


DNS系统的作用:

正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)

反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)


根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色:


缓存域名服务器

也称为 唯高速缓存服务器

通过向其他域名服务器查询获得域名->IP地址记录

将域名查询结果缓存到本地,提高重复查询时的速度


主域名服务器

特定DNS区域的官方服务器,具有唯一性

负责维护该区域内所有域名->IP地址的映射记录


从域名服务器(通俗一点就是用于备份DNS服务器的)

也称为 辅助域名服务器

其维护的 域名->IP地址记录 来源于主域名服务器


搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)

官方站点:https://www.isc.org/

相关软件包:

bind-9.3.3-7.el5.i386.rpm

bind-utils-9.3.3-7.el5.i386.rpm

bind-chroot-9.3.3-7.el5.i386.rpm

caching-nameserver-9.3.3-7.el5.i386.rpm

cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包

bind,提供了域名服务的主要程序及相关文件

bind-utils,提供了对DNS服务器的测试工具程序(如nslookup、dig等)

bind-chroot,为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)

caching-nameserver,为配置BIND作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考

 

named作为标准的系统服务脚本,通过”service named start/stop/restart“的形式可以实现对服务器程序的控制

named默认监听TCP、UDP协议的53端口,以及TCP的953端口:

其中UDP 53端口一般对所有客户机开放,以提供解析服务;

TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道

如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在 /var/named/ 目录



1、安装软件包

[root@centos etc]# yum -y install bind


2、修改相关目录权限

安装完BIND以后,BIND的主配置文件通常是保存在两个位置:

/etc/named.conf  -BIND服务主配置文件

/var/named/  -域的zone配置文件

[root@centos etc]# cd /var/named

[root@centos named]# chown -R named:named /var/named/

[root@centos named]# chmod -R 664 /var/named/ 

[root@centos named]# chmod 775 /var/named   

[root@centos named]#chmod +x /var/named/data /var/named/dynamic /var/named/slaves

或者直接暴力 chmod -R 770 /var/named/

[root@centos named]# chown root:named /etc/named.conf


3、修改/etc/named.conf

[root@centos etc]# cat /etc/named.conf

options {

        listen-on {192.168.183.128;}; # 监听地址

        listen-on {172.20.33.33;};   # 监听地址  

        allow-transfer {"none";};

        recursion yes;   #   DNS是否可递归 

        allow-query {any;};  # 允许所有地址

        max-cache-ttl 900;

        directory "/var/named"; 

        pid-file "/var/named/named.pid";

        dump-file "/var/named/named_dump.db";

        statistics-file "/var/named/named.status";

        forward only;

        forwarders { 180.76.76.76 ; };    # 转发地址

        query-source address 172.20.33.33;    # 转发请求源地址

};


acl external_ip {

             172.20.32.0/22;  # 定义外网地址段

};


view "external" {  # 定义外网IP的区域文件,这里注意view的时候所有的zone都要写在view区域里面

              match-clients {external_ip;};

              zone "babyshen.com" in {

                        type master; # 指定我们要配置的是域主DNS服务器

                        file "zone.babyshen.com.external";  # 指定域的zone文件名

                        allow-update{none;};

              };

};


acl internal_ip {

              192.168.183.0/24;  # 定义内网地址

};


view "internal" {   # 定义内网IP的区域文件,这里注意view的时候所有的zone都要写在view区域里面

              match-clients  {internal_ip;};

              zone "babyshen.com" in {

                        type master;

                        file "zone.babyshen.com.internal";

                        allow-update{none;};

              };

};


view "default" {   # 默认的,匹配不到以上执行这个

                match-clients {any;};

                allow-query {any; };

};


logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};


4、建立zone.babyshen.com.external和zone.babyshen.com.internal文件

[root@centos etc]# cd /var/named

[root@centos named]# cat zone.babyshen.com.external

$TTL 60

@       IN SOA  babyshen.com admin.babyshen.com. (

                                        2016121201      ; serial

                                        86400   ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN      NS          ns1

ns1     IN      A           172.20.33.33

@       IN      A           172.20.33.33

www     IN      A           172.20.33.33

*       IN      A           172.20.33.33


[root@centos named]# cat zone.babyshen.com.internal

$TTL 60

@       IN SOA  babyshen.com admin.babyshen.com. (

                                        2016121201      ; serial

                                        86400   ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN      NS          ns1

ns1     IN      A           192.168.183.128

@       IN      A           192.168.183.128

www     IN      A           192.168.183.128

*       IN      A           192.168.183.128


5、检查文件是否有语法错误

1)检查主配置文件是否有错误

[root@centos named]# named-checkconf /etc/named.conf

2)检查区域文件是否有错误

[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external 

zone babyshen.com/IN: loaded serial 2016121201

OK

[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external

zone babyshen.com/IN: loaded serial 2016121201

OK


6、可以实现

1)当用192.168.183.0/24这个段去解析www.babyshen.com的时候,解析地址为192.168.183.128

2)当用172.20.32.0/22这个段去解析www.babyshen.com的时候,解析地址为172.20.33.33

3)当解析其他域名的时候(不在view里面的域名,即babyshen.com以外的域名),转发给180.76.76.76解析

即完成了DNS的简单部署,实现了DNS转发和view的实现



记录类型

1.A记录:A记录是来指定与主机名对应的IP地址记录,通俗的来说A记录就是服务器的IP地址,域名绑定A记录就是告诉DNS服务器,当你输入域名时引导你去正确的对应服务器。A记录就是域名的IP地址。


2.NS记录:NS记录为域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,注册域名后,会有一个默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析,一般NS记录出现的形式说,ns1.domain.xx.. ns2.domain.xx等等。NS记录就是指定由哪个DNS服务器来进行你的域名解析。


3.MX记录:MX记录为邮件交互记录,它指向一个邮件服务器,在使用mail系统时,发件人根据收件人地址的后缀来定位mail server。例如我们要发邮件给zjs@babyshen.com,我的邮件系统通过DNS查找到netpas.cc这个域名,继而查找到的MX记录,如果MX记录存在,我的计算机就将邮件发送到MX记录所指定的邮件服务器。


4.CNAME记录:CNAME记录为别名记录,允许多个名字映射到一台服务器上,通常用于提供多个服务。例如我有一台计算机域名为host.babyshen.com,需要同时提供mail服务和www服务。则全称为www.babyshen.com,和mail.babyshen.com。实际上这两个域名指向的都是host.babyshen.com。


5.TXT记录:TXT记录一般用于某个主机名或者域名的记录,IN TXT “location:””21vianet DAXING ROOM”这段应该是说明我们这台主机的存放位置的相关信息。TXT记录还有拓展的应用有SPF记录。SPF记录一般用于反垃圾游戏,MX记录作用是向发信人指明某个域名的邮件服务器有哪些。SPF记录则正好相反,SPF记录向收信者表明,哪些邮件服务器是经过某个域名的认可发邮件的。主要针对伪造域名的垃圾邮件。例如我的邮件服务器收到邮件是来自lfy@babyshen.com的邮件,那这份邮件到底是不是babyshen.com发送过来的。我们可以查询babyshen.com的SPF记录,防止别人伪造域名来发邮件。


6.TTL:简单的说TTL值就是一条域名解析记录在DNS服务器里的存留时间,当DNS服务器接收到解析请求时,会向域名指定的NS服务器发出解析请求从来获得解析记录,获得这条记录后,记录会在DNS服务器中保留一段时间这段时间DNS服务器不再向NS服务器发出请求,收到解析请求后直接返回。这个记录在DNS服务器上保存的时间就是TTL值。一般增大TTL值,可以节约域名解析时间,访问网站会加速。


7.PTR值:反向解析的记录类型,可以看出是A记录的反向。PTR主要用于邮件服务器,比如zjs@babyshen.com给lfy@babyshen.com发邮件,邮件服务器收邮件时会查看头文件,并分析是由哪个IP地址发出来的。然后根据这个IP地址进行反解,如果解析的结果和IP地址相对应就接受这封邮件,不对应就拒绝。


8.泛域名以及泛解析:泛域名是指在一个域名的根下,所有以同样形式未建立的子域名。例如*.babyshen.com。

泛解析是指把*.babyshen.com的A记录解析到某个IP地址上,通过访问任意的babyshen.com都能访问到你解析的站点上去。


9.SOA记录:初始授权记录,SOA记录表明了DNS服务器之间的联系,SOA记录表明了谁是这个域的所有者。一般用于主从服务器。

<1>Serial:表示当前DNS数据库的版本号,供从服务器判断是否需要从主服务器上获取新数据。


<2>Refresh:设置SDNS多长时间与MDNS连接一次。


<3>Retry:当SDNS向MDNS试图获取serial时候,如果MDNS无响应,多长时间重新检查。


<4>Expire:数值决定SDNS在没有MDNS权威的提供下解析域名的时间长短。


<5>Minimum:一些没有生存周期的解析记录的生存时间。


<6>Notify:可设置MDNS更新时都会主动通知SDNS。


本文出自 “baby神” 博客,请务必保留此出处http://babyshen.blog.51cto.com/8405584/1881989

DNS服务器简单配置和view实现