Linux网络基础3(域名解析服务)

今天写一下linux网络的域名解析,昨天讲了一下DHCP和FTP,域名解析是比较重要的一个服务,
用来指向网站的IP地址。

目录

  • 一、域名解析简介
  • 二、DNS系统的作用
  • 二、DNS系统类型
  • 三、DNS查找类型及原理
    • 1.查询方式
    • 2.查询原理过程
  • 四、实验过程
    • 1.正向解析
      • 1.1各种资源记录
        • 1.1.1 SOA记录
        • 1.1.2 NS记录
        • 1.1.3 MX记录
        • 1.1.4 A记录
        • 1.1.5PTR记录
        • 1.1.6 CNAME别名记录
      • 1.2安装配置方法
    • 2.反向解析
    • 3.主从复制
    • 4.分离解析
    • 5.开启centos的缓存
  • 五、补充:DNS的分布式互联网解析库

一、域名解析简介

DNS:域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 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 ~]#rpm -q --scripts bind    #查看安装脚本
[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

二、DNS系统的作用

1.正向解析:根据主机名称(域名)查找对应的IP地址

2.反向解析:根据IP地址查找对应的主机域名

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

Linux网络基础3(域名解析服务)_第1张图片

二、DNS系统类型

缓存域名服务器
●也称为高速缓存服务器
●通过向其他域名服务器查询获得域名-> IP地址记录
●将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
●特定DNS区域的官方服务器,具有唯一性
●负责维护该区域内所有域名->IP地址的映射记录
从域名服务器
●也称为辅助域名服务器
●其维护的域名->IP地址记录 来源于主域名服务器

三、DNS查找类型及原理

1.查询方式

递归查询:一般客户机和本地DNS服务器之间属于递归查询。即客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)

2.查询原理过程

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

windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts

Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递 归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

四、实验过程

1.正向解析

1.1各种资源记录

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

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

SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。任何DNS记录文件中,
都是以SOA 记录开始。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记录设置一些数据版本和更新以及过期时间等信息。

1.1.1 SOA记录

name: 当前区域的名字,例如"kfc.com."
value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换。例如:admin.kfc.com
  3. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

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

1.1.2 NS记录

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

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略
  2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
  3. 一个区域可以有多个NS记录

范例

master IN NS kfc.com.

master IN NS kfc.com.

1.1.3 MX记录

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

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的
    优先级;数字越小优先级越高
  2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

范例:

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

1.1.4 A记录

name: 某主机的域名解析,例如:www.kfc.com
value:主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

范例:

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

1.1.5PTR记录

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

例如:

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

1.1.6 CNAME别名记录

name: 别名的FQDN
value: 真正名字的FQDN
ftp.kfc.com.  IN CNAME www.kfc.com
#固定格式
name    [TTL]       IN              rr_type         value
        缓存时间     internet记录     区域解析库        值

$TTL 1D
@       IN SOA  master.kgc.com. admin.kfc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.kfc.com.
master  A       192.168.91.100
www     A       192.168.91.103
db      A       192.168.91.101
IN      MX 10   mail.kfc.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. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

1.2安装配置方法

[root@localhost ~]#yum  install bind bind-utils -y #主软件 和 配置包管理软件
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start named #开启服务
[root@localhost ~]#netstat -ntap |grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      17047/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      17047/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      17047/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      17047/named
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DNS1=127.0.0.1
[root@localhost ~]#systemctl restart network
[root@localhost ~]#ping www.baidu.com
[root@localhost ~]#rpm -qc 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

[root@localhost ~]#vim /etc/named.conf  #可以修改配置,注释,或者删除这两行
listen-on port 53 { any; };
allow-query     { any; };

# // listen-on port 53 { 127.0.0.1; };
# // allow-query     { localhost; };

[root@localhost ~]#rndc reload  #重新加载DNS服务
server reload successful

[root@localhost named]#vim /etc/named.rfc1912.zones  #编写域名
zone "kfc.com" {
   type master;
   file "kfc.com.zone";
};

[root@localhost named]#cd /var/named/
#切换目录
[root@localhost named]#ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]#cp named.localhost ./kfc.com.zone -p
#保留权限复制
[root@localhost named]#ls
data  dynamic  kgc.com.zone  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]#vim kfc.com.zone
#编辑数据库文件,解析记录对应关系
$TTL 1D
@       IN SOA  master.kfc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.91.100
www     A       192.168.91.101
db      A       192.168.91.103
IN      MX 10   mail.kfc.com.
mail    A       192.168.91.10
@       A       192.168.91.100
[root@kgc ~]# cd /var/www/html/
[root@kgc html]# ls
[root@kgc html]# vim index.html
www.kfc.com
#检查启动文件格式
named-checkconf 
named-checkzone kfc.com /var/named/kfc.com.zone


2.反向解析

[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.

3.主从复制

实验环境:
主服务器地址:192.168.91.100
从服务器地址:192.168.91.103

###从服务器的配置
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
#从服务器先安装bind软件
[root@localhost etc]# vim /etc/named.conf 
#两段改成any
listen-on port 53 { any; };
allow-query     { any; }; 
[root@localhost etc]# vim /etc/named.rfc1912.zones
#添加从服务器的配置文件
zone "kgc.com" IN {
        type slave;
        #类型从
        file "slaves/kgc.com.zone";
        #文件地址在/var/named/slaves/ 下
        masters { 192.168.91.100; };
        #申明主服务器的地址
};
[root@localhost etc]# ls /var/named/slaves
kgc.com.zone
[root@localhost etc]# systemctl start named #主服务器配置好后再启动


#主服务器配置
[root@localhost etc]# vim /etc/named.rfc1912.zones
zone "kfc.com" IN {
        type master;
        file "kfc.com.zone";
        allow-transfer { 192.168.91.103; };
        #添加从服务器的地址
};
[root@localhost etc]#rndc reload


验证:

#在从服务器上
[root@localhost etc]# echo "nameserver 192.168.91.103" > /etc/resolv.conf 
#将DNS指向自己
[root@localhost etc]#host www.kfc.com

#或者
[root@localhost ~]# dig www.kfc.com @192.168.91.101

同步问题?

同步的方式?

同步需要修改 版本,添加从服务器

$TTL 1D
@       IN SOA  master.kfc.com. admin.kfc.com. (
                                        #1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
        NS      slave1
master  A       192.168.91.100
#slave1  A       192.168.91.103
www     A       192.168.91.101
db      A       192.168.91.109
      MX 10   mail.kfc.com.
mail    A       192.168.91.10
*       A       192.168.91.100
@       A       192.168.91.100

[root@localhost slaves]# dig -t axfr kgc.com
#查看配置信息

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> -t axfr kgc.com
;; global options: +cmd
kgc.com.		86400	IN	SOA	master.kgc.com. admin.kgc.com. 1 86400 3600 604800 10800
kgc.com.		86400	IN	NS	master.kgc.com.
kgc.com.		86400	IN	NS	slave1.kgc.com.
kgc.com.		86400	IN	A	192.168.91.100
*.kgc.com.		86400	IN	A	192.168.91.100
db.kgc.com.		86400	IN	MX	10 mail.kgc.com.
db.kgc.com.		86400	IN	A	192.168.91.109
mail.kgc.com.		86400	IN	A	192.168.91.10
master.kgc.com.		86400	IN	A	192.168.91.100
slave1.kgc.com.		86400	IN	A	192.168.91.103
www.kgc.com.		86400	IN	A	192.168.91.101
kgc.com.		86400	IN	SOA	master.kgc.com. admin.kgc.com. 1 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 192.168.91.103#53(192.168.91.103)
;; WHEN: 二 928 00:06:26 CST 2021
;; XFR size: 12 records (messages 1, bytes 298)

###提高安全配置

4.分离解析

实验环境:

将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
~                                                                                                                    
~                          

验证 可以使用 nslookup查看

5.开启centos的缓存

CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进

程)包可以支持DNS缓存功能减少DNS服务器压力,提高DNS查询速度

[root@centos7 ~]#yum -y install nscd
[root@centos7 ~]#systemctl enable --now nscd
#查看缓存统计信息
[root@centos7 ~]#nscd -g
#清除DNS客户端缓存
[root@centos7 ~]#nscd -i hosts

五、补充:DNS的分布式互联网解析库

Linux网络基础3(域名解析服务)_第2张图片

你可能感兴趣的:(linux,5G,云计算,linux,运维,数据库,dns服务器,云计算)