• 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";
             };
             };
             

             

          •  

  • 相关阅读:
    SVM – 线性分类器
    解决mybatis generator无法覆盖XML
    windows下IDEA的terminal配置bash命令
    mysqldump定时备份数据库
    linux清理日志脚本
    MySQL主从同步配置
    mysql binlog日志自动清理及手动删除
    linux搭建FTP服务器并整合Nginx
    mysql解除死锁状态
    git取消跟踪已版本控制的文件
  • 原文地址:https://www.cnblogs.com/W-Y-C/p/13362291.html
Copyright © 2020-2023  润新知