linux之【DNS域名解析服务】

1,175 阅读8分钟

1、DNS域名解析服务

域名系统(英文:Domain Name System,缩写:DNS)

1.1 DNS作用:

将域名 转换成 ip地址。
一个ip可以对应多个域名,但一个域名不能对应多个ip

 180.18.125.10        www.baidu.com
    ip地址                 域名

1.2 DNS的三个发展阶段:

  • 分散式 :早期 使用文本文件记录,效率极低
  • 集中式 :中期 使用单台服务器 集中解析
  • 分布式 :按照层级划分,不同层级管理的范围不同

1.3 DNS解析的分类:

  • 正向解析:根据域名查找对应的IP地址;
  • 反向解析:根据IP地址查找对应的域名,反向基本不用。

1.4 域名的组成:

  • 根域名
  • 一级域名(顶级域名)
  • 二级域名
  • 三级域名
  • ……
  • 最多可达到127级域名
 www.baidu.com.
 拆解:
     最后一个.  : 代表根域,根域可以省略
     .com      : 一级域名
     .biadu    : 二级域名
     www       : 主机名
有 . 的叫域名; 没有 . 的是主机名

1.4.1 根域名

根域服务器 一共13台:美国10台、英国1台、瑞典1台、日本1台。

1.4.2 一级域名(顶级域名)

一级域名含义
.com工商 企业
.net网络供应商
.edu教育机构
.cn中国国家域名
.org团体组织
.gov政府部门

1.4.3 二级域名

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

1.4.4 子域名(三级以下的域名都称为子域名)

子域名含义
sina.com.cn新浪
pku.edu.cn北京大学
tsinghua.edu.cn清华大学

1.4.5 主机名

 www
 mails
 news

小拓展:

DNS说明
114.114.114.114三大运营商
8.8.8.8谷歌
218.2.135.1南京电信
域名网络地址解析范围对应服务器
根域名test主机+根域根域服务器
一级域名(顶级域)test.com主机+1级域+根域一级域服务器
二级域名www.baidu.com主机 +2级域+1级域+根域二级域服务器
三级域名test.www.baidu.com主机+3级域 +2级域+1级域+根域三级域服务器

1.5 DNS解析过程(互联网环境)

1.先去看 /etc/hosts 文件中是否 有 www.baidu.com 的地址,如果有(递归查询)直接访问

2.如果没有 去问 你自己设置dns服务器,运营商提供,如果有就直接反馈,没有就找根域名

3.根域无法解析www.baidu.com,会透露一个信息给你,让你去找一级域

4.一级域无法解析www.baidu.com,会透露一个信息给你,让你去找二级域

5.以此类推, 最后有一台权威服务器会告诉你 具体的 ip地址,然后 反馈给用户

1.6 解析类型

  • 递归:一次询问直接就有结果
  • 迭代:需要多次询问

image.png

2、bind软件(内网)

bind是DNS服务器软件,提供域名解析,和dhcp同属于www.isc.org公司。

2.1 bind各配置文件位置:

名称或位置文件含义
bind软件名(安装包名)
named程序名
/etc/named.conf主配置文件
/etc/named.rfc1912.zones区域配置文件,存放要解析的域名
/var/named /*数据库配置文件,就是以前的hosts文件
usr/sbin/rndc****bind管理工具
/var/named/named.ca指明根的位置

// rndc reload 刷新、重新加载

2.2 主配置文件

位置:/etc/named.conf

2.2.1 指向

改DNS指向 是重点!

假如本机是7-2,那么其他机器的设置要指向7-2,本机也要指向7-2的地址。

image.png

注意:上图中,DNS1也可以改成127.0.0.1 回环地址,同样也是指向自己。

 systemctl restart network   #重启网络
 cat /etc/resolv.conf    #验证下 DNS有没有修改成功

2.2.2 修改主配置文件

有两种方法:

1、不修改,直接注释

 options {
 //      listen-on port 53 { 127.0.0.1; };   
         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     { localhost; };

2、将下面两处,改成any(注意结束符 ; )

image.png

2.3 区域配置文件

/etc/named.rfc1912.zones

image.png

2.4 数据库配置文件

位置和查看权限:

 [root@localhost ~]#  cd /var/named    #切换到数据库配置文件位置
 [root@localhost named]#  ls
     abc.com.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
 [root@localhost named]#  cp -p named.localhost abc.com.zone  #abc.com.zone  必须与区域配置文件里的名字保持一致。
 [root@localhost named]#  ll   #查看权限,权限也要保持一致
     -rw-r-----. 1 root  named  152 621 2007 abc.com.zone
     drwxrwx---. 2 named named   23 427 20:52 data
     drwxrwx---. 2 named named   60 427 20:53 dynamic
     -rw-r-----. 1 root  named 2253 4月   5 2018 named.ca
     -rw-r-----. 1 root  named  152 1215 2009 named.empty
     -rw-r-----. 1 root  named  152 621 2007 named.localhost
     -rw-r-----. 1 root  named  168 1215 2009 named.loopback
     drwxrwx---. 2 named named    6 1016 2023 slaves
 [root@localhost named]#  vim abc.com.zone    #编辑数据库文件

通式:

 name      [TTL]              IN              rr_type            value
 域名  生命周期(可省略)   使用INTERNET协议   数据类型:A、AAAA        ip地址

image.png

image.png

2.4.1 数据记录类型 rr_type

注意:必须要是大写字母!!!

  1. SOA:Start Of Authority,起始授权记录; 所有解析库的第一条记录必须是SOA,一个区域解析库有且仅能有一个SOA记录。
  2. A(internet Address):正向解析,代表ipv4,作用:域名解析成IP地址
  3. AAAA(FQDN): 代表ipv6
  4. PTR(PoinTeR):反向解析,ip地址解析成域名
  5. NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
  6. CNAME : Canonical Name,别名记录
  7. MX(Mail eXchanger)邮件交换器
  8. TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等

2.4.1.1 SOA记录

SOA记录必须是第一条,作用是:制定了规则和属性。

拆解示例:

 $TTL 1D   #生命周期 ,默认是1天
 @   in SOA master.abc.com. admin.benet.com. (          #“@"符号表示当前的DNS区域名
 域名         当前服务器名称      邮箱地址
                              0   ; serial              #版本号,可以是10位以内的整数,手动更新
                             1D   ; refresh             #刷新时间,重新下载地址数据的间隔
                             1H   ; retry               #重试延时,下载失败后的重试间隔
                             1W   ; expire              #失效时间,超过该时间仍无法下载则放弃
                             3H)  ; minimum             #无效解析记录的生存周期

         NS      abc.com.                      #记录当前区域的DNS服务器的名称
         A     192.168.80.10                   #记录主机IP地址
 IN   MX 10    mail.abc.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                    #泛域名解析,“*"代表任意主机名

// 推 是主服务器 主动推给 从服务器

// 拉取 是从服务器 主动联系 主服务器

2.4.1.2 NS记录

指明谁是主服务器,谁是从服务器。

 NS master  主服务器
 NS slave   从服务器

注意:

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

2.4.1.3 MX记录

邮箱记录。

2.4.1.4 A记录(正向解析)

将域名解析为IP地址。

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

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

示例:

image.png

// www.kgc.com. 后面的 . 必须要写全,不写全,会出问题!

 * IN A 5.5.5.5          #代表泛域名
 @   IN   A 6.6.6.6      #代表不需要名字

2.4.1.5 PTR记录(反向解析)

将IP地址解析为域名。

ip地址要反过来写!

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

示例:

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

2.4.1.6 CNAME 别名记录

 name: 别名的FQDN
 value: 真正名字的FQDN
 ​
 ftp.kgc.com.  IN CNAME www.kgc.com

2.5 named-checkconf 检查

named-checkconf 检查启动文件格式 检查语法是否错误

 通式:   
 named-checkzone  abc.com  /var/named/abc.com.zone
                    域名        文件名

 rndc reload    #重新加载named服务

2.6 正向解析 实验一:

 [root@localhost ~]# yum install bind  bind-utlis  -y    //安装bind软件
                                主包  工具包(依赖包)
 [root@localhost ~]# rpm -ql bind    //显示所有文件列表
 vim /etc/sysconfig/network-scripts/ifcfg-ens33
     DNS1=本机ip地址
 systemctl restart network
 cat /etc/resolv.conf
 ​
 #先修改主配置
 vim /etc/named.conf
 #可以修改配置,注释,或者删除这两行
 listen-on port 53 { any; };
 allow-query     { any; };
 ​
 # // listen-on port 53 { 127.0.0.1; };
 # // allow-query     { localhost; };#再修改区域配置
 vim /etc/named.rfc1912.zones
 #5yy 加大P
 #编写域名
 zone "abc.com" {
    type master;
    file "abc.com.zone";
 };
 ​
 #第三部分
 [root@localhost named]#cd /var/named/
 [root@localhost named]#ls
 [root@localhost named]#cp -a named.localhost abc.com.zone
 [root@localhost named]#vim abc.com.zone

image.png

 #第四部分
 [root@localhost named]#  systemctl start named   #必须要开启named服务
 [root@localhost named]#  host www.abc.com        #解析
 [root@localhost named]#  named-checkzone         #检查语法是否错误

2.7 反向解析

2.7.1 区域配置文件

vim /etc/named.rfc1912.zones

image.png

// ip地址要反过来写

2.7.2 数据库配置文件

image.png

 rndc reload
 host 192.168.91.123   #解析
 host 192.168.91.155

2.8 主 从复制

两个DNS 一主一从

主:192.168.91.100

从:192.168.91.101

image.png

2.8.1 主服务器 设置:

允许谁和 主同步:

vim /etc/named.rfc1912.zones

image.png

2.8.2 从服务器 设置:

 [root@localhost ~]# yum install bind  bind-utlis  -y    //安装bind软件
 [root@localhost ~]# vim /etc/named.conf    #主配置,跟正向解析一样,进行注释
 # // listen-on port 53 { 127.0.0.1; };
 # // allow-query     { localhost; };#再修改区域配置
 vim /etc/named.rfc1912.zones
 #5yy 加大P

image.png

 systemctl start named   #开启named服务
 host
 dig

主从 复制之间的拉取:

image.png

2.9 域名解析工具

  • nslookup
  • dig
  • host