DNS是什么
DNS:Domain Name System,域名系统
DNS作为域名和IP地址相互映射的一个分布式数据库,能够让用户更方便的访问互联网。它的正向映射是把一个主机和IP地址关联起来,它的反向映射则是IP地址到主机名。DNS使用TCP和UDP的53号端口。当前,对于每一级域名长度的限制是63个字符,域名总长度不能超过253个字符。
为什么要用DNS
连接到互联网的主机不计其数。当我要访问www.magedu.com这个网站。由于底层网络只能理解IP地址,而我的电脑不知道www.magedu.com这台主机的IP地址。DNS服务器收到查询请求之后,把查询到的结果(IP:101.200.188.230)再返还给我的电脑。然后我的电脑再通过IP地址进行访问。
如图所示:
1、本机向DNS服务器发送查询请求。
2、DNS服务器将查询的结果返还给本机。
3、本机通过IP地址访问www.magedu.com。
域名:
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中
1、主配置文件格式:
全局配置段:
options { ... }; #注意内容前后有空格,分号结尾
日志配置段:
logging { ... };
区域配置段:
zone { ... };
配置那些由本机负责解析的区域,或转发的区域
注意:每个语句必须以分号结尾
2、缓存名称服务器的配置:(注意此处的配置应该在使用前操作)
监听能与外部主机通信的地址:
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
注意:
1、一台DNS服务器可同时为多个区域提供解析
2、必须要有跟区域解析库文件:named.ca
3、还应该有两个区域解析库文件: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 |
写的比较乱,参考了其他文档,大家可以看看做个参考,后面还会继续更新的。