DNS介绍
什么是DNS
域名系统(英文:Domain Name System,缩写:DNS),使用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
默认端口:
- 连接DNS服务器,使用TCP协议的53端口。
- DNS服务器进行解析,使用UDP协议的53端口。
DNS作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
域名结构
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
- 一级域名:Top Level Domain: tld
- 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
- com, edu, mil, gov, net, org, int,arpa
- 二级域名:magedu.com
- 三级域名:study.magedu.com
- 最多可达到127级域名
注:
-
114.114.114.114是国内移动、电信和联通通用的DNS服务器,解析成功率相对来说更高,国内用户使用的比较多,速度相对快、稳定,是国内用户上网常用的DNS。
-
8.8.8.8是GOOGLE公司提供的DNS服务器,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。
DNS服务器类型
缓存域名服务器:
只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
主域名服务器:
管理和维护所负责解析的域内解析库的服务器
从域名服务器
从主服务器或从服务器"复制"(区域传输)解析库副本
DNS查询类型
查询方式
递归查询:
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
特点
- 递归查询:主机只发出一次请求,要求对方给出最终结果。返回的结果只有两种:查询成功或查询失败。
- 迭代查询:主机需要发起多次请求,返回的是所需IP地址或最佳查询地址。
域名解析过程
用户在网页中输入地址,如www.baidu.com 后,DNS域名解析过程如下:
-
1.客户机先去查找本机的/etc/hosts 文件,看文件中是否存在该域名和IP地址的映射记录。如果有就调用,没有就进行下一步。
-
2.客户机请求本地域名服务器(LDNS)来解析这个域名,主机要求本地域名服务器直接返回最终结果。在返回结果之前,客户机将完全处于等待状态,不再二次请求。统一由本地域名服务器向各级域名服务器转发请求。
-
3.本地域名服务器收到客户机的请求后,先查询自己的缓存信息,如果有这个域名的映射记录则返回结果,没有则进行下一步。
-
4.本地域名服务器请求根域名服务器解析这个域名,根域名告诉本地域名服务器去找对应的一级域名服务器。
-
5.本地域名服务器请求一级域名服务器解析这个域名,一级域名服务器告诉它去找对应的二级域名服务器。
-
6.本地域名服务器请求二级域名服务器解析这个域名,二级域名服务器告诉它去找对应的子域名服务器。
-
7.本地域名服务器请求子域名服务器解析这个域名,子域名服务器返回对应的IP地址。
-
8.本地域名服务器将IP地址记录到缓存中,并返回给客户机。客户机根据收到的IP地址访问该网站。
正向解析
记录类型
-
NS记录:域名服务器记录(Name Server)。
-
MX记录:邮件交换记录(Mail Exchange)。
-
A记录:地址记录(Address)。用来指定主机名(或域名)对应的IP地址记录。用于正向解析。
-
CNANE:别名记录。 这种记录允许您将多个名字映射到同一台计算机。
反向解析
PTR: 指针记录 (Pointer Record) ,用来指定IP地址对应的域名。用于反向解析。
NS master //当前区域的DNS服务器名称
master IN A 192.168.10.100 //记录DNS服务器的IP地址
200 IN PTR www.km.com //记录反向解析192.168.72.200对应的IP地址
201 IN PTR ftp.km.com //记录反向解析192.168.72.201对应的IP地址
DNS正向解析实验
1.关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
2.安装bind软件包
[root@localhost ~]# yum install bind* -y //安装BIND程序
[root@localhost ~]# rpm -qc bind //查看BIND配置文件 /etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf /etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
3.编辑主配置文件/etc/named.conf
[root@localhost ~]# vim /etc/named.conf
----------------------------------
options {
listen-on port 53 { any; }; //允许DNS服务器监听所有IP地址
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; }; //允许所有客户端查询
4.编辑区域配置文件/etc/named.rfc1912.zones文件,设置正向解析区域
[root@localhost ~]# vim /etc/named.rfc1912.zones
-------------------------------------------
zone "km.com" IN { //定义正向DNS区域
type master; //定义区域类型为master
file "km.com.zone"; //设置对应的正向解析数据库文件
allow-update { none; };
};
5.建立正向解析区域数据库文件km.com.zone,重启服务
[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost km.com.zone
[root@localhost named]# vim km.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.km.com
master IN A 192.168.10.90
www IN A 192.168.10.91
@ IN A 192.168.10.91
* IN A 192.168.10.91
[root@localhost named]# systemctl restart named
6.修改DNS地址,重启服务
[root@localhost named]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
[root@localhost network-scripts]# systemctl restart network
7.验证是否成功
[root@localhost named]# host www.km.com
www.km.com has address 192.168.10.91