码迷,mamicode.com
首页 > 其他好文 > 详细

漫漫运维路——网络服务之DNS

时间:2015-04-27 23:57:07      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:dns   bind   

一.DNS和BIND是什么?

DNS即Domain Name Service的缩写,即为域名服务。在网络出现以后,计算机的通信就是通过IP地址加端口号等形式来进行,人对于数字的记忆往往却有限,随着连入网络的用户的不断增多,用户需要记住的IP地址越来越多,早期为了方便使用,把每一个IP地址对应为一个主机名,如:www.domainname.com对应1.1.1.1形式,并把此种对应关系统一记录于/etc/hostsGNU/Linux下,windows则有所差异)文件中。但是后来连入网络的用户越来越多,管理hosts文件显得十分繁琐,随后伯克利便研发出了专门实现将域名自动转换为IP地址的服务,名为BIND,所以BINDDNS的一种实现,但是由于现在DNS服务基本都是基于BIND或者使用BIND进行二次开发的软件来实现,所以BIND几乎成了DNS的代名词。

二.域以及BIND的工作方式

由于联网的用户越来越多,为了方便管理和实现,把域名又划分为多个层级,以’.’隔开,类似乎www.abcd.com这样的域名,且从左往右依次层级更高,即com>abcd>www,按照这样的等级,最右边的域一般为顶级域。然后负责管理其下一级的域名,在此约定把com称作bdcd域的父域,bdcd称为com的子域,com是一个顶级域,现在各种常见顶级域如下所示:

名称

含义

com

公司、企业、营利机构

org

组织、非营利机构

edu

教育机构

cn

国家或地区类(中国)

gov

政府单位

net

网络、通信类

mil

军事单位

BIND的工作方式:

BIND在进行域名解析时,会根据用户主机上设置的DNS服务器地址,首先找该地址,当设置的那台DNS服务器上没有用户所需要的相关记录时,如果该服务器设置可对当前主机进行递归查询,那么该服务器就会去找根服务器,在此所谓的根服务器就是放置在世界各地的十三台特殊域名服务器,他们负责管理所有的域名相关事务。然后根服务器会根据用户查询的内容反馈信息,比如要解析的是一个com域,那么根服务器就会告诉当前服务器去找负责com域的相关DNS服务器,然后当前DNS就会根据根反馈的com域的信息区找com,而如果com服务器上所负责的子域下有当前DNS要找的相关记录,则也会反馈下一级域名服务器的信息,以此类推,知道找到真正负责解析用户所给域名的服务器为止。

三.搭建自己的DNS服务器

由于要想搭建一个能在网络中用的DNS服务器需要向上级注册并得到上级的许可才行,所以在此仅搭建一个能在局域网环境中用的DNS服务器。

1.实现解析自己的域名

实验部署如下

域名

IP地址

www.linuxedu.com

192.168.2.101

dns.linuxedu.com

192.168.2.102

mail.linuxedu.com

192.168.2.103

ftp.linuxedu.com

192.168.2.101

如上所示,在当前局域网内使用域名linuxedu.com,域名内有三台主机,wwwdnsmail,其中www主机有个别名,名为ftp

步骤:

I 安装BIND编辑其主配置文件,bind所需要的安装包为bind-libs (bind库文件)bind-utils(bind其他组件)和bind.x86_64 (bind主程序包),一般来说lib和util已经默认安装,所以直接安装bind主程序即可。

[root@localhost named]# yum remove bind -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.8.2-0.30.rc1.el6 will be erased
--> Finished Dependency Resolution
 
Dependencies Resolved
 
Installed:
  bind.x86_64 32:9.8.2-0.30.rc1.el6                                                                                              
......#中间信息已省略
Complete!


II 配置bind的主配置文件/etc/named.conf如下

options {
        directory "/var/named/";
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
};


III 为DNS服务器提供区域文件

在主配置文件中已经把BIND的工作目录定位到了/vae/named下,现在切换目录到/var/named/DNS提供区域文件

首先生成根域文件

[root@localhost named]# dig -t NS . >named.ca


新建本地回环地址正向区域文件(localhost.zone)如下

$TTL 600
@       IN      SOA     loacalhost.     localhost. (
                        2015042501
                        2M
                        3M
                        1D
                        1D
 
                        );
        IN      NS      localhost.
localhost.      A       127.0.0.1
~                                       

 

为本地回环地址提供反向解析区域(1.0.0.127.in-addr.arpa.zone)文件如下

$TTL    600
@       IN      SOA     0.0.127.in-addr.arpa.   0.0.127.in-addr.arpa. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      localhost.
1       IN      PTR     localhost.


提供linuxedu.com域的正向解析区域文件(linuxedu.com.zone),文件内容如下

$TTL    600
$ORIGIN linuxedu.com.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
ns      IN      A       192.168.2.102
www     IN      A       192.168.2.101
ftp     IN      CNAME   www.linuxedu.com.
mail    IN      A       192.168.2.103


linuxedu.com域提供反向解析区域文件(2.168.192.in-addr.arpa.zone)。其内容如下

$TTL    600
$ORIGIN 2.168.192.in-addr.arpa.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
2       IN      PTR     ns.linuxedu.com.
1       IN      PTR     www.linuxedu.com.
ftp     IN      CNAME   www.linuxedu.com.
3


修改主配置文件和区域文件的属组为named组并修改其权限为640

 [root@localhost named]# chown :named /etc/named.conf /var/named/*;chmod 640 /etc/named.conf /var/named/*


检查主配置文件和区域文件是否有语法错误

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone "linuxedu.com" /var/named/linuxedu.com.zone 
zone linuxedu.com/IN: loaded serial 2015042501
OK
[root@localhost named]# named-checkzone "2.168.192.in-addr.arpa" /var/named/2.168.192.in-addr.arpa.zone 
zone 2.168.192.in-addr.arpa/IN: loaded serial 2015042501
OK

重启服务器并测试

[root@localhost named]# dig -t A www.linuxedu.com @127.0.0.1
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.linuxedu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10358
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.linuxedu.com.INA
 
;; ANSWER SECTION:
www.linuxedu.com.600INA192.168.2.101
 
;; AUTHORITY SECTION:
linuxedu.com.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:54:02 2015
;; MSG SIZE  rcvd: 83

测试反向解析                                         

[root@localhost named]# dig -x 192.168.2.101 @127.0.0.1 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.101 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36267
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;101.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
101.2.168.192.in-addr.arpa. 600INPTRwww.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:58:50 2015
;; MSG SIZE  rcvd: 107


到此本实验成功  

 

2.使用DNS实现主从同步

在现实生产环境中,一台DNS往往是不够的,因为要考虑其宕机的情景,所以至少得有一台为备用,在此在局域网环境内实现两台DNS服务器,并实现主从同步。

以实验1的域名为例,并且新增一台DNS,其ip地址为192.168.1.121,设置其为从服务器。

按照上实验步骤安装好bind程序后,修改其主配置文件(/etc/named.conf),改其内容如下所示

options {
        directory "/var/named";
};
zone "." IN {
        type hint;
        file "named.ca";
        };
zone "linuxedu.com" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/linuxedu.com.zone";
 
};
zone "2.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/2.168.192.in-addr.arpa.zone";
};


由于其为从服务器,其区域文件从主服务器上传输过来,所以不需要为其提供区域配置文件。接下来修改主服务器配置

Zone内部添加如下一条

allow-transfer { 192.168.2.121; };#:此意味允许从服务器进行区域传输注,根zone不能进行区域传输

重启服务器并测试

[root@slaver slaves]# ll
total 0
[root@slaver slaves]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@slaver slaves]# ll
total 8
-rw-r--r--. 1 named named 463 Apr 26 06:23 2.168.192.in-addr.arpa.zone
-rw-r--r--. 1 named named 412 Apr 26 06:23 linuxedu.com.zone

由上可以看到,两个区域文件已经传送过来了。

解析测试

正向解析

ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:33 2015
;; MSG SIZE  rcvd: 83


反向解析

[root@slaver slaves]# dig -x 192.168.2.103 @192.168.2.121
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.103 @192.168.2.121
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12803
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;103.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
103.2.168.192.in-addr.arpa. 600INPTRmail.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 2 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:52 2015
;; MSG SIZE  rcvd: 108

3.正向区域授权

域名是有等级的,因为域名是按一层层实现查找,所以下级域名要想起作用就得上级域名服务器对其授权。

在此以上个实验做slave的服务器来做子域,其域名为net.linuxedu.com,然后使用上个实验的master做父域,对其授权。子域IP地址规划如下:

主机

IP地址

www

172.16.35.1

mail

172.16.35.3

ns

172.16.35.2

ftp

172.16.35.1

 

首先编辑父域dnslinuxedu.com域,添加如下新条目,

net     IN      NS      ns.net.linuxedu.com.

ns.net  IN      A       192.168.2.121

在父域dns的主配置文件的全局配置段options内添加两天选项

dnssec-enable no;

dnssec-validation yes;

然后编辑子域服务,首先编辑其主配置文件

options {

        directory "/var/named";

};

zone "." IN {

        type hint;

        file "named.ca";

        };

zone "net.linuxedu.com" IN {

        type master;

        file "net.linuxedu.com.zone";

 

};

编辑子域区域文件内容(net.linuxedu.com.zone ),内容如下

$ORIGIN .

$TTL 600        ; 10 minutes

net.linuxedu.com                IN SOA  ns.linuxedu.com. mail.linuxedu.com. (

                                2015042501 ; serial

                                60         ; refresh (1 minute)

                                300        ; retry (5 minutes)

                                86400      ; expire (1 day)

                                86400      ; minimum (1 day)

                                )

                        NS      ns.linuxedu.com.

                        MX      10 mail.linuxedu.com.

$ORIGIN net.linuxedu.com.

ftp                     CNAME   www

mail                    A       172.16.35.3

ns                      A       172.16.35.2

www                     A       172.16.35.1

~检查语法错误确定无误后重启服务解析测试

解析测试            

技术分享

                                 

4.使用ACLview实现针对客户端的智能DNS解析

在生产环境中,有时需要把来自不同客户端的解析请求解析为不同的IP地址,此时就可以使用ACLview实现对来自客户端的请求加以控制。

首先来说ACLACLAccess Countrol List的缩写,在bind中可以将不同的网络地址归到一个ACL列表里,然后直接对该表实现设置访问控制权限即可,BIND中的访问控制列表默认有四个分别为:

any;:任何人

none;:任何人都不能

localhost;:本机

localnets;:本机所在网络

1:定义个访问控制列表,控制只响应来自192.168.2.121的主机对linuxedu.com域的解析请求

修改配置文件,在主机192.168.2.120中添加访问控制列表,内容如下

acl bxy {
        192.168.2.121;
};


然后在zone内添加如下图所示内容

 

技术分享


 

重启服务器测试

技术分享


        

技术分享

 

2:使用视图实现将来自不同主机的同一个解析请求解析为不同的地址

以上述搭建好的环境为例,以192.168.2.120做服务器,然后让来自192.168.2.120解析linuxedu.com解析为192.168.2网段,让来自192.168.2.107的主机解析linuxedu.com解析为192.168.1网段。

修改服务器主配置文件,主配置文件内容如下

options {
        directory "/var/named/";
};
acl liebiao1 {
        192.168.2.121;#
};
acl liebiao2 {
        192.168.2.107;
};
view jiexi1 {   #视图1 用来定义acl liebiao1中主机解析的请求去向
match-clients { liebiao1; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
 
};
};


view jiexi2 { #视图用来控acl liebiao2中的主机的解析去向

match-clients { liebiao2; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone.1";
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.in-addr.arpa.zone";
 
};
};


            

测试:

    使用192.168.2.107解析

技术分享

    使用192.168.2.121解析

技术分享


总算写完了,虽然还要编译啥的没写 不过来不及了,明天还得上课。。

本文出自 “linux-冒泡” 博客,请务必保留此出处http://7703592.blog.51cto.com/7693592/1639409

漫漫运维路——网络服务之DNS

标签:dns   bind   

原文地址:http://7703592.blog.51cto.com/7693592/1639409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!