Linux下DNS简单部署(主从域名服务器)

 

一、DNS简介
DNS(Domain Name System),域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。

二、DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。

主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

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

根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色:
1)缓存域名服务器,也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度

2)主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录

3)从域名服务器(通俗一点就是用于备份DNS服务器的)
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)

三、DNS服务环境部署记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
1)安装DNS服务所需要的软件包
[root@test ~]# yum -y install bind bind-chroot bind-util bind-libs
------------------------------------------------------------------------------------------------
解释:
bind           提供了域名服务的主要程序及相关文件
bind-utils     提供了对DNS服务器的测试工具程序(如nslookupdig等)
bind-chroot    为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
------------------------------------------------------------------------------------------------
  
2)DNS服务器的配置(服务端要能联网)
[root@test ~]# cp /etc/named.conf /etc/named.conf.bak
[root@test ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };      #使用53端口监听,默认监听的是127.0.0.1,这里修改为any(或者直接修改为服务端的ip地址,如服务器ip为192.168.1.24)
        listen-on-v6 port 53 { ::1; };            #监听ipv6的IP地址选项
        directory       "/var/named";             #DNS的根目录,由于安装了bind-chroot的所致,因此服务的实际工作目录为/var/named/chroot/var/named
        dump-file       "/var/named/data/cache_dump.db";      #缓存转储文件
        statistics-file "/var/named/data/named_stats.txt";    #记录了内存使用的统计信息
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };         #允许查询的主机,默认为localhost,这里修改为any
        recursion yes;                    #可以递归查询
          
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
   
logging {                               #named服务的日志文件信息
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                        #根(.)域的配置及信息(也可以通过其它上级域名转发功能来配置缓存域名服务器,可以去了解下)
                                                                       
        type hint;
        file "named.ca";
};
  
[root@test ~]# chmod 770 /var/named/
[root@test ~]# ls -lh /etc/named.conf
-rw-r-----. 1 root named 984 Nov 20  2015 /etc/named.conf
[root@test ~]# /etc/init.d/named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@test ~]# ps -ef|grep name
named     1592     1  0 15:03 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
root      1614 32378  0 15:03 pts/0    00:00:00 grep name
  
[root@test ~]# netstat -tunlp|grep named
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1592/named        
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      1592/named        
tcp        0      0 ::1:53                      :::*                        LISTEN      1592/named        
tcp        0      0 ::1:953                     :::*                        LISTEN      1592/named        
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1592/named        
udp        0      0 ::1:53                      :::*                                    1592/named
  
3)客户端测试
将上面服务器的ip地址添加到客户端的/etc/resolv.conf文件里
[root@test2 ~]# cat /etc/resolv.conf
nameserver 192.168.1.24                          //此处的192.168.1.24是上面DNS服务器的ip地址
  
[root@test2 ~]# ping www.baidu.com
PING www.a.shifen.com (119.75.213.51) 56(84) bytes of data.
64 bytes from 119.75.213.51: icmp_seq=1 ttl=55 time=2.58 ms
64 bytes from 119.75.213.51: icmp_seq=2 ttl=55 time=2.29 ms
.......
  
[root@test2 ~]# dig www.baidu.com
  
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55147
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5
  
;; QUESTION SECTION:
;www.baidu.com.         IN  A
  
;; ANSWER SECTION:
www.baidu.com.      1100    IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   200 IN  A   119.75.213.50
www.a.shifen.com.   200 IN  A   119.75.213.51
  
;; AUTHORITY SECTION:
a.shifen.com.       1100    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns2.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns3.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns1.a.shifen.com.
a.shifen.com.       1100    IN  NS  ns5.a.shifen.com.
  
;; ADDITIONAL SECTION:
ns5.a.shifen.com.   1100    IN  A   119.75.222.17
ns3.a.shifen.com.   1100    IN  A   61.135.162.215
ns4.a.shifen.com.   1100    IN  A   115.239.210.176
ns1.a.shifen.com.   1100    IN  A   61.135.165.224
ns2.a.shifen.com.   1100    IN  A   180.149.133.241
  
;; Query time: 1 msec
;; SERVER: 192.168.1.233#53(192.168.1.233)
;; WHEN: Wed Jun 21 15:12:20 2017
;; MSG SIZE  rcvd: 260
  
------------注意事项-------------
客户端必须要跟服务器端能够通信(能ping通)及关闭selinux
  
---------------------------------------扩展-------------------------------------------
上面在/etc/named.conf文件里没有自定义域名去进行解析设置,下面说下自定义域名的设置:
1) DNS主域名服务器配置
  
[root@test ~]# cp /etc/named.conf /etc/named.conf2.bak
[root@test ~]# vim /etc/named.conf               #追加下面内容,即添加wangshibo.com域名配置。如果有多个域名,就如下添加多个类似配置。
......
zone "wangshibo.com" IN {                       #指定区名。正向解析
        type master;                            #服务器类别,master为主域名
        file "wangshibo.com_zone";              #正向解析区域文件名wangshibo.com_zone,在/var/named目录下创建
        allow-transfer {192.168.1.23;};         #指定从(辅助)域名服务器IP。即DNS从服务器的ip是192.168.1.23
};
zone "1.168.192.in-addr.arpa" IN {        #域名对应的ip地址网段为192.168.1.0,此处必须按照相 。反向解析                                          同的格式写
        type master;
        file "192.168.1.zone";               #反向解析文件名192.168.1.zone
        allow-transfer {192.168.1.23;};
};
  
[root@test ~]# vim /var/named/wangshibo.com_zone
$TTL 1D
@       IN SOA  ns1.wangshibo.com. mail.www.wangshibo.com. (
                                        2014102101    #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
                                        1D   
                                        1H    
                                        1W   
                                        3H ) 
@               IN      NS      ns1.wangshibo.com.            #主域名的域名地址。NS是域名服务器
ns1.wangshibo.com.    IN      A       192.168.1.24            #主域名的ip地址
@               IN      NS      ns2.wangshibo.com.            #从域名的域名地址。NS是域名服务器
ns2.wangshibo.com.    IN      A       192.168.1.23            #从域名的ip地址
@               IN      MX 10   mail.ww.wangshibo.com.        #邮件服务器的域名地址
mail.www.wangshibo.com.  IN   A       192.168.1.4           
www.wangshibo.com.    IN      A       192.168.1.2
ftp.wangshibo.com     IN      A       192.168.1.3
win7.wangshibo.com.   IN      A       192.168.1.224
linux.wangshibo.com.  IN      CNAME   ns1.wangshibo.com.
smb.wangshibo.com.    IN      CNAME   ns1.wangshibo.com.
dhcp.wangshibo.com.   IN      CNAME   ns1.wangshibo.com.
  
[root@test ~]# vim /var/named/192.168.1.zone
$TTL 1D                      
@       IN SOA  ns1.wangshibo.com. mail.www.wangshibo.com. (
                                        2014102101    #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
                                        1D
                                        1H
                                        1W    
                                        3H )  
@               IN      NS      ns1.wangshibo.com.
@               IN      NS      ns2.wangshibo.com.
24              IN      PTR     ns1.wangshibo.com.
23              IN      PTR     ns2.wangshibo.com.
@               IN      MX 10   mail.www.wangshibo.com.
4               IN      PTR     mail.www.wangshibo.com.
2               IN      PTR     www.wangshibo.com.
3               IN      PTR     ftp.wangshibo.com.
23             IN      PTR     win7.wangshibo.com.
  
[root@test ~]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
  
在客户端测试
[root@test2 ~]# cat /etc/resolv.conf
search wangshibo.com
nameserver 192.168.1.24
  
[root@test2 ~]# dig www.wangshibo.com
  
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.wangshibo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29152
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
  
;; QUESTION SECTION:
;www.wangshibo.com.     IN  A
  
;; ANSWER SECTION:
www.wangshibo.com.  86400   IN  A   192.168.1.2
  
;; AUTHORITY SECTION:
wangshibo.com.      86400   IN  NS  ns2.wangshibo.com.
wangshibo.com.      86400   IN  NS  ns1.wangshibo.com.
  
;; ADDITIONAL SECTION:
ns1.wangshibo.com.  86400   IN  A   192.168.1.24
ns2.wangshibo.com.  86400   IN  A   192.168.1.23
  
;; Query time: 1 msec
;; SERVER: 192.168.1.24#53(192.168.1.24)       #注意这行,说明是主DNS从域名服务器解析的
;; WHEN: Wed Jun 21 15:39:09 2017
;; MSG SIZE  rcvd: 119
  
  
1) DNS从域名服务器配置
从域名服务器的ip为192.168.1.23
服务的安装过程在上面已介绍,此处省略
[root@test33 ~]# cp /etc/named.conf /etc/named.conf.bak
[root@test33 ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
  
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
  
logging {                         
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                 
                                                                
        type hint;
        file "named.ca";
};
  
zone "wangshibo.com" IN {
        type slave;
        file "wangshibo.com_zone";
        masters {192.168.1.24;};
};
zone "1.168.192.in-addr.arpa" IN {
        type slave;
        file "192.168.1.zone";
        masters {192.168.1.24;};
};
  
[root@test33 ~]# chmod 770 /var/named/
[root@test33 ~]# ll /var/named/ -d
drwxrwx---. 6 root named 4096 Jun 21 15:44 /var/named/
  
[root@test33 ~]# service named restart
Stopping named:                                            [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
  
客户端测试
[root@test2 ~]# dig @192.168.1.23 www.wangshibo.com
  
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> @192.168.1.23 www.wangshibo.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12862
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
  
;; QUESTION SECTION:
;www.wangshibo.com.     IN  A
  
;; ANSWER SECTION:
www.wangshibo.com.  86400   IN  A   192.168.1.2
  
;; AUTHORITY SECTION:
wangshibo.com.      86400   IN  NS  ns2.wangshibo.com.
wangshibo.com.      86400   IN  NS  ns1.wangshibo.com.
  
;; ADDITIONAL SECTION:
ns1.wangshibo.com.  86400   IN  A   192.168.1.24
ns2.wangshibo.com.  86400   IN  A   192.168.1.23
  
;; Query time: 1 msec
;; SERVER: 192.168.1.23#53(192.168.1.23)                 #注意这行,说明是从DNS从域名服务器解析的
;; WHEN: Wed Jun 21 15:53:47 2017
;; MSG SIZE  rcvd: 119
  
最后,在客户机的/etc/resolv.conf文件里添加上面主从DNS地址,就可以正常解析上面在/var/named/192.168.1.zone里设置的域名了
# vim /etc/resolv.conf
nameserver 192.168.1.24
nameserver 192.168.1.23
 
-----------------------------------------注意事项--------------------------------------------
a)如果还是无法解析,请返回主域名服务器的/var/named目录给区域配置文件加上权限(单纯是为了练习的话,可以加到最大权限到777)
b)以上的练习都是在关闭防火墙与seLinux的状态下操作的,如果防火墙开启,可自行去添加规则

最后务必查看下/var/log/messages日志的内容,查看DNS主从是否启动正常,是否实现了同步。

posted @   散尽浮华  阅读(4016)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
点击右上角即可分享
微信分享提示