DNS

简介:

  计算机通信使用的是ip和端口的方式,但是我们平时分为访问网站却是使用的网站名字,计算机是如何识别我们的主机的。是互联网中的网站那么多,难到我们需要把所有主机的ip和对应的名字记录在本地。世界那么多主机都记录这显然不合理,既然自己的主机不能把所有主机的信息记录,那么我们需要借助其他工具帮助我们翻译,DNS应运而生。

 DNS解析原理

  DNS是一个集群,他们是多个DNS服务器联合起来一起解析域名和ip的关系,因为主机名和ip的对应关系的数据量特别大,一台计算机完不成这个工作。所有把主机的名字分为三段。这里以一个例子介绍一下。www.baidu.com.

百度这域名的第一段是最后的.,这个.我们一般都是省略不写的,这个.的功能有全球的13个服务器提供服务,详细情况可以使用下面这个命令查看(假如没有这个文件,需要安装bind包,假如主机可以连接互联网我们就使用yum install bind -y安装,没有的话就只好使用其它主机下载安装包,然后使用rpm -ivh PECKAGE

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
[root@centos6 ~] # vim /var/named/named.ca
; <<>> DiG9.9.4-P2-RedHat-9.9.4-12.P2 <<>> +norec NS . @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR,  id : 26229
;; flags: qr aa; QUERY: 1, ANSWER: 13,AUTHORITY: 0, ADDITIONAL: 24
  
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;.              IN  NS
  
;; ANSWER SECTION:
.          518400  IN  NS a.root-servers.net.
.          518400  IN  NS b.root-servers.net.
.          518400  IN  NS c.root-servers.net.
.          518400  IN  NS d.root-servers.net.
.          518400  IN  NS e.root-servers.net.
.          518400  IN  NS f.root-servers.net.
.          518400  IN  NS g.root-servers.net.
.          518400  IN NS  h.root-servers.net.
.          518400  IN  NS i.root-servers.net.
.          518400  IN  NS j.root-servers.net.
.          518400  IN  NS k.root-servers.net.
.          518400  IN  NS l.root-servers.net.
.          518400  IN  NS m.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net. 518400  IN A   198.41.0.4
b.root-servers.net. 518400  IN A   192.228.79.201
c.root-servers.net. 518400  IN A   192.33.4.12
d.root-servers.net. 518400  IN A   199.7.91.13
e.root-servers.net. 518400  IN A   192.203.230.10
f.root-servers.net. 518400  IN A   192.5.5.241
g.root-servers.net. 518400  IN A   192.112.36.4
h.root-servers.net. 518400  IN A   128.63.2.53
i.root-servers.net. 518400  IN A   192.36.148.17
j.root-servers.net. 518400  IN A   192.58.128.30
k.root-servers.net. 518400  IN A   193.0.14.129
l.root-servers.net. 518400  IN A   199.7.83.42
m.root-servers.net. 518400  IN A   202.12.27.33
a.root-servers.net. 518400  IN AAAA    2001:503:ba3e::2:30
c.root-servers.net. 518400  IN AAAA    2001:500:2::c
d.root-servers.net. 518400  IN AAAA    2001:500:2d::d
f.root-servers.net. 518400  IN AAAA    2001:500:2f::f
h.root-servers.net. 518400  IN AAAA    2001:500:1::803f:235
i.root-servers.net. 518400  IN AAAA    2001:7fe::53
j.root-servers.net. 518400  IN AAAA    2001:503:c27::2:30
k.root-servers.net. 518400  IN AAAA    2001:7fd::1
l.root-servers.net. 518400  IN AAAA    2001:500:3::42
m.root-servers.net. 518400  IN AAAA    2001:dc3::35
  
;; Query  time : 58 msec
;; SERVER: 198.41.0.4 #53(198.41.0.4)
;; WHEN: Wed Apr 23 14:52:37 CEST 2014
;; MSG SIZE rcvd: 727

其中包含IN AIN AAAA对应行的ip就是这13.服务器的。这13.提供下一级域名服务器的ip地址,比如提供com这个域名的ipcom服务器中提供下一级baidu域名的解析,www就是对应的主机。具体怎么提高域名解析服务器的,接下来说。

DNS配置文件和作用

       DNS的配置文件大致分为两个部分。

第一部分

   位于/etc/目录下的文件,主要的文件时named.conf

打开named.conf,这里我们只捡几个重要的配置内容介绍,这个配置文件分为四段。

  • 第一段是options,这里定义的是对整个DNS服务器生效的内容

1
2
3
4
5
6
7
8
9
10
//   listen-on port 53 {127.0.0.1; };  #这一行定义的ipv4监听的端口
     listen-on-v6 port 53 {::1; };  #监听ipv6监听的端口
     directory    "/var/named" #域配置文件的路径和数据存储路径,后面配置的相对路径都是相对这个路径的
     dump- file    "/var/named/data/cache_dump.db" #缓存文件位置
//   allow-query     { localhost; };  #定义为哪些主机提供DNS服务
     recursion  yes #自己没有的域名是否去其它DNS查找,以后称为递归,这很重要
     forward only;  #刚安装的bind,没有这一行需要自己写,意思是是否把DNS请求转移到其它主机,only也可以换成first,first的意思是先转发,假如转发的请求没有得到回复,就自己去查找
     forwarders {172.16.29.8;}; #和上一条一起使用,转动哪个DNS服务器
     dnssec- enable  no;
     dnssec-validation no;  #和上一条一起定义是否启用安全功能


  • 第二段是logging记录日志

1
file  "data/named.run" #日志存储位置

  • 第三段是zone “.” IN定义.服务器的地址的内容


1
2
type  hint;  #hint代表.的类型,还有其它类型下一部分解释
file  "named.ca" #13个.服务器的ip
  • 第四段定义额外的配置文件

1
2
include "/etc/named.rfc1912.zones" #定义域的文件
include "/etc/named.root.key" #安全通信的key

第二部分

  /etc/named.rfc1912.zones内的配置内容和第三段的类似,在第一部分定义了directory  "/var/named",这一行代表以后我们所有的数据放在这个目录。

这里以一个例子介绍,在这个例子中我们创建一个DNS服务器。

  首先编辑/etc/named.rfc1912.zones文件,添加如下内容,为DNS服务器添加一个域oldking.org

1
2
3
4
5
[root@centos7 ~] # vim/etc/named.rfc1912.zones
zone  "oldking.org"  {
type  master;
file  "oldking.org.zone" ;
};

然后编辑oldking.org域的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@centos7 ~] # vim /var/named/oldking.org.zone
$TTL 86400  #它表示一条域名解析记录在DNS服务器上缓存时间
@ IN SOA ns1 oldking (  #@是引用这个配置文件对应域名,SOA代表域名配置信息,ns1主DNS解析服务器,oldking邮箱
2016120601  #版本好
1H  #刷新时间
3M  #刷新失败后,等等多长时间重试
7D  #几天后失效
1D)  #失效时间过了后,几天这条记录不再有作用
@ IN NS ns1
@ IN NS ns2
ns1 IN A 172.16.29.6
ns2 IN A 172.16.29.7
www IN A 172.16.29.6

  以上这几条我不一条一条解释只解释第三个字段

NS 对应域的DNS服务器有哪几个

主机名对应的ipv4地址

AAAA 主机名对应的ipv6地址

MX 对应域的邮件服务器有哪几个

PTR ip对应的主机

 DNS的功能

1 hint对应的是.服务器的类型

2 master主域,负责解析域名的服务器

3 slave从域,当主服务器挂掉后提供服务

4 forward转发域,对应域的解析直接转发其它DNS服务器

子域,实现方式在父域定义一个NS记录,ip指向子域ip就可以了

反向域,区域名称:网络地址反写.in-addr.arpa.

172.16.100.--> 100.16.172.in-addr.arpa.

7 acl,定义访问列表

访问控制

allow-query {} 允许查询的主机;白名单;

allow-transfer {}:允许区域传送的主机;白名单

allow-recursion {}: 允许递归的主机,建议全局使用

allow-update {}: 允许更新区域数据库中的内容

总结

  DNS服务器后期我们也只是最简单的使用,也就是建一个masterslave服务器,并且网上教程一堆。






      本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1883015 ,如需转载请自行联系原作者


相关文章
|
2月前
|
域名解析 缓存 网络协议
DNS的意义,DNS不可用该怎么办
DNS的意义,DNS不可用该怎么办
|
域名解析 Kubernetes 网络协议
聊聊k8s的DNS
DNS是k8s服务发现很重要的一部分,本文主要介绍k8s DNS的配置,并介绍一个自建DNS的案例,为指定 pod 指定一个自建 dns 服务器为pod 提供特定的域名解析。
2573 0
|
缓存 网络协议 数据库
|
缓存 网络协议 测试技术
|
缓存 网络协议 数据库
|
存储 移动开发 网络协议
|
网络协议 开发工具 C++
|
网络协议