Linux下DNS服务器的操作实例(正/反向解析,主/从服务器搭建)

前言

本文重点在于后面的完整搭建步骤,前面会简单的说明一下用到的概念,如果有偏差处,欢迎各位批评指教。谢谢大家。

基本理论说明

DNS概述

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

DNS协议及端口

  • TCP 53(主从同步)
  • UDP 53(正常查询)
  • 启动脚本:/etc/init.d/named

DNS解析的作用

  • 正向解析:域名—->IP
  • 反向解析: IP—->域名

DNS相关配置文件

  • /etc/named.conf
  • /etc/named.rfc1912.zones
  • /var/named
  • /var/named/chroot

主配置文件片段:

listen-on port 53 { 192.168.4.5; };  //监听地址和端口
allow-query { any; };           //允许任何客户机查询
zone "wolf.com" IN {        //定义正向区域
    type master;          //区域类型为主DNS
    file "wolf.com.zone";   //区域数据文件
};

区域文件内容

$TTL 86400     //有效记录的生存周期
@ IN SOA   dns1.tarena.com.     root.tarena.com. (
    2013090901      //更新序号
    3H          //刷新时间
    15M             //重试间隔
    1W          //失效时间
    1D          //无效记录的生存周期
)
/*
站点名     类型  值
@       IN NS   DNS 1的完整域名.
@       IN NS   DNS 2的完整域名.
DNS 1的完整域名. IN A    DNS 1的IP地址
DNS 2的完整域名. IN A    DNS 2的IP地址
www     IN A    IP地址
IP地址主机位 IN PTR  完整的域名.
*/

语法检查工具:

named-checkconf  //主配置文件的路径
named-checkzone  //目标区域名  地址库文件的路径

DNS负载均衡,泛域名解析

  • DNS轮询(一个域名–> 多个IP地址)
www A   IP地址1
www A   IP地址2
www A   IP地址3

.. ..
  • 泛域名解析(多个域名 <–> 多个IP地址)
$GENERATE 100-200  station$      A   192.168.4.$
$GENERATE 100-200  $   PTR   station$.tarena.com.
  • 泛域名解析(多个域名 –> 一个IP地址)
*   A   IP地址

主从DNS(从服务器主要用来备份数据)

options {
     directory "默认的地址库文件保存位置";
     allow-transfer { 从DNS服务器的IP地址;  };
};
zone  "区域名" {       [tarena.com、4.168.192.in-addr.arpa]
     type  类型;      [masterslave]
     file  "地址库文件的文件名";
     masters { 主DNS服务的IP地址; };
};

实例操作

基本的DNS正向及反向解析

//安装DNS服务包,其中bind是主要实现DNS解析功能的包,bind-chroot则是禁锢解析目录的服务包
[root@server-2-99 ~]# yum -y bind bind-chroot 
//修改DNS服务主配置文件
[root@server-2-99 ~]# vim /etc/named.conf 
[root@server-2-99 ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    listen-on port 53 { any; }; //监听地址和端口,any表示任意地址
    directory   "/var/named";  //地址库文件所在目录
    allow-query     { any; };  //允许任意客户机查询
};

zone "wolf.com" IN {        //定义正向区域
    type master;        //区域类型为主DNS
    file "wolf.com.zone";   //地址库文件
};
zone "2.168.192.in-addr.arpa" IN {  //定义反向区域
        type master;
        file "192.168.2.arpa";
};
//检查配置语法,可以不进行此步操作
[root@server-2-99 ~]# named-checkconf /etc/named.conf 
//编辑DNS地址库文件
[root@server-2-99 ~]# cd /var/named/
[root@server-2-99 named]# ls -l
total 32
drwxr-x---. 6 root  named 4096 Dec 18 18:26 chroot
drwxrwx---. 2 named named 4096 Dec 18 18:26 data
drwxrwx---. 2 named named 4096 Dec 18 18:26 dynamic
-rw-r-----. 1 root  named 2075 Apr 23  2014 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost  //注意所属组,地址库模板文件
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named 4096 May 11  2015 slaves
//地址库文件需要保留所属组,来保证有相应的权限,这里使用-p选项保留对应的权限,也可是使用chown命令修改文件所有组
[root@server-2-99 named]# cp -p named.localhost wolf.com.zone 
[root@server-2-99 named]# ll wolf.com.zone named.localhost 
-rw-r-----. 1 root named 152 Jun 21  2007 named.localhost
-rw-r-----. 1 root named 152 Jun 21  2007 wolf.com.zone
//修改地址库文件
[root@server-2-99 named]# hostname 
server-2-99.wolf.com
[root@server-2-99 named]# vim wolf.com.zone 
[root@server-2-99 named]# cat wolf.com.zone 
$TTL 1D    //有效记录生存周期,目前表示1天
@   IN SOA  @ rname.invalid. (
                    0   ; serial    //更新序号,在主从DNS上会有作用,我们后面介绍
                    1D  ; refresh   //刷新时间
                    1H  ; retry //重试间隔
                    1W  ; expire    //失效时间
                    3H )    ; minimum   //无效记录的生存周期
// @ 表示站点名,在这里表示在主配置文件写的"wolf.com."
// NS 表示类型 
// A 表示正向解析
        NS  server-2-99.wolf.com.   //当前DNS服务器主机名
www     A   192.168.2.99        //www后面的内容会由“@”自动补全
ftp.wolf.com.   A   192.168.2.98    //这是完整的域名,注意要以“.”结尾
*   A   200.0.0.1               //当遇到不能识别的内容时,按此条记录解析 (一般只用在正向解析值中)
server      A   192.168.2.1     //DNS轮询——基于DNS的负载均衡
server      A   192.168.2.2     //一个域名 --> 多个不同的IP地址
server      A   192.168.2.3     //每个IP提供镜像服务内容
$GENERATE 10-90 pc$ A 192.168.2.$        //简化有规律的地址(A或PTR)记录
                            //$GEENRATE 和 “*”都属于泛域名解析

//检测配置语法,可不进行此操作
[root@server-2-99 named]# named-checkzone wolf.com  wolf.com.zone 
zone wolf.com/IN: loaded serial 0
OK
//配置反向域名解析配置文件
[root@server-2-99 named]# cp -p  named.localhost 192.168.2.arpa
[root@server-2-99 named]# vim 192.168.2.arpa 
[root@server-2-99 named]# cat 192.168.2.arpa
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  server-2-99.wolf.com.   
100 PTR www.wolf.com.
101 PTR vsftp.wolf.com.
$GENERATE 110-200 $ PTR pc$.wolf.com.

//重启named服务
[root@server-2-99 named]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]

服务端的操作就基本上到此为止,接下来就是测试验证了,当然也可以在服务端的这台机器操作,但模拟真实,这次我们新建一台客户端的机器来进行操作。
下面就是在客户端上的测试和验证:

// 配置客户机DNS地址文件,也可以不指定使用临时的方法进行测试
[root@pc-2-97 ~]# vim /etc/resolv.conf 
[root@pc-2-97 ~]# cat /etc/resolv.conf
nameserver 192.168.2.99

//正向解析结果验证
[root@pc-2-97 ~]# nslookup www.wolf.com
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   www.wolf.com
Address: 192.168.2.99

[root@pc-2-97 ~]# nslookup ftp.wolf.com
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   ftp.wolf.com
Address: 192.168.2.98

//泛域名解析验证
[root@pc-2-97 ~]# nslookup wwwwww.wolf.com
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   wwwwww.wolf.com
Address: 200.0.0.1

[root@pc-2-97 ~]# nslookup pc19.wolf.com
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   pc19.wolf.com
Address: 192.168.2.19

//DNS轮询验证
[root@pc-2-97 ~]# nslookup server.wolf.com
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   server.wolf.com
Address: 192.168.2.1
Name:   server.wolf.com
Address: 192.168.2.2
Name:   server.wolf.com
Address: 192.168.2.3

//临时测试方法
[root@pc-2-97 ~]# nslookup pc12.wolf.com 192.168.2.99
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   pc12.wolf.com
Address: 192.168.2.1

//反向解析验证
[root@pc-2-97 ~]# nslookup 192.168.2.100
Server:     192.168.2.99
Address:    192.168.2.99#53

100.2.168.192.in-addr.arpa  name = www.wolf.com.

[root@pc-2-97 ~]# nslookup 192.168.2.101
Server:     192.168.2.99
Address:    192.168.2.99#53

101.2.168.192.in-addr.arpa  name = vsftp.wolf.com.

[root@pc-2-97 ~]# nslookup 192.168.2.119
Server:     192.168.2.99
Address:    192.168.2.99#53

119.2.168.192.in-addr.arpa  name = pc119.wolf.com.

DNS服务的正向解析和反向解析,就基本上是这样了,还有一个是多区域解析,就是在/etc/named.conf文件中再添加一块配置文件,然后添加对应的地址库文件,在这里就不做演示了。

接下来,进行构建主/从DNS

主/从DNS服务搭建

操作流程:


//在主DNS服务器,即刚才搭建的server-2-99服务机上,修改DNS主配置文件
[root@server-2-99 named]# vim /etc/named.conf
//这里我只显示了修改的一部分,其它地方和之前保持一致即可
options {
        listen-on port 53 { any; };
        directory       "/var/named";
        allow-query     { any; };
        allow-transfer { 192.168.2.98; };   //添加从服务器地址,注意ip和“{}”的前后都需要有一个空格,没有的话,可能会报错,不能启动服务器
};
//测试主从服务器新添加的区域,也可以使用之前的“wolf.com”
zone "war.com" IN {
        type master;
        file "war.com.zone";
};

//配置地址库文件,和之前一致
[root@server-2-99 named]# pwd 
/var/named
[root@server-2-99 named]# cp -p wolf.com.zone war.com.zone
[root@server-2-99 named]# vim war.com.zone 
[root@server-2-99 named]# cat war.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  server-2-99.wolf.com.
www     A   192.168.2.99
ftp.war.com.    A   192.168.2.98
*       A   200.0.0.1
server      A   192.168.2.1
server      A   192.168.2.2
server      A   192.168.2.3
$GENERATE 10-90 pc$ A 192.168.2.$
[root@server-2-98 ~]# yum -y install bind bind-chroot
[root@server-2-98 ~]# vim /etc/named.conf 
[root@server-2-98 ~]# cat /etc/named.conf 
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    listen-on port 53 { any; };
    directory   "/var/named";
    allow-query     { any; };
};

zone "war.com" IN {
    type slave;
    file "slaves/war.com.zone";     //注意路径发生了改变,地址库文件在从服务器不需要配置,会自动从主服务器同步
    masters { 192.168.2.99; };  //主服务器地址
};
[root@server-2-98 ~]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定

[root@server-2-98 ~]# ls /var/named/slaves/
war.com.zone                    //文件已经同步
[root@server-2-98 ~]# cat /var/named/slaves/war.com.zone 
$ORIGIN .
$TTL 86400 ; 1 day
war.com         IN SOA  war.com. rname.invalid. (
                0          ; serial
                86400      ; refresh (1 day)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                10800      ; minimum (3 hours)
                )
            NS  server-2-99.wolf.com.
$ORIGIN war.com.
*           A   200.0.0.1
ftp         A   192.168.2.98
pc10            A   192.168.2.10
pc11            A   192.168.2.11
pc12            A   192.168.2.12
……
pc88            A   192.168.2.88
pc89            A   192.168.2.89
pc90            A   192.168.2.90
server          A   192.168.2.1
            A   192.168.2.2
            A   192.168.2.3
www         A   192.168.2.99

那么现在主从DNS服务器的配置已经全部完成,现在我们去客户机上进行验证

//这里就简单写两个验证结果就好,其它的就不一一贴出了
[root@pc-2-97 ~]# nslookup www.war.com 192.168.2.99
Server:     192.168.2.99
Address:    192.168.2.99#53

Name:   www.war.com
Address: 192.168.2.99

[root@pc-2-97 ~]# nslookup www.war.com 192.168.2.98
Server:     192.168.2.98
Address:    192.168.2.98#53

Name:   www.war.com
Address: 192.168.2.99

你可能感兴趣的:(Linux,云计算,DNS)