DNS服务搭建

  1. DNS介绍

    • DNS是一个域名系统,分布式数据库,存的是域名和IP,可以通过域名找到对应的IP,也就找到了对应ip的主机

    • DNS协议运行在UDP协议上,使用53端口

    • 应用场景:需要域名解析的地方

  2. DNS部署

    • yum -y install bind bind-chroot

      • bind DNS主程序包

      • bind-chroot DNS安全包,改变默认的DNS目录,运行在监牢模式下

    • 不使用chroot模式启动DNS

      • systemctl enable named

      • systemctl start named

    • 使用chroot模式启动DNS

      • -p 代表权限也一起复制

      • cp -p /etc/named.conf /var/named/chroot/etc/ DNS配置文件复制

      • cp -p /var/named/named.* /var/named/chroot/var/named/ 数据库复制

      • named-checkconf /var/named/chroot/etc/named.conf 检查配置文件是否正确

      • systemctl enable named-chroot.service

      • systemctl start named-chroot

  3. 配置文件

    •  options {
              listen-on port 53 { 192.168.254.129; };#监听地址
              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; }; #服务对象改为any
              recursion yes;   #开启递归查询
              dnssec-enable yes; # 开启安全机制
              dnssec-validation yes;
       
              /* Path to ISC DLV key */
              bindkeys-file "/etc/named.root.key"; # 使用公钥私钥实现安全
       
              managed-keys-directory "/var/named/dynamic";
       
              pid-file "/run/named/named.pid";
              session-keyfile "/run/named/session.key";
       };
       
       #正向解析配置文件
       zone "pymaster.com" IN {
            type master; #类型
              file "pymaster.com.zone";# 数据库文件路径
       };
       #反向解析配置文件,网段倒着写
       zone "154.168.192.in_addr.arpa" IN {
              type master; #类型
              file "192.168.245.arpa";# 数据库文件路径
       };
       
    • 正向解析数据库文件

      • 切换到chroot/var/named/目录 ,辅助正向解析文件,重命名为名称有有意义的数据库文件,就用域名好了

        • cp named.localhost pymaster.com.zone

        • chgrp named pymaster.com.zone # 修改目录掌控权限用户组

        • vim pymaster.com.zone

        •  $TTL 1D   # 缓存周期一天
           pymaster.com.   IN SOA ns1.pymaster.com. rname.invalid. (
           # 指定对那个域进行解析     # 域名服务器
                                                  0       ; serial
                                                  1D     ; refresh
                                                  1H     ; retry
                                                  1W     ; expire
                                                  3H )   ; minimum
                  NS     ns1.pymaster.com.   # 指向域名解析服务器
           ns1     A       192.168.254.129     # 可以理解为自解析
           www     A       192.168.254.251     #A代表正向,PTR代表反向
           news   CNAME   www # CNAME 别名
            # MX 域名是邮件服务器域名
           
        • 检查数据库文件

          • named-checkzone pymaster.com /var/named/chroot/var/named/pymaster.com.zone

        • 检查配置文件

          • named-checkconf /var/named/chroot/etc/named.conf

        • systemctl enable named-chroot.service

        • systemctl start named-chroot

        • lsof -i:53 查看端口服务开启了没

    • 反向解析数据库文件

      • cp named.loopback 192.168.254.arpa

      • chgrp named 192.168.254.arpa

      • 打开文件

        •  $TTL 1D
           254.168.192.in-addr.arpa.       IN SOA ns1.pymaster.com. rname.invalid. (
                                                  0       ; serial
                                                  1D     ; refresh
                                                  1H     ; retry
                                                  1W     ; expire
                                                  3H )   ; minimum
                  NS     ns1.pymaster.com.
           251     PTR     www.pymaster.com.   # 此处由于版本问题,不能只写www,正向解析可以
           

           

    • 最后做测试

  4. DNS服务器容灾

    • DNS单点故障

      • 解决方法:使用多台DNS服务器,实现主从同步

      • 主配置文件不会同步,区域数据库文件会同步

      • 备用服务器按关闭防火墙,安装bind 和bind-chroot

      • 复制主服务器的主配文件

        • scp root@192.168.254.129:/var/named/chroot/etc/named.conf /var/named/chroot/etc/

        • 修改权限目录为named且修改文件

          •      masterfile-format text;  # 全局设置设置获取的区域数据库文件文件不加密
               
             };
             
             zone "." IN {
                    type hint;
                    file "named.ca";
             };
             
             zone "pymaster.com" IN {
                    type slave;
                    file "pymaster.com.zone";
                    masters { 192.168.254.129; } ; # 这样会从主服务器中获取区域数据库文件
             };
             
             zone "254.168.192.in-addr.arpa" IN {
                    type slave;
                    file "192.168.254.arpa";
                    masters { 192.168.254.129; };
             };
          • 启动服务后备用服务器会从主服务器拷贝区域数据库文件

          • 将服务器本身作为dns服务器用以测试

      • 做主从同步

        • 当主数据库更新后,备用数据库怎么做数据同步呢

        • 配置文件中的1D ; refresh 就是设定多久从主服务器刷新一次区域数据库文件,这里是1天,
  5. 智能解析

    • 原理:在DNS中植入全世界的ip库以及ip对应的地域,当用户请求解析时,DNS会根据其源ip来定位它所属的区域,然后去找这个区域的view视图查询对应的域名的区域数据库文件做解析,实现不同地域用户使用不同的解析,可以实现CDN

    • 实现方法

      • 先创建IP库对请求解析的主机IP做地域匹配,然后找到对应视图view,使用对应视图的对应区域数据库文件做DNS解析,这样查询量就会小一点,提高效率

        •  acl     sh{
           192.168.254.127;
           };
           # ip库
           acl     bj{
           192.168.254.128;
           };
           # 此时192.168.254.129不在bj,也不再在sh,所以进行查询时结果是pymaster.com.zone.ot区域数据库文件中的解析记录,此处结果是3.3.3.3,数值纯为模拟
           #北京地域IP视图
           view beijing{
           match-clients { bj; };
           # 对应的区域数据库文件
           zone "." IN {
                  type hint;
                  file "named.ca";
           };
           
           zone "pymaster.com" IN {
                  type master;
                  file "pymaster.com.zone.bj";
           };
           };
           #上海地域IP视图
           view shanghai{
           match-clients { sh; };
           
           zone "." IN {
                  type hint;
                  file "named.ca";
           };
           
           zone "pymaster.com" IN {
                  type master;
                  file "pymaster.com.zone.sh";
           };
           };
           
           view qita{
           match-clients { any; };
           
           zone "." IN {
                  type hint;
                  file "named.ca";
           };
           
           zone "pymaster.com" IN {
                  type master;
                  file "pymaster.com.zone.ot";
           };
           };
           

           

        •  

原文地址:https://www.cnblogs.com/W-Y-C/p/13362291.html