DNS域名管理服务学习笔记

旧时模样 提交于 2019-12-02 00:08:24

DNS域名管理服务

一、DNS介绍

  • 域名:

有特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够是人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。

1.DNS的作用

  • 域名的正向解析

    将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机

    域名——>IP A记录

  • 域名的方向解析

    将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名

    IP——>域名 PTR记录

2.DNS协议及端口

  • TCP 53(主从同步)
  • UDP 53(正常查询)
  • 启动脚本:/etc/init.d/named

3.DNS的结构

DNS域名管理服务学习笔记

根域.

  • 在整个DNS系统的最上方一定是.(小数点)这个DNS服务器(称为root),也叫“根域”。
  • 根域<13台 全世界只有13台;1个位主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本

一级域名<顶级域|国家域>

com :顶级域,由ICANN组织指定和管理

分类:

  • 国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等
  • 通用顶级域名:com(商业机构)、org(非营利组织)、edu(教育机构)等
  • 新通用顶级域名:red(红色、热情)、top(顶级、高端)

baidu:二级域(注册域),可由个人或组织申请注册

www:三级域(子域),服务器网站名代表

域名机构

收费:新网|万网

免费域名:TK顶级域名、TK域名DNS、TK域名商

http://www.freehao123.com

3.DNS工作原理

DNS域名管理服务学习笔记

  • 客户机首先查找本地hosts文件,如果有则返回,否则进行下一步

  • 客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步

  • 将请求转发给指向的DNS服务器

  • 查看域名是否本地解析,是则本地解析返回,否则进行下一步

  • 本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步

如果询问一次得到结果 递归查询 C-S

如果询问多次得到结果 迭代查询 S-S

dig +trace www.baidu.com    --追踪dns解析过程
dig @server www.baiducom    --正向解析查询
dig -x 192.168.0.1 @server  --反向解析查询
dig +trace www.baidu.com    --追踪一个域名解析过程

二、DNS服务器搭建

  • DNS的域名解析都是udp/53. 主从之间的数据传输默认使用tcp/53

  • DNS软件:

    Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain,它是目前世界上使用最为广泛的DNS服务器软件,支持各种Unix平台和Windows平台。Bind现在由互联网系统协会(Internet Systems Consortium)负责开发与维护

需求1:

搭建DNS服务器,能够将www.misshou.io解析成192.168.1.254——>正向解析

思路:

  1. 关闭防火墙和selinux

    [root@localhost ~]# vim /etc/sysconfig
    [root@localhost ~]# vim /etc/sysconfig/network
    [root@localhost ~]# service iptables stop
    [root@localhost ~]# chkconfig iptables off
    [root@localhost ~]# getenforce 
    Permissive
    [root@localhost ~]# vim /etc/sysconfig/selinux
    [root@localhost ~]# grep ^SELINUX /etc/sysconfig/selinux
    SELINUX=disabled
    SELINUXTYPE=targeted 
  2. 配置yum源

    已配,略

  3. 软件三部曲

    • 查看并安装软件

      [root@server ~]#yum -y install bind
    • 确定成功安装

      [root@server ~]# rpm -q bind
      bind-9.8.2-0.30.rc1.el6.x86_64
    • 查看软件列表

      /etc/logrotate.d/named         --日志轮转文件
      /etc/named                     --配置文件的主目录
      /etc/named.conf                    --主配置文件
      /etc/named.rfc1912.zones       --Zone文件,定义域
      /etc/rc.d/init.d/named         --启动脚本
      
      /usr/sbin/named                    --二进制命令
      /usr/sbin/named-checkconf      --检查配置文件的命令 named.conf  named.rfc1912.zones
      /usr/sbin/named-checkzone      --检查区域文件的命令 
      
      /var/log/named.log             --日志文件
      /var/named                     --数据文件的主目录
      /var/named/data
      /var/named/named.ca                --根域服务器
      /var/named/named.empty
      /var/named/named.localhost     --正向解析区域文件的模板
      /var/named/named.loopback      --反向解析区域文件的模板
      /var/named/slaves              --从dns服务器下载文件的默认路径
      /var/run/named                 --进程文件
      
  4. 了解配置文件(语法、参数配置)——>man 5 xxx.conf

    • 主配置文件:
    [root@server ~]# vim /etc/named.conf
    options {
           listen-on port 53 { 127.0.0.1; any; };       --监听方式,any表示全网监听    
           listen-on-v6 port 53 { ::1; };
           directory       "/var/named";                --数据文件的主目录
           dump-file       "/var/named/data/cache_dump.db"; --DNS缓存
           statistics-file "/var/named/data/named_stats.txt";   --统计
           memstatistics-file "/var/named/data/named_mem_stats.txt";    --内存统计
           allow-query     { localhost; any; };     --允许哪些人可以查询;any代表任何人
           recursion yes;                               --是否递归
    
           dnssec-enable yes;                           --dns安全扩展机制(签名认证)
           dnssec-validation yes;
           dnssec-lookaside auto;
    
           /* Path to ISC DLV key */
           bindkeys-file "/etc/named.iscdlv.key";
    
           managed-keys-directory "/var/named/dynamic";
    };
    说明:
    #DNSSEC 域名系统安全,它是DNS的安全扩展协议
    #DLV DNSSEC 后备秘钥
    #这些安全机制的设定,是为了保护DNS服务器与用户之间的数据安全,避免恶意数据对用户的欺骗
    
    zone "." IN {
           type hint;
           file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
    • 子配置文件:
    [root@server ~]# vim /etc/named.rfc1912.zones
    
    //定义正向域的模板
    zone "localhost.localdomain" IN {
           type master;
           file "named.localhost";
           allow-update { none; };
    };
    
    //定义反向域的模板
    zone "1.0.0.127.in-addr.arpa" IN {
           type master;
           file "named.loopback";
           allow-update { none; };
    };
    
    [root@server named]# cd /var/named/
    [root@server named]# ll
    -rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
    -rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
    drwxrwx---. 2 named named 4096 Oct 15  2014 slaves
    
    #解释:
    #    $ITL    --缓存的生命周期
    #    @ = zonename = cnpcic.com   --当前域
    #    IN      --互联网
    #    SOA     --开始授权
    #    NS      --DNS服务端    nameserver
    #    A       --ipv4正向
    #    AAAA    --ipv6
    #    CNAME   --别名
    #    MX      ---邮件交互记录   5 代表数字优先级 数字越小优先级越高
    
    [root@server named]# cat named.localhost
    $TTL 1D
    @    IN SOA  @ rname.invalid. (
                    0   ; serial        --更新序列号
                    1D  ; refresh       --更新间隔(从服务器下载数据)
                    1H  ; retry         --失败重试
                    1W  ; expire        --区域文件的过期时间
                    3H )    ; minimum   --缓存的最小生存周期
    NS  @
    A   127.0.0.1
    AAAA    ::1
  5. 根据需求通过修改配置文件完成服务的搭建

    dnl.cnpcchad.cot——>10.184.162.99

    #1.修改主配置文件/etc/named.conf——>监听方式和允许谁来查询
    [root@server ~]# vim /etc/named.conf
    options {
           listen-on port 53 { 127.0.0.1; any; }; --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";
           allow-query     { localhost; any; }; --any允许任何人查询
           recursion yes;
    
           dnssec-enable yes;
           dnssec-validation yes;
           dnssec-lookaside auto;
    
           /* Path to ISC DLV key */
           bindkeys-file "/etc/named.iscdlv.key";
    
           managed-keys-directory "/var/named/dynamic";
    };
    
    #2.修改子配置文件/etc/named.rfc1912.zones ——>定义管理域 cnpcchad.cot
    [root@server ~]# vim /etc/named.rfc1912.zones
    在该文件最后面添加如下内容:
    zone "cnpcchad.cot" IN {
           type master;
           file "cnpcchad.cot.zone";
           allow-update { none; };
    };
    
    #3.在/var/named目录创建相应的zone文件(cnpcchad.cot.zone)
    [root@server ~]# ll /var/named
    -rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
    
    [root@server ~]# cp -p /var/named/named.localhost /var/named/cnpcchad.cot.zone
    [root@server ~]# ll /var/named/cnpcchad.cot.zone
    -rw-r-----. 1 root named 152 Jun 21  2007 /var/named/cnpcchad.cot.zone
    
    [root@server ~]# vim /var/named/cnpcchad.cot.zone
    $TTL 1D
    @       IN SOA cnpcchad.cot. rname.invalid. (
                                           0       ; serial
                                           1D      ; refresh
                                           1H      ; retry
                                           1W      ; expire
                                           3H )    ; minimum
    @       NS      dns1.cnpcchad.cot.       //dns1可以任意指定,但是需跟后面的A记录保持一致
    dns1    A       192.168.1.128            //前两行一定是当前DNS服务器的IP
    daniela  A       192.168.1.129
           AAAA    ::1
    
    #4.使用命令检查当前配置语法是否正确
    [root@server ~]# named-checkconf /etc/named.conf
    [root@server ~]# named-checkconf /etc/named.rfc1912.zones
    [root@server ~]# cd /var/named/
    [root@server named]# ls
    cnpcchad.cot.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
    [root@server named]# named-checkzone cnpcchad.cot.zone cnpcchad.cot.zone //区域文件写2遍
    zone cnpcchad.cot.zone/IN: loaded serial 0
    OK
  6. 启动服务,开机自启动

    [root@server named]# service named start
    Generating /etc/rndc.key:                                  [  OK  ]
    Starting named:                                            [  OK  ]
    [root@server named]# chkconfig named on
    [root@server named]# netstat -nltup|grep 53
    tcp        0      0 192.168.1.128:53            0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 ::1:53                      :::*                        LISTEN      20137/named         
    tcp        0      0 ::1:953                     :::*                        LISTEN      20137/named         
    udp        0      0 192.168.1.128:53            0.0.0.0:*                               20137/named         
    udp        0      0 127.0.0.1:53                0.0.0.0:*                               20137/named         
    udp        0      0 ::1:53                      :::*                                    20137/named  
  7. 测试验证

client端:192.168.1.129

#1.指定DNS服务器
[root@client ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 192.168.1.128
#2.使用相应的工具测试
[root@client ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
[root@client ~]# getenforce
Enforcing
[root@client ~]# setenforce 0
[root@client ~]# getenforce
Permissive

#nslookup命令
[root@client ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.129

#dig命令
[root@client ~]# dig @192.168.1.128 daniela.cnpcchad.cot
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 daniela.cnpcchad.cot
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52861
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;daniela.cnpcchad.cot.      IN  A

;; ANSWER SECTION:
daniela.cnpcchad.cot.   86400   IN  A   192.168.1.129

;; AUTHORITY SECTION:
cnpcchad.cot.       86400   IN  NS  dns1.cnpcchad.cot.

;; ADDITIONAL SECTION:
dns1.cnpcchad.cot.  86400   IN  A   192.168.1.128

;; Query time: 2 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Thu Nov 21 17:51:39 2019
;; MSG SIZE  rcvd: 89

#host命令
[root@client ~]# host daniela.cnpcchad.cot
daniela.cnpcchad.cot has address 192.168.1.129
daniela.cnpcchad.cot has IPv6 address ::1

结果:
1.看到以上信息说明正向解析没有问题
2.不能够方向解析,原因没有配置
3.如果配置文件没有错误,服务启动了,那么解析不了需检查你的防火墙selinux和网络

需求2:

搭建DNS服务器,能够正向和方向解析192.168.1.254——www.misshou.io
步骤:

#1./etc/named.conf
#2./etc/named.rfc1912.zones     //定义了cnpcchad.cot正向域
[root@server ~]# vim /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";
        allow-update { none; };
};
#3.创建192.168.1.zone文件
[root@server ~]# vim /var/named/192.168.1.zone 
$TTL 1D
@       IN SOA  cnpcchad.cot rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1.cnpcchad.cot   //如果dns1.cnpcchad.cot在正向区域文件存在,可以不用写A记录
dns1    A       192.168.1.128
128     PTR     daniela.cnpcchad.cot.   //128对应的是192.168.1.128

#4.重启服务
[root@server ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]

#5.测试验证
[root@client ~]#echo nameserver 192.168.1.128 >/etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 192.168.1.128
#方式1:
[root@client ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.129

[root@client ~]# nslookup 192.168.1.129
Server:     192.168.1.128
Address:    192.168.1.128#53

129.1.168.192.in-addr.arpa  name = daniela.cnpcchad.cot.
#方式2:
[root@client ~]# dig @192.168.1.128 -x 192.168.1.129

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 -x 192.168.1.129
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13524
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;129.1.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
129.1.168.192.in-addr.arpa. 86400 IN    PTR daniela.cnpcchad.cot.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN  NS  dns1.cnpcchad.cot.

;; ADDITIONAL SECTION:
dns1.cnpcchad.cot.  86400   IN  A   192.168.1.128

;; Query time: 1 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Fri Nov 22 09:07:04 2019
;; MSG SIZE  rcvd: 113
#方式3:
[root@client ~]# host 192.168.1.129
129.1.168.192.in-addr.arpa domain name pointer daniela.cnpcchad.cot.

三、主从DNS搭建

1.搭建时间同步服务器

方法1:

ntp(network time protocol) 端口:123

[root@server ~]# vim /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap   //允许192.168.1.0网段的主机同步时间
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict 10.1.1.0 mask 255.0.0.0 nomodify notrap    

[root@client ~]# ntpdate 192.168.1.128

方法2:

vim /etc/xinetd.d/time-dgram
service time
{
# This is for quick on or off of the service
        disable         = no
        ...

}

[root@server ~]# vim /etc/xinetd.d/time-stream 
service time
{
        disable         = no
        ...
}

[root@server ~]# netstat -nltup|grep :37
tcp        0      0 :::37                       :::*                        LISTEN      5005/xinetd         
[root@server ~]# netstat -nltup|grep 37
tcp        0      0 :::37                       :::*                        LISTEN      5005/xinetd 
#客户端同步时间:
[root@client2 ~]# rdate -s 192.168.1.128
[root@client2 ~]# date
Fri Nov 22 08:36:12 PST 2019

2.部署安装

思路:

1.master和slave的系统时间保持一致

2.slave服务器上安装相应的软件(系统版本、软件版本高度保持一致)

3.根据需求修改相应的配置文件(master和slave都应该去修改)

步骤:

#1.同步master和slave的系统时间
master和slave上都要操作:
[root@master-server ~]# crontab -e
*/2 * * * *  /usr/bin/rdate -s 192.168.1.128 &>/dev/null

[root@master-slave ~]# crontab -e
*/2 * * * *  /usr/bin/rdate -s 192.168.1.128 &>/dev/null

#2.搭建备用的dns服务器
--以下操作在slave上进行
1)安装软件
yum -y install bind
2)修改配置文件
[root@slave-server ~]# vim /etc/named.conf
#两个any      定义监听方式以及允许谁来查询
3)修改子配置文件   
[root@slave-server ~]# vim /etc/named.rfc1912.zones
在文件的最下面增加以下内容:
zone "cnpcchad.cot" IN {
        type slave;         //类型是slave
        masters {192.168.1.128;};   //指定master dns的ip地址
        file "salves/slave.cnpcchad.cot";   //同步过来的文件的保存路径及名字
};

#3.在master上操作
1)/etc/named.conf

2)/etc/named.rfc1912.zones
zone "cnpcchad.cot" IN {
        type master;
        file "cnpcchad.cot.zone";
        allow-update { none; };         //删除此行
};

#4.测试验证
[root@client2 ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]     
[root@client2 ~]# getenforce 
Enforcing
[root@client2 ~]# setenforce 0
[root@client2 ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf
[root@client2 ~]# echo nameserver 192.168.1.129 >> /etc/resolv.conf
[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.254

[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.129
Address:    192.168.1.129#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.254

思考:如果只允许指定的slave来同步数据怎么做?

options {
        listen-on port 53 { 127.0.0.1; any; };
        listen-on-v6 port 53 { ::1; };
        allow-transfer  {192.168.1.129;};   //指定允许哪个slave来下载数据
        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";
        allow-query     { localhost; any; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!