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

来源:互联网 发布:淘宝店铺过户近亲属 编辑:程序博客网 时间:2024/04/20 15:14

前言

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

基本理论说明

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地址1www A   IP地址2www 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 -ltotal 32drwxr-x---. 6 root  named 4096 Dec 18 18:26 chrootdrwxrwx---. 2 named named 4096 Dec 18 18:26 datadrwxrwx---. 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.loopbackdrwxrwx---. 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 0OK//配置反向域名解析配置文件[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.confnameserver 192.168.2.99//正向解析结果验证[root@pc-2-97 ~]# nslookup www.wolf.comServer:     192.168.2.99Address:    192.168.2.99#53Name:   www.wolf.comAddress: 192.168.2.99[root@pc-2-97 ~]# nslookup ftp.wolf.comServer:     192.168.2.99Address:    192.168.2.99#53Name:   ftp.wolf.comAddress: 192.168.2.98//泛域名解析验证[root@pc-2-97 ~]# nslookup wwwwww.wolf.comServer:     192.168.2.99Address:    192.168.2.99#53Name:   wwwwww.wolf.comAddress: 200.0.0.1[root@pc-2-97 ~]# nslookup pc19.wolf.comServer:     192.168.2.99Address:    192.168.2.99#53Name:   pc19.wolf.comAddress: 192.168.2.19//DNS轮询验证[root@pc-2-97 ~]# nslookup server.wolf.comServer:     192.168.2.99Address:    192.168.2.99#53Name:   server.wolf.comAddress: 192.168.2.1Name:   server.wolf.comAddress: 192.168.2.2Name:   server.wolf.comAddress: 192.168.2.3//临时测试方法[root@pc-2-97 ~]# nslookup pc12.wolf.com 192.168.2.99Server:     192.168.2.99Address:    192.168.2.99#53Name:   pc12.wolf.comAddress: 192.168.2.1//反向解析验证[root@pc-2-97 ~]# nslookup 192.168.2.100Server:     192.168.2.99Address:    192.168.2.99#53100.2.168.192.in-addr.arpa  name = www.wolf.com.[root@pc-2-97 ~]# nslookup 192.168.2.101Server:     192.168.2.99Address:    192.168.2.99#53101.2.168.192.in-addr.arpa  name = vsftp.wolf.com.[root@pc-2-97 ~]# nslookup 192.168.2.119Server:     192.168.2.99Address:    192.168.2.99#53119.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.99ftp.war.com.    A   192.168.2.98*       A   200.0.0.1server      A   192.168.2.1server      A   192.168.2.2server      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 daywar.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.1ftp         A   192.168.2.98pc10            A   192.168.2.10pc11            A   192.168.2.11pc12            A   192.168.2.12……pc88            A   192.168.2.88pc89            A   192.168.2.89pc90            A   192.168.2.90server          A   192.168.2.1            A   192.168.2.2            A   192.168.2.3www         A   192.168.2.99

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

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