DNS

概念

域名体系(英文:Domain Name System,缩写:DNS),运用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地拜访互联网。

简略来说便是:把域名转换成网络能够辨认的ip地址,再经过IP地址拜访主机。 这种由文字组成的称号,清楚明了要更简单回忆。

每一台 DNS 服务器都只担任办理一个有限规模(一个或几个域)内的主机域 名和 IP 地址的对应联系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当时,关于每一级域名长度的约束是63个字符,域名总长度则不能超越253个字符。

默认端口:

  • 衔接DNS服务器,运用TCP协议的53端口。
  • DNS服务器进行解析,运用UDP协议的53端口。

DNS分布式数据结构

DNS域名解析
域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,最右边的”.”便是根域名,通常省掉不写。

尖端域名,又称一级域名,常见的有”.com”、”.org”、”.net”、”.cn”等。

二级域名,便是在一级域名前再加一级,如”baidu.com”。

一切的域名必须以点(.)结尾 根域名服务器:

  • IPv4的根称号服务器: 全世界只要13台IPv4根域名服务器。1个为主根服务器在美国。其他12个均为辅根服务器,其中9台在美国,欧洲2个(坐落英国和瑞典),亚洲1个坐落日本。
  • IPv6的根称号服务器:全球共25台,我国1主3从,美国1主2从。
  • 根域名服务器一旦有任何反常对整个互联网影响都十分大。现在全球有了许多的根域名服务器镜像服务器,这点增加了容错率。

一级DNS服务器: 专门担任一级域名(尖端域名)的解析

通用尖端域名:

一级域名 阐明
.com 商业安排,但个人也能够注册
.net 网络服务安排
.edu 教育安排
.int 国际安排
.org 非营利性安排
.gov 政府安排
.mil 军事安排

国家尖端域名:以地舆域名命名的尖端域名 。

一级域名 阐明
.cn China,我国
.jp Japan,日本
.uk 英国
.us 美国

二级DNS服务器:专门担任二级域名的解析

二级域名 阐明
.com.cn 我国商业安排
.edu.cn 我国教育安排
.org.cn 我国非盈利安排
.net.cn 我国运营商

子域名服务器: 专门担任子域名的解析(三级及以下域名都叫子域名)。

三级域名 阐明
sina.com.cn 新浪
pku.edu.cn 北京大学
tsinghua.edu.cn 清华大学

常用主机名

主机名
www
mail
news

注:

  • 114.114.114.114是国内移动、电信和联通通用的DNS服务器,解析成功率相对来说更高,国内用户运用的比较多,速度相对快、安稳,是国内用户上网常用的DNS。
  • 8.8.8.8是GOOGLE公司供给的DNS服务器,该地址是全球通用的,相对来说,更适合国外以及拜访国外网站的用户运用。

DNS体系类型

缓存域名服务器

  • 也称为DNS高速缓存服务器
  • 经过向其他域名服务器查询取得域名–>IP地址记载
  • 将域名查询成果缓存到本地,提高重复查询时的速度

主域名服务器

  • 特定DNS区域的威望服务器,具有唯一性
  • 担任保护该区域内一切域名–>IP地址的映射记载
  • 需求自行树立所担任区域的地址数据文件

从域名服务器

  • 也称为辅助域名服务器,是对主域名服务器的热备份
  • 其保护的域名–>IP地址记载来源于主域名服务器
  • 需求从主域名服务器自动同步区域地址数据库
windows体系查询DNS缓存的指令:ipconfig/displaydns
windows体系整理DNS缓存的指令:ipconfig/flushdns
​
Linux体系整理DNS缓存需求装置nscd软件,启动、履行“nscd -i hosts”指令
仿制代码

DNS的查询办法(递归查询和迭代查询)

递归查询

  • 主机向本地域名服务器的查询一般都是采用递归查询。
  • 假如主机所问询的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器持续宣布查询恳求报文(即替主机持续查询),而不是让主机自己进行下一步查询。在域名服务器查询期间,客户机将彻底处于等候状况。
  • 因而,递归查询只会回来两种信息:要么是所要查询的IP地址,要么是查询失利。

迭代查询

  • 本地域名服务器向根域名服务器的查询是迭代查询。
  • 当根域名服务器收到本地域名服务器宣布的迭代查询恳求报文后,要么给出所要查询的IP地址,要么告知本地服务器:“你下一步应当向哪一个域名服务器进行查询”。下一个服务器收到恳求后也是如此,要么回来IP,要么告知本地域名服务器下一步去找谁。 即本地域名服务器依照提示的指引顺次查询, 直到回来查询的成果停止 。

递归查询和迭代查询的特点:

  • 递归查询:主机只宣布一次恳求,要求对方给出最终成果。回来的成果只要两种:查询成功或查询失利。
  • 迭代查询:主机需求发起屡次恳求,回来的是所需IP地址或最佳查询地址。

DNS域名解析

域名的解析过程

Client(客户机)–> 查询/etc/hosts文件 –> Client DNS Service Local Cache ( 查询DNS服务本机缓存,只要Windows体系有)–> DNS Server(主机向本地域名服务器恳求,递归查询)–>DNS Server Cache (本地域名服务器查询缓存信息)–> DNS iteration(本地域名服务器进行迭代查询)——>根域名服务器)–>一级域名服务器–>二级域名服务器–>三级域名服务器…

  • 客户机先去查找本机的/etc/hosts 文件,看文件中是否存在该域名和IP地址的映射记载。假如有就调用,没有就进行下一步。

  • 客户机恳求本地域名服务器(LDNS)来解析这个域名,主机要求本地域名服务器直接回来最终成果。在回来成果之前,客户机将彻底处于等候状况,不再二次恳求。一致由本地域名服务器向各级域名服务器转发恳求。

  • 本地域名服务器收到客户机的恳求后,先查询自己的缓存信息,假如有这个域名的映射记载则回来成果,没有则进行下一步。

  • 本地域名服务器恳求根域名服务器解析这个域名,根域名告知本地域名服务器去找对应的一级域名服务器。

  • 本地域名服务器恳求一级域名服务器解析这个域名,一级域名服务器告知它去找对应的二级域名服务器。

  • 本地域名服务器恳求二级域名服务器解析这个域名,二级域名服务器告知它去找对应的子域名服务器。

  • 本地域名服务器恳求子域名服务器解析这个域名,子域名服务器回来对应的IP地址。

  • 本地域名服务器将IP地址记载到缓存中,并回来给客户机。客户机依据收到的IP地址拜访该网站。

bind

BIND装备文件

  • 主装备文件: /etc/named.conf
  • 根域装备文件: /var/named/named.ca
  • 区域装备文件: /etc/named.rfc1912.zones
  • 保存DNS解析记载的数据文件坐落: /var/named/目录下

BIND服务控制

  • systemctl [status|start|stop|restart] named.service

装备文件(大局装备文件)

BIND服务的主装备文件坐落:/etc/named.conf

  • 设置DNS服务器的大局参数
  • 包含监听地址和端口、区域数据文件寄存的目录等
  • 运用 options{……}; 的装备段

DNS域名解析

区域装备文件

区域装备文件坐落:/etc/named.rfc1912.zones。

  • 设置本服务器供给域名解析的特定DNS区域
  • 包含域名、服务器角色、数据文件名等
  • 运用 zone “区域名” IN{……}; 的装备段

DNS域名解析
DNS域名解析

区域数据库文件(zone文件)

BIND服务的区域数据库文件坐落/var/named/ 目录下,具体文件名由办理员界说。一般格局为/var/named/域名.zone,例如:/var/named/yuji.com.zone。 局TTL装备项及SOA记载

  • $TTL(Time To Live,生计时刻): 表明DNS记载在DNS服务器上的缓存时刻,默认单位秒。
  • @:表明当时域名。
  • IN:表明运用 Internet 协议。
  • SOA(Start Of Authority,授权信息开端):表明解析办法。
  • 分号 “;” 开端的部分表明注释信息

DNS域名解析

2)正向解析记载

  • NS记载:域名服务器记载(Name Server)。
  • MX记载:邮件交换记载(Mail Exchange)。
  • A记载:地址记载(Address)。用来指定主机名(或域名)对应的IP地址记载。用于正向解析。
  • CNANE:别名记载。 这种记载允许您将多个姓名映射到同一台计算机。
     NS  master             //当时区域的DNS服务器称号   
master  IN   A   192.168.72.10      //记载DNS服务器master的IP地址
       MX 10  mail.yuji.com      //MX为邮件交换记载,数字越大优先级越低
       MX 20  mail2.yuji.com     //MX为邮件交换记载,数字越大优先级越低
mail   IN   A   192.168.72.103     //记载正向解析mail.yuji.com对应的IP
mail2  IN   A   192.168.72.104     //记载正向解析mail2.yuji.com对应的IP
www   IN   A   192.168.72.101     //记载正向解析www.yuji.com对应的IP
ftp   IN   A   192.168.72.102     //记载正向解析ftp.yuji.com对应的IP
web   IN  CNAME  WWW          //CNAME运用别名,web是www的别名
*    IN   A   192.168.72.100     //泛域名解析,*表明任意主机名。泛域名有优先级,从上而下匹配。
仿制代码

3)反向解析记载

PTR: 指针记载 (Pointer Record) ,用来指定IP地址对应的域名。用于反向解析。

记载的如一列指定IP地址中的主机地址部分

        NS     master      //当时区域的DNS服务器称号
master  IN   A   192.168.72.10   //记载DNS服务器的IP地址
200   IN   PTR   www.nan.com    //记载反向解析192.168.72.200对应的IP地址
201   IN   PTR   ftp.nan.com    //记载反向解析192.168.72.201对应的IP地址
仿制代码

小贴士:

  • TTL可从大局继承
  • 运用 “@” 符号可用于引用当时区域的域名
  • 同一个姓名能够经过多条记载界说多个不同的值;此刻DNS服务器会以轮询办法响应。
  • 同一个值也可能有多个不同的界说姓名;经过多个不同的姓名指向同一个值进行界说;此仅表明经过多个不同的姓名能够找到同一个主机。

区域数据库文件的特别应用

根据域名解析的负载均衡

www   IN    A    192.168.19.10
www   IN    A    192.168.19.11
www   IN    A    192.168.19.12
  • 同一域名对应到多个IP地址

泛域名解析

  • 找不到精确对应的A记载时,运用星号(*)进行匹配
*   IN     A     192.168.19.11

试验

正向解析

试验要求:

架起一台DNS服务器担任yuji.com域的域名解析作业。DNS服务器的IP地址为192.168.72.10,域名为master.pp.com。要求为以下域名做正向解析作业。

www.pp.com         192.168.19.21
mail.pp.com        192.168.19.22
ftp.pp.com         192.168.19.23

试验思路:

  1. 装置bind软件包
  2. 修正主装备文件
  3. 修正区域装备文件,增加正向区域装备
  4. 装备正向区域数据文件
  5. 启动服务,封闭防火墙
  6. 在客户端的域名解析装备文件中增加DNS服务器地址
  7. 测验DNS解析,验证试验是否成功。

试验过程:

过程一:

装置bind软件包

yum install -y bind     //装置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

DNS域名解析

过程二:

修正主装备文件

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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };        //允许一切客户端查询

DNS域名解析
过程三:

修正区域装备文件,增加正向区域装备

vim /etc/named.rfc1912.zones            //修正区域装备文件
zone "pp.com" IN {                  //界说正向DNS区域
        type master;               //界说区域类型为master
        file "pp.com。zone";            //设置对应的正向解析数据库文件
        allow-update { none; };          //
};

DNS域名解析

过程四:

装备正向区域数据文件

[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 pp.com.zone
[root@localhost named]# vim pp.com.zone 
$TTL 1D
@       IN SOA  pp.com. admin.pp.com.zone. (
                                        0       ; serial     //更新序列号,能够是 10 位以内的整数
                                        1D      ; refresh    //刷新时刻,从头下载地址数据的间隔
                                        1H      ; retry      //重试延时,下载失利后的重试间隔
                                        1W      ; expire     //失效时刻,超越该时刻仍无法下载则放弃
                                        3H )    ; minimum    //无效解析记载的生计周期
        NS      pp.com.
                  A     192.168.19.20
www    IN         A     192.168.19.21
mail   IN         A     192.168.19.22
ftp    IN         A     192.168.19.23
*      IN         A     192.168.19.24

DNS域名解析

  • “@”这儿是一个变量,当时DNS区域名
  • SOA记载中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
  • “pp.com.”此为彻底合格域名(FQDN),后边有个“.”不能漏掉
  • “admin.pp.com.”表明办理员邮箱,这儿的“@”符号已有其他含义,所以用“.”替代

过程五:

启动服务,封闭防火墙

[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# setenforce 0

DNS域名解析

  • 假如服务启动失利,能够检查日志文件来排查过错
    tail -f /var/log/messages
  • 假如服务启动卡住,能够履行下面指令解决
    rndc-confgen -r /dev/urandom -a

过程六:

在客户端的域名解析装备文件中增加DNS服务器地址

办法一:

[root@localhost named]# vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.19.20
#nameserver 114.114.114.114
#修正完立即收效

DNS域名解析

办法二:

[root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=34aeac22-1154-4c4b-a76c-55c5e7b81429
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.20
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168,19,20
#DNS2=114.114.114.114
[root@localhost named]# systemctl restart network
#修正完后需求重启网卡

DNS域名解析
DNS域名解析
过程七:

测验DNS解析,验证试验是否成功。

[root@localhost named]# host www.pp.com
www.pp.com has address 192.168.19.21
[root@localhost named]# host ftp.pp.com
ftp.pp.com has address 192.168.19.23

DNS域名解析

反向解析

试验要求:

要求为以下IP地址做反向解析作业。

192.168.19.200    www.chc.com
192.168.72.201    ftp.chc.com

试验思路:

  1. 修正区域装备文件,增加反向区域装备
  2. 装备反向区域数据文件
  3. 重启服务进行测验

试验过程:

过程一:

修正区域装备文件,增加反向区域装备

[root@localhost named]# vim /etc/named.rfc1912.zones
zone "19.168.192.in-addr.arpa" IN {       //反向解析的地址倒过来写,代表解析192.168.19段的地址
        type master;
        file "chc.com.zone";         //指定区域数据文件为chc.com.zone
        allow-update { none; };
};

DNS域名解析

过程二:

装备反向区域数据文件

[root@localhost named]# cp -p named.localhost chc.com.zone
[root@localhost named]# vim chc.com.zone 
$TTL 1D
@       IN SOA   chc.com. admin.chc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      chc.com.
                  A        192.168.19.20
200    IN        PTR       www.chc.com
201    IN        PTR       mail.chc.com
#PTR为反向指针

DNS域名解析

过程三:

重启服务进行测验

[root@localhost named]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.chc.com.19.168.192.in-addr.arpa.
[root@localhost named]# nslookup 192.168.19.201
201.19.168.192.in-addr.arpa	name = mail.chc.com.19.168.192.in-addr.arpa.

DNS域名解析

构建主从域名服务器

试验:

试验思路:

  1. 修正主域名服务器的区域装备文件,修正正、反向区域装备
  2. 修正从域名服务器的主装备文件
  3. 修正从域名服务器区域装备文件,增加正、反区域装备
  4. 主、从都重启动服务,并检查区域数据文件是否已下载成功
  5. 在客户端的域名解析装备文件中增加从DNS服务器地址;
    在服务端端的域名解析装备文件中增加主DNS服务器地址
  6. 测验

试验过程:

过程一:

修正主域名服务器的区域装备文件,修正正、反向区域装备

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
        type master;            //类型为主区域
        file "jlx.com.zone";
        allow-transfer { 192.168.19.10; };    //允许从服务器下载正向区域数据,这儿添从服务器的IP地址
};
zone "19.168.192.in-addr.arpa" IN {
        type master;
        file "jlx.com.zone.local";
        allow-transfer {192.168.19.10; };
};:

过程二:

修正从域名服务器的主装备文件

[root@localhost ~]# vim /etc/named.conf 
options {
        listen-on port 53 { 192.168.19.10; };         //监听53端口,ip地址运用供给服务的本地IP即可,也可用any代表一切
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };    //允许运用本DNS解析服务的网段,也可用any代表一切

DNS域名解析

过程三:

修正从域名服务器区域装备文件,增加正、反区域装备

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
        type slave;
        file "slaves/jlx.com.zone";        //下载的区域数据文件保存到slaves/目录下
        masters { 192.168.19.20; };   //指定主服务器的IP地址
zone "19.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/jlx.com.zone.local";
        masters { 192.168.19.20; };

过程四:

主、从都重启动服务,并检查区域数据文件是否已下载成功

systemctl restart named
[root@localhost ~]# ls -l /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 252 817 18:06 jlx.com.zone
-rw-r--r--. 1 named named 400 817 18:06 jlx.com.zone.local

DNS域名解析
过程五: 在客户端的域名解析装备文件中增加从DNS服务器地址

[root@localhost ~]# echo "nameserver 192.168.19.10">> /etc/resolv.conf 
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.19.20
nameserver 192.168.19.10

DNS域名解析

在服务端端的域名解析装备文件中增加主DNS服务器地址

[root@localhost ~]# echo "nameserver 192.168.19.20">> /etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.19.10
nameserver 192.168.19.20

DNS域名解析

过程六:

测验

[root@localhost ~]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.jlx.com.19.168.192.in-addr.arpa.
[root@localhost ~]# nslookup 192.168.19.200
200.19.168.192.in-addr.arpa	name = www.jlx.com.19.168.192.in-addr.arpa.

DNS域名解析

总结:

  • 一定要封闭防火墙和selinux。
  • 修正装备文件和区域数据库文件时,需求严厉注意语法书写,其格局十分严厉。
  • ”@“是DNS记载中的保留字,表明当时域名。
  • 修正装备文件后,一定要重启服务,之后才能收效。