理论 :DNS域名解析服务-——理论讲解

前言:

  • BIND域名服务基础
    • DNS系统的作用及类型
    • BIND的安装和配置文件
  • 使用BIND构建域名服务器
    • 构建缓存域名服务器
    • 构建主、从域名服务器

重点步骤:找主配置文件,找启动脚本

一: DNS系统的作用

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

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

ip解析域名,多用于测试

1.3 DNS系统的分布式数据结构

《理论 :DNS域名解析服务-——理论讲解》

www.sina.com.cn. 最后一个点是根,整体就是完全合格域名

www是主机名称,sina二级域名,com.cn是顶级域名 .是根

二 : DNS系统类型

2.1 缓存域名服务器

  • 也称为高速缓存服务器
  • 通过向其他域名服务器查询获得域名->IP地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

在服务安装完毕时,就是缓存服务器

2.2 主域名服务器(master)

  • master主服务器
  • 特定DNS区域的官方服务器,具有唯一性
  • 负责维护该区域内所有域名->IP地址的映射记录

2.3 从域名服务器(slave)

  • slave 服务器
  • 也称为辅助域名服务器
  • 其维护的域名->IP地址记录,来源于主域名服务器

三 : BIND 域名服务

3.1 BIND服务简述

  • BIND(Berkeley Internet Name Daemon)
    • 伯克利Internet域名服务
  • 相关软件包
    • bind-9.9.4-37.el7.x86_64.rpm
    • bind-untils-9.9.4-37.el7.x86_64.rpm
    • bind-libs-9.9.4-37.el7.x86_64.rpm
    • bind-chroot-9.9.4-37.el7.x86_64.rpm

3.2 BIND 域名服务端程序

  • 主要执行程序: /usr/sbin/named
  • 默认监听端口:53 TCP负责连接控制,UDP负责快速解析
  • 主配置文件: /etc/bind/named.conf
  • 保存DNS解析记录的数据文件位于 /var/named/

3.3 BIND域名服务程序主配置文件/etc/bind/named.conf

全局配置部分

  • 设置DNS服务器的全局参数
  • 包括监听地址/端口、数据文件的默认位置等
  • 使用options { ….. };的配置段
[root@localhost ~]# vim /etc/named.conf

options {       '选项'
        listen-on port 53 { any; }; '监听地址所有'
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";   '目录在/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     { 192.168.10.0/24; };       '允许此网段前来解析'

区域配置部分 /etc/named.rfc1912.zones

  • 设置本服务器提供域名解析的特定DNS区域
  • 包括域名、服务器角色、数据文件名等
  • 使用zone “区域名” IN { …… }; 的配置段
#正向解析
zone "localhost" IN {       '主机名,例kgc.com'
        type master;    'master类型,主服务器'
        file "named.localhost";     '区域数据文件名,A记录,可以解析主机头,'
        allow-update { none; };     '允许更新'
        allow-transfer { 173.16.16.2 }  '从服务器的IP地址'
};  

#反向解析
zone "16.16.173.in-addr.arpa" IN {      'ip地址反写'
        type master;            '主服务器'
        file "named.loopback";      '区域配置文件名'
        allow-update { none; };     '允许更新'
};

16.16.173.in-addr.arpa 是ip地址的反写 正写是’173.16.16.?’,?作为一个选项

3.4 区域数据配置文件(A记录) 在区域配置选项中file “*”

3.4.1 全局TTL配置项及SOA记录 /var/named/目录下

  • $TTL (Time To Live, 生存时间)记录
  • SOA (Start Of Authority,授权信息开始)记录
  • 分号“;”开始的部分表示注释信息
$TTL 1D     '有效解析记录的生命周期'
@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'
                                        0       ; serial    
                                        '更新序列号,可以是10位以内的整数,当前0'
                                        1D      ; refresh   
                                        '刷新时间,重新下载地址数据的间隔,1天'
                                        1H      ; retry 
                                        '重试延时,下载失败后的重试间隔,1小时'
                                        1W      ; expire    
                                        '失效时间,超过改时间仍无法下载则放弃,1周'
                                        3H )    ; minimum   
                                        '无效解析记录的生存周期 3小时'
        NS      @   '@指自己'
        A       127.0.0.1   '回环地址,此行的首位没写,默认是自己的主机名,即输入自己的主机名就是在ping自己'
        AAAA    ::1
~                       

若是找不到主服务器,就会每1小时找一次,持续1w即一周

3.4.2 域名解析记录

  • NS域名服务器(Name Server)记录
  • MX邮件交换(Mail Exchange)记录
  • A地址(address)记录,只用在正向解析区域中
  • CNAME 别名 (Canonical Name)记录
$TTL 1D     '有效解析记录的生命周期'
@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'
                                        0       ; serial    
                                        '更新序列号,可以是10位以内的整数,当前0'
                                        1D      ; refresh   
                                        '刷新时间,重新下载地址数据的间隔,1天'
                                        1H      ; retry 
                                        '重试延时,下载失败后的重试间隔,1小时'
                                        1W      ; expire    
                                        '失效时间,超过改时间仍无法下载则放弃,1周'
                                        3H )    ; minimum   
                                        '无效解析记录的生存周期 3小时'
        NS      @       
        A       127.0.0.1
        AAAA    ::1
@   IN  NS  ns1.bdqn.com.   '自己的域名叫做ns1.bdqn.com.'
    IN  MX 10   mail.bdqn.com.  '自己的邮件交换系统优先级别10的叫做mail.bdqn.com.'
ns1 IN  A   58.119.74.203   '主机名即主机头为ns1时,对应的ip地址58.119.74.203'
www IN  A   173.16.16.1     '主机名为www时,对应的ip地址为为173.16.16.1'
mail    IN  A   173.16.16.4 
ftp IN  CNAME   www 'cname,别名,即输入ftp相当于输入www'
~                   

3.5 实验 :正向解析搭建

[root@dns named]# 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
[root@dns named]# 
[root@dns named]# vim /etc/named.conf   '配置主配置文件'
options {
        listen-on port 53 { 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; };   '允许所有主机前来解析'

        /* 
[root@dns named]# vim /etc/named.conf   '配置主配置文件'
zone "." IN {   '根域,不要去动它'
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";     '区域配置文件,接下来要配置它'
include "/etc/named.root.key";
[root@dns named]# cd /var/named '去看一眼默认文件存放路径'
[root@dns named]# ls
chroot      data     dyndb-ldap     kgc.com.zone  named.empty      named.loopback
chroot_sdb  dynamic  kgc.com.local  named.ca      named.localhost  slaves
[root@dns named]# vim /etc/named.rfc1912.zones  '配置区域配置文件'

以ipv6反向解析zone为界限,上面的是正向解析zone,下面是反向解析zone

zone "kgc.com" IN {         '创建一个kgc.com正向解析区域'
        type master;
        file "kgc.com.zone";    
        '存放文件在默认目录/var/named下,名为kgc.com.zone文件,若是没有需要自己创建'
        allow-update { none; };
}; 

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "kgc.com.local";
        allow-update { none; };
};
[root@dns named]# cp -p named.localhost kgc.com.zone    
                '保留权限复制模板,重命名为kgc.com.zone'
[root@dns named]# vim kgc.com.zone  ''修改区域数据,

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      kgc.com.
        A       127.0.0.1
  IN    MX 5    mail.kgc.com.
mail IN A       10.10.10.10
www IN A        9.9.9.9
ftp IN CNAME    www
* IN A  8.8.8.8

@ 代表变量,在这里指域名

此时DNS的正向解析已经配置完毕

[root@dns named]# systemctl start named     '启动服务'
[root@dns named]# netstat -natp |grep named     '查看端口状态-n 数字 -a 所有 -t tcp -p protocol 协议'
tcp        0      0 192.168.139.132:53      0.0.0.0:*               LISTEN      40771/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      40771/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      40771/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      40771/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      40771/named         
[root@dns named]# netstat -naup |grep named     '-u udp'
udp        0      0 192.168.139.132:53      0.0.0.0:*                           40771/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           40771/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           40771/named         
udp6       0      0 ::1:53                  :::*                                40771/named  
[root@dns named]# systemctl stop firewalld      '关闭防火墙'
[root@dns named]# setenforce 0      '关闭安全增强服务'

验证一下

新建一台虚拟机,网卡模式也设置为nat模式,然后指定dns

《理论 :DNS域名解析服务-——理论讲解》

C:\Users\GSY>nslookup mail.kgc.com
服务器:  UnKnown
Address:  192.168.139.132

名称:    mail.kgc.com
Address:  10.10.10.10

C:\Users\GSY>nslookup qqq.kgc.com
服务器:  UnKnown
Address:  192.168.139.132

DNS request timed out.
    timeout was 2 seconds.
名称:    qqq.kgc.com
Address:  123.123.123.123
'也可以在本机的/etc/resolv.conf内输入dns服务器名,告诉主机dns的位置,进行本地验证 '
[root@dns named]# echo "nameserver 192.168.139.132" > /etc/resolv.conf
[root@dns named]# nslookup www.kgc.com
Server:     192.168.139.132
Address:    192.168.139.132#53

Name:   www.kgc.com
Address: 10.0.0.10

3.6 反向域名解析记录 PTR

3.6.1 域名解析记录

  • PTR指针(Point)记录,只用在反向解析区域中
  • 记录的第一列指定IP地址中的主机地址部分即可
14 IN   PTR     www.kgc.com.
13 IN PTR       ftp.kgc.com.

反向解析的区域数据文件配置

[root@dns named]# cp -p named.loopback kgc.com.local    
'创建的文件名与区域反向解析配置的文件名一致'
[root@dns named]# vim kgc.com.local
$TTL 1D
@       IN SOA  kgc.com. admin.kgc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      kgc.com.
        A       14.0.0.14
14 IN   PTR     www.kgc.com.
13 IN PTR       ftp.kgc.com.
2 IN PTR        WWW.GSYDSG.com.

~                             

测试 nslookup 或者host都可以

[root@dns named]# systemctl restart named
[root@dns named]# nslookup 14.0.0.2     '因为在配置文件中是大写的WWW,所以不是域名='
2.0.0.14.in-addr.arpa   name = WWW.GSYDSG.com.
[root@dns named]# host 14.0.0.14
14.0.0.14.in-addr.arpa domain name pointer www.kgc.com.
[root@dns named]# host 14.0.0.13
13.0.0.14.in-addr.arpa domain name pointer ftp.kgc.com.
[root@dns named]# 

3.7 区域数据配置文件的特殊应用——泛域名解析

3.7.1 基于域名解析的负载均衡

  • 同一域名对应到多个IP地址

3.7.2 泛域名解析

  • 找不到精确对应的A记录时,使用“*”进行匹配
www IN A        9.9.9.9
www     IN      A       7.7.7.7
www     IN      A       6.6.6.6
* IN A  8.8.8.8

验证同一域名对应到多个IP地址

C:\Users\GSY>nslookup www.kgc.com
服务器:  UnKnown
Address:  192.168.139.132

DNS request timed out.
    timeout was 2 seconds.
名称:    www.kgc.com
Addresses:  6.6.6.6
          7.7.7.7
          9.9.9.9

3.8 对配置文件进行语法检查 named-checkconf

3.8.1 named-checkconf 工具

[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones 

没啥反应,因为是正常运转的,我把里面的数据改错验证一下

zoe "kgc.com" IN {      '去掉个字母'
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
[root@dns named]# named-checkconf /etc/named.rfc1912.zones 
/etc/named.rfc1912.zones:13: unknown option 'zoe'

错误改回来

[root@dns named]# named-checkconf -z  /etc/named.rfc1912.zones 
zone kgc.com/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 0.0.14.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0

-z 选项,还会查看其中的zone项是否有误

不带-z选项,只查看整体的语法

3.8.2 named-checkzone 工具

[root@dns named]# named-checkzone kgc.com /var/named/kgc.com.zone 
zone kgc.com/IN: loaded serial 0
OK

3.9 实验 :构建缓存域名服务器

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

3.10 构建主、从域名服务器

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

《理论 :DNS域名解析服务-——理论讲解》

slave 从服务器

总结

使用dns域名解析服务

先管关掉防火墙再说

1.需要安装bind*软件

主配置文件/etc/bind/named.conf

数据文件 /var/named

程序 /usr/sbin/named

2.全局配置文件配置 /etc/named.conf

options {       '众多选项'
        listen-on port 53 { 127.0.0.1; };   '监听此地址'
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";   '默认目录在/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; };     '允许此主机名前来解析'

3.区域配置文件 /etc/named.rfc1912.zones

#正向解析
zone "localhost" IN {       “主机名”
        type master;    'master类型,主服务器'
        file "named.localhost";     '区域数据文件名,A记录,可以解析主机头'
        allow-update { none; };     '允许更新'
        allow-transfer { 173.16.16.2 }; '从服务器的IP地址'
};  

zone "localhost" IN {       “主机名”
        type slave; 'slave类型,从服务器'
        file “slaves/bdqn.com.zone”;
        allow-update { none; };     '允许更新'
        masters { 192.168.10.10; }; '主服务器的IP地址'
};
#反向解析
zone "16.16.173.in-addr.arpa" IN {      'ip地址反写'
        type master;            '主服务器'
        file "named.loopback";      '区域配置文件名'
        allow-update { none; };     '允许更新'
};

3.区域数据文件 /var/named/目录下

以其中的named.localhost为模板带权限复制,名字改为区域配置文件中file参数的名字

$TTL 1D     '有效解析记录的生命周期'
@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'
                                        0       ; serial    
                                        '更新序列号,可以是10位以内的整数,当前0'
                                        1D      ; refresh   
                                        '刷新时间,重新下载地址数据的间隔,1天'
                                        1H      ; retry 
                                        '重试延时,下载失败后的重试间隔,1小时'
                                        1W      ; expire    
                                        '失效时间,超过改时间仍无法下载则放弃,1周'
                                        3H )    ; minimum   
                                        '无效解析记录的生存周期 3小时'
        NS      @       
        A       127.0.0.1
        AAAA    ::1
@   IN  NS  ns1.bdqn.com.
    IN  MX 10   mail.bdqn.com.
mail    IN  A   173.16.16.4
ns1 IN  A   58.119.74.203
ftp IN  CNAME   www
www IN  A   173.16.16.1

nslookup可以去检验

可以在/etc/hosts 和/etc/resolv.conf文件中输入dns服务器主机名

并确认,用以快速访问dns地址

《理论 :DNS域名解析服务-——理论讲解》

    原文作者:wx5d8b05ec4cbc3
    原文地址: https://blog.51cto.com/14558445/2453117
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞