开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DNS服务器
前言:了解DNS协议,及其结构,解析过程
54 0
阿里云ECS服务器安装docker教程(详细图文)
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。理由很简单,用了的人都说好用。在多系统的分布式项目中,往往传统的部署发包等操作,那是让每个上线的程序员恨的牙痒呀。通常都是通宵奋战,上生产解决各种部署发包问题。
5896 0
如何获取浏览器的DNS解析时间
上一篇博客提到09年初WED团队开发的浏览器环境检测工具时,忘记说这个是aoao同学的创意了。不过没关系,据说他又在秘密规划新版本了,再据说新版要增加的DNS解析时间计算已经开发完成,点上面那个链接就可以抢先体验。
871 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载