域名解析系统 —— DNS服务

心已入冬 提交于 2019-12-09 09:54:54

前言:

最近整理一些以前的学习笔记。
过去都是存储在本地,此次传到网络留待备用。


 

DNS

  • 域名系统(Domain Name System)
  • 作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
  • 目前,每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
  • 协议: TCP/UDP
  • 默认端口: 53
  • DNS服务器的功能:
    • 正向解析:根据注册的域名查找对应的ip地址
    • 反向解析:根据ip地址查找对应的注册域名,不常用
  • FQDN(Full Qualified Domain Name),完整合格域名

    • 网站名 = 服务器名.域名后缀
    • www.pku.edu.cn = 站点名.***.二级域.一级域
  • 所有完整的域名都会以 .(点) 结尾:

                根域 .
      ┌─────┬─────┼─────┬─────┬─────┬──────┬─
    .com   .cn   .us   .tw   .kr   .hk   .......  #一级DNS服务器
      ┌─────┴────┬─────────┬─────────┬─
    .com.cn   .net.cn   .org.cn  .edu.cn          #二级DNS服务器
      ├─────────────────┬───────────────┬─
    .lala.com.cn   .haha.com.cn   .xixi.com.cn    #三级DNS服务器
          ├─────────────────────┬─
      web1.lala.com.cn    tts.lala.com.cn         #完整主机名
    
  • 常见的顶级域名/一级域名:

    国家/地区域 .cn .us .kr .hk .tw ...
    组织域 .com .net .edu .org .gov ...

 

DNS解析库

  • 资源记录:rr(resource record),有类型的概念;用于此记录解析的属性。

    资源记录 名称 意义
    A Address地址 IPv4 此记录列出特定主机名的 IP 地址
    AAAA Address地址 IPv6
    NS Name Server域名服务器 此记录指定负责给定区域的名称服务器
    SOA Start of Authority授权状态
    MX Mail Exchanger邮件交换 此记录列出了负责接收发到域中的电子邮件的主机
    CNAME Canonical Name规范名 此记录指定标准主机名的别名
    PTR Pointer指针

 

DNS查询过程

  • DNS查询机制:

    • 递归查询(Recursive Query)
      • 首选DNS服务器,跑到相应其他DNS服务器上,将询问的最终结果带回来的过程
      • 客户端与首选DNS服务器交互
      • 默认开启递归查询( recursion yes|no )
    • 迭代查询(Iterative Query)
      • 首选DNS服务器与其他DNS服务器交互
  • DNS的查询顺序:

      1、本地hosts文件   2、本地DNS缓存   3、本地DNS服务器   4、发起迭代查询
    

 

BIND域名服务

  • Berkeley Internet Name Domain , 伯克利因特网域名服务
  • 是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台
  • 官网: https://www.isc.org/
  • 软件:
    • bind , 域名服务包
    • bind-chroot , 提供虚拟根支持,依赖bind
  • 系统服务: named
  • 协议端口: TCP/UDP 53
  • 运行时的虚拟根路径: /var/named/chroot
  • 主配置文件: /etc/named.conf      //设置负责本机解析的域名
  • 地址库文件: /var/named      //主机名与ip地址的对应关系


 

一、搭建基本的DNS服务器

svr7.test.cn  ---> 192.168.4.7
pc207.test.cn ---> 192.168.4.207
www.test.cn   ---> 192.168.4.100

服务端(192.168.4.7)

1.安装软件包

]# yum -y install bind bind-chroot

2.修改配置文件

]# vim /etc/named.conf
options {
    listen-on port 53 { 192.168.4.7; };   #监听服务器的地址和端口
    directory    "/var/named";            #默认,指定地址库文件存放路径
    allow-query  { any; };                #允许任何客户机查询
};
zone    "test.cn"    IN {          #指定本机负责解析的域名
    type    master;                #指定本机为权威的主DNS服务器
    file    "test.cn.zone";        #指定地址库文件为test.cn.zone
};

]# named-checkconf /etc/named.conf  #检查配置文件语法

3.建立地址区域文件

]# cd /var/named/                           #准备模板文件
]# cp -p named.localhost test.cn.zone       #权限属性不变拷贝模板
]# ls -l test.cn.zone
-rw-r----- 1 root named 152 6月  21 2007 test.cn.zone

]# vim test.cn.zone                 #编辑区域文件
$TTL 1D                                 ;TTL=Time To Live=生存时间
@   IN SOA  @ rname.invalid. (          ;SOA=Start Of Authority=授权信息开始,@区域名
                    0   ; serial,序列号        ;分号; 开始的部分表示注释
                    1D  ; refresh,刷新时间
                    1H  ; retry,重试时间间隔
                    1W  ; expire,过期时间
                    3H )    ; minimum,无法解析时否定答案的TTL值
test.cn.   NS  svr7          ;NS=NameServer,声明test.cn.域名的DNS服务器为svr7.test.cn.
svr7       A   192.168.4.7   ;指定svr7.test.cn.的ip地址为192.168.4.7
www        A   1.1.1.1    
ftp        A   2.2.2.2

]# named-checkzone test.cn test.cn.zone     #检查配置文件,命令 区域名 配置文件
zone test.cn/IN: loaded serial 0
OK                                         #检查结果ok

4.启服务

]# systemctl restart named
]# systemctl enable named

 

客户端

1.设置DNS服务器

]# echo 'nameserver    192.168.4.7 > /etc/resolv.conf'

2.检测域名解析

  • host
    ]# host svr7.test.cn
    svr7.test.cn has address 192.168.4.7
    
  • nslookup
    ]# nslookup www.test.cn
    Server:		192.168.4.7
    Address:	192.168.4.7#53
    Name:	www.test.cn
    Address: 1.1.1.1
    


 

二、多区域DNS服务

1.修改配置文件(接上例192.168.4.7)

]# vim /etc/named.conf          #追加新的区域
zone  "qq.com"   IN  {
    type master;
    file  "qq.com.zone";
};

2.编辑区域文件

]# cp -p /var/named/test.cn.zone /var/named/qq.com.zone
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS  svr7   
svr7     A   192.168.4.7
www      A   3.3.3.3
ftp      A   4.4.4.4

3.重启服务

]# systemctl restart named

4.客户端测试

]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 3.3.3.3

 

三、特殊的解析记录

接上例

1.基于DNS域名的负载均衡:

#服务端
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7 
svr7      A    192.168.4.7
www       A    192.168.4.11         ;配置www的负载均衡
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4

]# systemctl restart named

#客户端测试
]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 192.168.4.12
Name:	www.qq.com
Address: 192.168.4.13
Name:	www.qq.com
Address: 192.168.4.11

2.泛域名解析:

服务器:
]# cd /var/named
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
]# systemctl restart named

客户端:
]# host ftp.qq.com
ftp.qq.com has address 4.4.4.4
]# host fan.qq.com
fan.qq.com has address 1.2.3.4

3.有规律的泛域名解析:

web1.qq.com------》192.168.10.1
web2.qq.com------》192.168.10.2
web3.qq.com------》192.168.10.3
web4.qq.com------》192.168.10.4
......
web50.qq.com------》192.168.10.50

函数: $GENERATE 生成连续范围的数字

服务器:
]# cd /var/named/
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
$GENERATE  1-50  web$   A   192.168.10.$    ;使用$GENERATE函数生成有规律的泛域名解析

]# systemctl restart named

#客户端
]# host web.qq.com
web.qq.com has address 1.2.3.4
]# host web1.qq.com
web1.qq.com has address 192.168.10.1
]# host web11.qq.com
web11.qq.com has address 192.168.10.11
]# host web50.qq.com
web50.qq.com has address 192.168.10.50

 

四、DNS的子域授权

接上例

父域    www.test.cn       总公司        svr7 服务器 192.168.4.7
子域    www.bj.test.cn    北京分公司     pc207 服务器 192.168.4.207
  • 父域主机配置子域授权(192.168.4.7)

    ]# cd /var/named
    ]# vim  test.cn.zone
    test.cn.     NS   svr7
    bj.test.cn.  NS   pc207.bj            ;指定子域的DNS服务器
    svr7         A    192.168.4.7
    pc207.bj     A    192.168.4.207 
    www          A    1.1.1.1    
    ftp          A    2.2.2.2
    ]# systemctl restart named
    
  • 子域主机配置(192.168.4.207)

    ]# yum -y install bind bind-chroot      #安装软件
    ]# vim /etc/named.conf                  #修改配置文件
    options  {
        directory  "/var/named";
    };
    zone  "bj.test.cn"   IN  {      ;解析子域域名
        type  master;
        file  "bj.test.cn.zone";
    };
    ]# cd /var/named
    ]# cp -p named.localhost bj.test.cn.zone
    ]# vim bj.test.cn.zone       #编辑区域文件
    $TTL 1D
    @   IN SOA  @ rname.invalid. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
    bj.test.cn.   NS  pc207             ;设置域服务器
    pc207         A   192.168.4.207   
    www           A   11.12.13.14
    ]# systemctl restart named              #重启服务
    ]# systemctl enable named
    
  • 测试

    ]# nslookup www.bj.test.cn 192.168.4.207
    Server:		192.168.4.207
    Address:	192.168.4.207#53
    Name:	www.bj.test.cn
    Address: 11.12.13.14
    

 

五、缓存DNS

  • 作用:加速解析过程,让客户端最快得到解析结果。

  • 软件包:bind bind-chroot

  • 方式

    • 全局转发:

      • 将请求转发给指定的公共DNS(其他缓存DNS),请求递归服务。
    • 根域迭代:

      • 依次向根、一级、二级...域的DNS服务器迭代。
  • 实例:

    • 思路:192.168.4.254作为缓存DNS服务器,真正的DNS是172.40.1.10

    1.安装软件包

    ]# yum -y install bind bind-chroot
    

    2.编辑配置文件

    ]# cat /etc/resolv.comf
    nameserver 172.40.1.10
    
    ]# vim /etc/named.conf
    options {
        directory    "/var/named";
        forwarders    { 172.40.1.10; };     #当本地缓存中没有对应的解析时指定去172.40.1.10解析
    };
    ]# systemctl restart named
    

    3.客户端.虚拟机使用解析

    ]# nslookup www.360.com 192.168.4.254
    

 

六、Split分离解析

  • 让客户端访问网络中最近的服务器。
  • 当不同类别的客户机请求解析同一个域名时,得到不同的解析结果(Ip)。
  • 当收到客户机的DNS查询请求的时候,能够区分客户机的来源地址,为不同类别的客户机提供不同的解析结果(IP地址)。

BIND的view视图

  • 根据源地址集合将客户机分类,不同客户机获得不同结果(待遇有差别)。

    • 注意:客户机分类得当(所有的客户端都要找到对应的分类)
    • 注意:由上到下匹配,匹配即停止
    • 注意:所有的zone都必须在view字段中
  • 格式:

    view    "视图名"    {
     match-clients    { IP; }    //匹配客户端地址
     zone    "解析的域名" {
     ...    地址库1;
     }
    };
    
    view   "nsd"    {
     match-clients   {  192.168.4.207;  }   #匹配客户端的地址
     zone "test.cn"    {
     ...... 地址库1;
    }; };
    
    view   "abc"   {
     match-clients  {   any;   }             
     zone "test.cn"    {                           
     ...... 地址库2;
    }; };
    
  • 实例,环境及需求:

    • 权威DNS:svr7.test.cn 192.168.4.7
    • 负责区域:test.cn
    • A记录分离解析 —— 以 www.test.cn 为例
    • 客户机的解析结果:
      • 192.168.4.207 -----> 192.168.4.100
      • 其他地址 ----------> 1.2.3.4
    操作步骤
    
    虚拟机A
    1.修改配置文件/etc/named.conf
    view  "nsa"  {
        match-client  { 192.168.4.207; };
        zone  "test.cn"  {
        type    master;
        file    "test.cn.nsd";
        };
    };
    view  "abc"  {
        match-client  { any; };
        zone  "test.cn"  {
        type  master;
        file  "test.cn.abc";
        };
    };
    
    2.建立地址库文件
    ]# vim /var/named/test.cn.nsd
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    192.168.4.100
    ]# vim /var/named/test.cn.abc
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    1.2.3.4
    
    3.重启named服务
    ]# systemctl restart named
    
    4.在虚拟机A、B分别测试解析
    
    

 

七、DNS缓存使用变量

]# vim /etc/named.conf
options {
    directory    "/var/named";
};
acl 变量名 { 地址1; 地址2; 地址3; 地址4;...};
view "nsd" {
    match-clients { 变量名; };
    zone "test.cn" {
    type    master;
    file    "test.cn.nsd";
    };
};
view "abc" {
    match-clients { any; };
    zone "test.cn" {
    type    master;
    file    "test.cn.abc";
    };
};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!