DNS域名解析服务(内含模拟实验)

2,652 阅读8分钟

DNS

1、名字解析介绍和DNS

域名系统(英文:Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。

本地名称解析配置文件:hosts

Linux: /etc/hosts
windows: c/windows/system32/drivers/etc/hosts
#格式
IP 地址   域名

[root@localhost ~]#vim /etc/nsswitch.conf
#修改dns的优先级
hosts:      files dns myhostname
#修改 files和 dns的先后  优先级就会改变

[root@localhost ~]# grep name /etc/services
### 过滤出端口
# service-name  port/protocol  [aliases ...]   [# comment]
nameserver      42/tcp          name            # IEN 116
nameserver      42/udp          name            # IEN 116
nicname         43/tcp          whois
nicname         43/udp          whois
domain          53/tcp                          # name-domain server
hostname        101/tcp         hostnames       # usually from sri-nic
hostname        101/udp         hostnames       # usually from sri-nic
csnet-ns        105/tcp         cso             # also used by CSO name server
at-nbp          202/tcp                         # AppleTalk name binding
#>Ports are used in the TCP [RFC793] to name the ends of logical
# Gracilis Packeten remote config server.  The official name is listed as
# the primary name, with the unregistered name as an alias.
# being registred.  The primary names are the registered names, and the
# unregistered names used by zebra are listed as aliases.
# This port is registered as wnn6, but also used under the unregistered name
swat            901/tcp         smpnameres      # Samba Web Administration Tool
ptcnameservice  597/tcp                 # PTC Name Service
ptcnameservice  597/udp                 # PTC Name Service
smpnameres      901/udp                 # SMPNAMERES
oraclenames     1575/tcp                # oraclenames
oraclenames     1575/udp                # oraclenames
enl-name        1805/tcp                # ENL-Name
enl-name        1805/udp                # ENL-Name
linkname        1903/tcp                # Local Link Name Resolution
linkname        1903/udp                # Local Link Name Resolution
bcinameservice  3415/tcp                # BCI Name Service
bcinameservice  3415/udp                # BCI Name Service
namemunge       3950/tcp                # Name Munging
namemunge       3950/udp                # Name Munging
fmpro-internal  5003/udp                # FileMaker, Inc. - Proprietary name binding
ub-dns-control  8953/tcp                # unbound dns nameserver control

2、DNS服务器类型

  • 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,

    但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定

    其他 DNS 服务器作为解析来源。

  • 主域名服务器:管理和维护所负责解析的域内解析库的服务器

  • 从域名服务器

    从主服务器或从服务器"复制"(区域传输)解析库副本

    序列号:解析库版本号,主服务器解析库变化时,其序列递增

    刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

    重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔

    过期时长:从服务器联系不到主服务器时,多久后停止服务

    通知机制:主服务器解析库发生变化时,会主动通知从服务器

IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

3、DNS查询类型及原理

3.1查询方式

  • 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,

​ 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结

​ 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

  • 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对

​ 方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起

​ 进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需

​ 要发起多次查询。(需要自己动手)

3.2查询原理过程

正向解析查询过程: ①先查本机的缓存记录 ②查询hosts文件 ③查询dns域名服务器,交给dns域名服务器处理 以上过程成为递归查询:我要一个答案你直接会给我结果 ④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步 ⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器 ⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器 ⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器 ⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端

windows系统查询dns缓存命令:ipconfig /displaydns windows系统清理dns缓存命令:ipconfig /flushdns

linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts

======DNS的分布式互联网解析库===== 大型、分布式的互联网DNS解析库 根. 根域名DNS服务器:专门负责根域名 一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区) .com(工商 企业) .net(网络供应商) .edu(教育机构) .cn(中国国家域名) .org(团体组织) .gov (政府部门) 二级DNS服务器:专门负责二级域名的解析 .net.cn .edu.cn .com.cn 子域名DNS服务器:专门负责子域名的解析 也称为三级域名 ina.com.cn .pku.edu.cn 主机站点 tts9 tts6 mail www

Snipaste_2022-04-03_21-26-29.png

域名代理/注册/购买服务商 -新网,www.xinnet.com -万网,www.net.cn -中国互联,hulian.top 中国数据

域名体系结构 所有的域名必须以点结尾 www.qq.com. www.baidu.com 根域名(.) 一级域名:.cn(中国) .us .tw .kr(韩国) .jp(日本) .hk(香港)uk(英国) ........

二级域名:.com.cn(中国商业组织) edu.cn(教育机构) .org.cn(非盈利) .net.cn(中国运营商)

三级域名:sina.com.cn nb.com.cn haixi.com.cn .........

组织域:.com .org .net .CC

国家域:.cn .tw(台湾) .hk(香港) .iq .ir .jp(日本)

4、正向解析

4.1各种资源记录

区域解析库:由众多资源记录RR(Resource Record)组成

记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解

析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。

A(internet Address):作用,域名解析成IP地址

AAAA(FQDN): --> IPV6

PTR(PoinTeR):反向解析,ip地址解析成域名

NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器

CNAME : Canonical Name,别名记录

MX(Mail eXchanger)邮件交换器

TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮

件)记录,https验证等

SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。

4.1.1 SOA记录

name: 当前区域的名字,例如"kgc.com."

value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字

  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换

例如:admin.kgc.com

  1. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

$TTL 1D
@       IN SOA  master.kgc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

4.1.2 NS记录

name: 当前区域的名字

value: 当前区域的某DNS服务器的名字,例如: ns.kgc.org.

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略

  2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

  3. 一个区域可以有多个NS记录

范例

master IN NS kgc.com.

master IN NS kgc.com.

4.1.3 MX记录

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的

优先级;数字越小优先级越高

  1. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

范例:

mail  IN MX 10 mx1.kgc.org.
      IN MX 20 mx2.kgc.org.
mx1 A   192.168.91.10
mx2 A   192.168.91.10

4.1.4 A记录

name: 某主机的域名解析,例如:www.kgc.com

value:主机名对应主机的IP地址

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

范例:

www.kgc.com. IN A 1.1.1.1
www.kgc.com. IN A 2.2.2.2
www.kgc.com. IN   A 3.3.3.3
www.kgc.com. IN   A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@   IN   A 6.6.6.6
#代表不需要名字

4.1.5PTR记录

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN

例如:

3.2.1.in-addr.arpa. IN PTR www.kgc.org.
#如1.2.3为网络地址,可简写成:
4 IN PTR www.kgc.com

4.1.6 CNAME别名记录

name: 别名的FQDN
value: 真正名字的FQDN

ftp.kgc.com.  IN CNAME www.kgc.com
#固定格式
name    [TTL]       IN              rr_type         value
        缓存时间     internet记录     区域解析库        值


$TTL 1D
@       IN SOA  master.kgc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.kgc.com.
master  A       192.168.91.100
www     A       192.168.91.103
db      A       192.168.91.101
IN      MX 10   mail.kgc.com.
mail    A       192.168.91.10
ftp     CNAME   www



$TTL 1D                                            #有效解析记录的生存周期
@   in SOA benet.com. admin.benet.com. (   #“@"符号表示当前的DNS区域名
                     0   ; serial              #更新序列号,可以是10位以内的整数
                    1D   ; refresh             #刷新时间,重新下载地址数据的间隔
                    1H   ; retry               #重试延时,下载失败后的重试间隔
                    1W   ; expire              #失效时间,超过该时间仍无法下载则放弃#
					3H)  ; minimum             #无效解析记录的生存周期,
        NS      benet.com.                     #记录当前区域的DNS服务器的名称
        A     192.168.80.10                   #记录主机IP地址
IN   MX 10    mail.benet.com.            #MX为邮件交换记录,数字越大优先级越低
www  IN A     192.168.80.10              #记录正向解析www.benet.com对应的IP
mail IN A     192.168.80.11              #MX为邮件交换记录,数字越大优先级低 
ftp  IN CNAME  www                       #CNAME使用别名,ftp 是www的别名
*    IN A   192.168.80.100               #泛域名解析,“*"代表任意主机名

注意:

  1. TTL可从全局继承

  2. 使用 "@" 符号可用于引用当前区域的域名

  3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

  4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通

过多个不同的名字可以找到同一个主机

5、实验—— DNS正向解析

1、yum install bind bind-utils -y
2、vim /etc/named.conf
      listen-on port 53 { any; }; 括号里改any
      allow-query     { any; };     括号里改any

3、vim /etc/named.rfc1912.zones

      zone "lyn.com" IN {
        type master;                    复制5行
        file "lyn.com.zone";
};

4、cd /var/named/
5、cp -p named.localhost lyn.com.zone   
6、vim lyn.com.zone
@       IN SOA  master admin.lyn.com. (
                                        0       ; serial
                                        1D      ; refresh 
                                        1H      ; retry                         
                                        1W      ; expire                            
                                        3H )    ; minimum、
                         
                         
                         NS      master
                 master  A       192.168.58.5
                  www    A       192.168.58.6
                   *     A       192.168.58.6
                 @       A       192.168.58.6
                ftp     CNAME   www
7、vim /etc/sysconfig/network-scripts/ifcfg-ens33 

      DNS1=192.168.58.5    ### 改成自己的IP地址
8、systemctl restart network           
9、systemctl start named

6、实验—— DNS反向解析

[root@localhost named]#vim /etc/named.rfc1912.zones 
#先修改区域配置文件
zone "91.168.192.in-addr.arpa" IN {
        type master;
        file "ky15.com.zone";
        allow-update { none; };
};
[root@localhost named]#cp -p kgc.com.zone ky15.com.zone
#复制正向解析文件
[root@localhost named]#chmod 640 ky15.com.zone ;chgrp named ky15.com.zone
[root@localhost named]#vim ky15.com.zone  
#编辑文件
TTL 1D
@       IN SOA  master.yun.com. admin.yun.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.yun.com.
master   A      192.168.91.100
100 IN PTR      www.yun.com.
88  IN PTR      ftp.yun.com.

7、实验—— DNS主从复制

***** 需要两台虚拟机  同时安装:yum install bind -y

主服务器:
1、vim /etc/named.conf
      listen-on port 53 { any; }; 括号里改any
      allow-query     { any; };     括号里改any

2、vim /etc/named.rfc1912.zones
 zone "lyn.com" IN {
        type master;                    复制5行
        file "lyn.com.zone";
};
      
3、cd /var/named/
4、cp -p named.localhost lyn.com.zone
5、vim lyn.com.zone
      $TTL 1D
@       IN SOA  master rname.invalid. (
                                       0       ; serial
                                       1D      ; refresh
                                       1H      ; retry
                                       1W      ; expire
                                       3H )    ; minimum
                 NS     master
       master    A       192.168.58.100
       www       A       192.168.58.100

6、vim /etc/sysconfig/network-scripts/ifcfg-ens33 
      DNS1=192.168.58.5     ### 主服务器IP
      DNS2=192.168.58.6     ### 从服务器IP


7、systemctl restart network           
8、systemctl start named

从服务器:
1、vim /etc/named.conf
      listen-on port 53 { any; };   括号里改any
      allow-query     { any; };     括号里改any

2、vim /etc/named.rfc1912.zones
      zone "lyn.com" IN {
        type slave;
        file "slave/lyn.com.zone";
        masters { 192.168.58.5; };           主服务器IP地址
};

3、systemctl start named
4、systemctl stop firewalld.service 
5、setenforce 0
6、rndc reload

7、主服务器: systemctl stop named
8、dig/host  + 你的完整域名
9、从服务器查看:ls /var/named/slaves/   是否有主服务器文件

8、实验—— DNS分离解析

实验环境:

将linux服务器配置两块网卡,都仅主机模式

ens33:192.168.100.1

ens37:12.0.0.1

win7做为外网: 12.0.0.12 255.0.0.0

win10 作为内网:192.168.100.100

[root@test5 ~]# vim /etc/named.conf 
### 修改配置文件
listen-on port 53 { any; };
allow-query     { any; };
### 等会需要使用的 根配置文件
zone "." IN {
        type hint;
        file "named.ca";
};


[root@test5 named]# vim /etc/named.rfc1912.zones
### 编写配置文件
view "lan" {
        match-clients { 192.168.100.0/24; };
		#匹配网段
        zone "kgc.com" IN {
          type master;
          file "kgc.com.lan";
        };

        zone "." IN {
          type hint;
          file "named.ca";
        };

};

view "wan" {
        match-clients { 12.0.0.0/24; };
        zone "kgc.com" IN {
          type master;
          file "kgc.com.wan";
        };

        zone "." IN {
          type hint;
          file "named.ca";
        };

};



[root@test5 named]# vim kgc.com.lan 

$TTL 1D
@       IN SOA  master.kgc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.100.1
www     A       192.168.100.88
sftp    A       192.168.100.99
[root@test5 named]# vim kgc.com.wan 

$TTL 1D
@       IN SOA  master.kgc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       12.0.0.1
www     A       12.0.0.1
sftp    A       12.0.0.1
~