DNS是什么web
DNS:Domain Name System,域名系统数据库
DNS做为域名和IP地址相互映射的一个分布式数据库,可以让用户更方便的访问互联网。它的正向映射是把一个主机和IP地址关联起来,它的反向映射则是IP地址到主机名。DNS使用TCP和UDP的53号端口。当前,对于每一级域名长度的限制是63个字符,域名总长度不能超过253个字符。缓存
为何要用DNS
bash
链接到互联网的主机不可胜数。当我要访问www.magedu.com这个网站。因为底层网络只能理解IP地址,而个人电脑不知道www.magedu.com这台主机的IP地址。DNS服务器收到查询请求以后,把查询到的结果(IP:101.200.188.230)再返还给个人电脑。而后个人电脑再经过IP地址进行访问。 服务器
如图所示:网络
一、本机向DNS服务器发送查询请求。dom
二、DNS服务器将查询的结果返还给本机。
tcp
三、本机经过IP地址访问www.magedu.com。分布式
域名:ide
DNS名称空间被组织成一个“树”形结构。每一个完成的域名(例如,www.magedu.com)是这颗树的分支上的一个节点。完整限定域名(FQDN,Fully Qualified Domain Name)是到一个DNS对象的完整路径,包括最后一个点。
以上述的域名为例说明,magedu网址是由两部分组成,标号magedu是这个域名的主体,而最后的标号com则是该域名的后缀,表明的这是一个com国际域名,是顶级域名。而前面的www是网络名,为www的域名。DNS规定,域名中的标号由英文字母和数字组成,每一个组成部分(标号)不能超过63个字符,整个FQDN(完整域名)全长不超过256个字符。FQDN不区分大小写,可是他们一般都采用小写。RFC2181对域名放开了限制。
域名级别
域名分为:
国际顶级域名:.com, .net, .org, .edu等
国家地区顶级域名:.cn, .de, .jp, .hk, .uk, .us等
除了顶级域名外,还有二级域名,就是靠近顶级域名左侧的字段。如:www.magedu.com中,.magedu就是二级域名。接下来还有三级域名,即靠近二级域名的左侧的字段,以此类推还有四级域名等。
DNS查询类型:
递归查询:客户端向根服务器发送请求,根服务器并不返回真实的答案,而是推荐它下级的服务器,以此类推,直到查询IP地址返回给客户机。
迭代查询:客户机向DNS服务器发送请求,DNS服务器直接回复答案给客户机。
域名解析
正向解析:FQDN到IP地址的解析。
反向解析:IP地址到FQDN的解析。
域名服务器的分类
服务器的类型 | 说明 |
主服务器 | 维护所负责解析的域内解析库的服务器 |
从服务器 | 从主DNS服务器或其它从DNS服务器“复制”(区域传送)一份解析库 |
缓存服务器 | 缓存之前的查询,一般没有本地的区 |
转发服务器 | 负责非本地域名的本地查询 |
一次完整的查询过程
以上述域名www.magedu.com为例。客户机向最近的远端DNS服务器发送查询请求,DNS服务器首先查看缓存中是否有www.magedu.com这条记录。若是没有就向根服务器发送查询请求,根服务器会告诉你要去请求.com顶级服务器。以后DNS服务器再向顶级域名服务器发送查询请求,获得的回复是向.magedu这个二级域名服务器发送查询请求。最终,DNS服务器向二级域名发送请求并获得正确答案返回给客户机。同时将这次查询的结果写入缓存之中,以便下次的查询。
资源记录
DNS层次结构中的每个区(zone),都有与之相关的一组资源记录。资源记录的基本格式是:
name [TTL] IN rr_type value
记录的类型
类型 | 名称 | 功能 |
SOA | Start Of Authority | 定义一个DNS区 |
NS | Name Server | 标识服务器,受权子域 |
A | IPv4 Address | 名称到地址的转换 |
AAAA | IPv6 Address | 名称到IPv6地址的转换 |
PTR | Pointer | 地址到名字的转换 |
MX | Mail Exchanger | 控制邮件的路由 |
CNAME | Canonical Name | 主机的呢称或别名 |
记录的类型解释
SOA
一个SOA记录标记出一个区,即位于DNS域名空间中相同位置的一组资源记录的开始位置。一个DNS域的数据一般至少包括两个区:一个区用来把主机名转换成IP地址,称为正向区,其余一些区把IP地址反向映射到主机名,称为反向区。
1
2
3
4
5
6
7
8
|
例如:
magedu.com. 86400 IN SOA ns.magedu.com. admin.magedu.com. (
2018041401 ; 序列号
2H ;刷新时间
10M ;重试时间
1W ;过时时间
1D ;否认答案的TTL值
)
|
NS
NS(域名服务器)记录标识一个区的权威服务器(主服务器和从服务器),并把子域受权给其余机构。NS记录一般直接放在这个区的SOA记录后面。
注意:一个区域能够有多条NS记录
1
2
3
4
5
6
7
|
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
相邻的两个资源记录的name相同时,后续的能够省略。
对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录。
|
MX
电子邮件系统使用MX记录来更有效地路由邮件。MX记录优先于邮件发送方所指定的目的地址,在大多数状况下,它将邮件指向接收方网点的邮件主机。
1
2
3
4
5
6
7
|
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录。
|
A
A记录是DNS数据库的核心。它们提供了主机名到IP地址的映射,而这之前是在/etc/hosts文件中指定的。一个主机一般给它的每一个网络端口都有一条A记录。
1
2
|
例如:
ns1 IN A 101.200.188.230
|
AAAA
AAAA记录提供主机名到IPv6地址的映射。
PTR
PTR记录提供IP地址到主机名的反向映射。反向映射记录存在于in-addr.arpa这个域,而且以IP地址各字节逆序的形式命名。
1
2
|
例如:
101 IN PTR www.magedu.com.
|
CNAME
CNAME记录为以前多分配几个名字。一般,这些别名要么用来将某项功能与主机关联起来,要么用来缩短一个长主机名。
1
2
|
例如:
web.magedu.com. IN CNAME www.magedu.com.
|
BIND
BIND指Berkeley Internet Name Domain(伯克利因特网域名)系统,它是ISC提供的一种开源软件包,为Linux、Unix、Mac OS和Windows系统实现了DNS协议。
BIND安装
1
|
# yum -y install bind bind-utils
|
BIND简介
dns:协议
bind:dns协议的一种实现
named:bind程序运行的进程名
bind-libs:被bind和bind-utils包中的程序共同用到的库文件
bind-utils:bind客户端程序集,例如:dig,host,nslookup等
bind:提供的dns server程序,已经几个经常使用的测试程序
bind-chroot:选装,让named运行于jail模式下
主配置文件:/etc/named.conf
或包含进来的其它文件
/etc/named.iscdly.key
/etc/named.rfc1912.zones
/etc/named.root.key
区域配置文件通常在/etc/named.rfc1912.zones,全局配置在/etc/named.conf中
一、主配置文件格式:
全局配置段:
options { ... }; #注意内容先后有空格,分号结尾
日志配置段:
logging { ... };
区域配置段:
zone { ... };
配置那些由本机负责解析的区域,或转发的区域
注意:每一个语句必须以分号结尾
二、缓存名称服务器的配置:(注意此处的配置应该在使用前操做)
监听能与外部主机通讯的地址:
listen-on port 53 { 192.168.168.158; };
通常状况,建议关闭dnssec(基本上用不到,并且很麻烦,反正我是不知道。。)
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no; #或者在前面加俩个//;
修改仅容许本地查询:
allow-query { any; }; #或者注释掉
解析库文件
/var/nanmed/目录下:
通常名字为:ZONE_NAME.zone
例如:bjwf.com.zone
192.168.168.zone
注意:
一、一台DNS服务器可同时为多个区域提供解析
二、必需要有跟区域解析库文件:named.ca
三、还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库
正向:named.localhost
反向:named.loopback
检查配置文件语法错误
named-checkconf [/etc/named.conf]
named-checkzone ZONE_NAME ZONE_FILE
1
2
3
4
|
# named-checkconf
# named-checkzone bjwf.com /var/named/bjwf.com.zone
zone bjwf.com
/IN
: loaded serial 2018041202
OK
|
测试及管理工具
dig命令:
语法:dig [ -t RR_TYPE] name [@SERVER] [query options]
做用:用于测试DNS系统,所以其不会查询hosts文件
查询选项:
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析
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
|
#正向解析
# dig -t A ns1.bjwf.com @192.168.168.158
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -t A ns1.bjwf.com @192.168.168.158
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,
id
: 5996
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns1.bjwf.com. IN A
;; ANSWER SECTION:
ns1.bjwf.com. 86400 IN A 192.168.168.158
;; AUTHORITY SECTION:
bjwf.com. 86400 IN NS ns2.bjwf.com.
bjwf.com. 86400 IN NS ns1.bjwf.com.
;; ADDITIONAL SECTION:
ns2.bjwf.com. 86400 IN A 192.168.168.158
;; Query
time
: 1 msec
;; SERVER: 192.168.168.158
#53(192.168.168.158)
;; WHEN: 一 4月 13 16:55:05 CST 2018
;; MSG SIZE rcvd: 105
#反向解析
# dig -x 202.106.0.20
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -x 202.106.0.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,
id
: 41309
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;20.0.106.202.
in
-addr.arpa. IN PTR
;; ANSWER SECTION:
20.0.106.202.IN-ADDR.ARPA. 38400 IN PTR c1-xingfudajie-ns2.
;; Query
time
: 6 msec
;; SERVER: 202.106.0.20
#53(202.106.0.20)
;; WHEN: 一 4月 13 17:31:52 CST 2018
;; MSG SIZE rcvd: 111
#模拟彻底区域传送
# dig -t axfr DOMAIN [@server]
# dig -t axfr bjwf.com. @192.168.168.158
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -t axfr bjwf.com. @192.168.168.158
;; global options: +cmd
bjwf.com. 86400 IN SOA ns1.bjwf.com. admin.bjwf.com. 2018041202 3600 300 604800 86400
bjwf.com. 86400 IN NS ns1.bjwf.com.
bjwf.com. 86400 IN NS ns2.bjwf.com.
ns1.bjwf.com. 86400 IN A 192.168.168.158
ns2.bjwf.com. 86400 IN A 192.168.168.158
www.bjwf.com. 86400 IN A 192.168.168.158
bjwf.com. 86400 IN SOA ns1.bjwf.com. admin.bjwf.com. 2018041202 3600 300 604800 86400
;; Query
time
: 1 msec
;; SERVER: 192.168.168.158
#53(192.168.168.158)
;; WHEN: 一 4月 13 17:33:44 CST 2018
;; XFR size: 7 records (messages 1, bytes 192)
|
host命令:
host [ -t RR_TYPE] name SERVER_IP
1
2
3
4
|
# host 192.168.168.158
158.168.168.192.
in
-addr.arpa domain name pointer bogon.
# host -t A www.bjwf.com
www.bjwf.com has address 192.168.168.158
|
nslookup命令:
nslookup [ -options] [name] [server]
1
2
3
4
5
6
|
# nslookup www.bjwf.com
Server: 127.0.0.1
Address: 127.0.0.1
#53
Name: www.bjwf.com
Address: 192.168.168.158
|
rndc命令:named服务控制命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@localhost ~]# rndc status version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa> CPUs found: 3 worker threads: 3 UDP listeners per interface: 3 number of zones: 101 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running |
写的比较乱,参考了其余文档,你们能够看看作个参考,后面还会继续更新的。