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  类型;      [master、slave]
     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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容