设为首页 收藏本站
查看: 655|回复: 0

[经验分享] linux虚拟机玩转DNS

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-28 08:20:04 | 显示全部楼层 |阅读模式
一、DNS的基本工作原理:

    DNS是域名解析服务:domain name service
        正向解析:从域名到IP的解析
        反向解析:从IP到域名的解析
    一次域名解析过程:
       主机发出解析www.mm.com 的请求---->查找主机hosts文件的缓存记录---->查找管理本域的DNS服务器---->查找根服务器---->遍历查找----->找到www.mm.com的ip地址---->根DNS服务器把结果反馈给发出请求的下级DNS服务器---->DNS服务器将结果缓存并返回给主机---->主机把结果缓存并开始链接
    世界上的十三个根DNS服务器:
    一个位于荷兰负责欧洲的域名解析
    一个位于日本负责亚太地区域名解析
    其余的都位于美国,负责全球其他地方的域名解析
    DNS服务器的多层级域名分类


wKiom1U6UEDiC7XoAAFLCxs6Qas651.jpg

    DNS记录的类型:

         A:Address 域名向ip地址转换的记录;

         PTR:Printer ip地址向域名转换的记录;

         NS:代表域内的dns服务器;

         MX:代表域内的邮件服务器;

         CNAME:域名的别名;

         SOA:start of authority用于标示域内主DNS服务器。

QQ截图20150428081937.png



配置文件:etc/hosts #当前主机上缓存下来的一些域名对应ip的记录

          etc/named.conf #主配置文件,定义了所有文件存放的位置
          var/named #工作目录
          etc/resolv.conf #DNS服务器的缓存记录
          etc/nsswitch.conf #定义了先读取hosts缓存,还是先读取resolv缓存
DNS类型:type
        master主DNS
        slave从DNS
        forward转发DNS用于子域转发

二、搭建主DNS服务器步骤

    1. 首先将主机名称修改为符合FQDN格式的名字
          (1)hostname NAME
          (2)echo "NAME" > /proc/sysconfig/hostname
           (3)修改/etc/sysconfig/network文件
          (4)修改/etc/hosts文件
    2.安装named服务的rpm包bind,或者编译安装bind
    3.配置主DNS的主配置文件etc/named.conf;
         使用ss -tunl | grep "53" 查看53端口是不是在tcp和udp上监听
         使用named-checkconf 检查主配置文件有没有语法错误
    4.在/etc/named.rfc1912.zones中定义正向解析区域和反向解析区域;
    5.在/var/named/目录下创建正向解析区域文件,反向解析区域文件;
         使用named-checkzone "区域" /var/named/*zone检查区域文件有没有语法错误
    6.启动named服务 service named start

三、主DNS配置文件:
    1.主配置文件的定义
            listen-on port 53 { 172.16.13.100; };主DNS服务器IP地址53端口

            directory  "/var/named";             定义zone的工作目录
            recursion yes;                       定义允许递归查询
            allow-query { any; };                定义白名单(谁可以通过此DNS解析)           
     logging       file "data/named.run";        日志文件
      zone "." IN {

        type hint;                              定义根DNS,必须定义
        file "named.ca";
       };     
      include "/etc/named.rfc1912.zones";       将所有的zone集中在此文件配置
wKioL1U87KGwBbXbAAKyJjGigaw421.jpg


    2./etc/named.rfc1912.zones的定义
在此文件里我们只需定义两个解析区域即可
         (1)正向解析区域 wuhf.com
          (2)方向解析区域 13.16.172.in-addr.apra  (此为方向解析区域的固定格式)
wKioL1U87fLRlOFZAACfEEp8Alg137.jpg


   3.创建并编辑正向解析区域文件/var/named/wuhf.com.zone
这里我们要注意文件的格式 $TTL 1200 宏定义1200秒更新一次
                         $ORIGIN 定义wuhf.com.字段,下面可以省略以此结尾的名字
            2015042404是版本号,日过此号增加一位,就会通知从服务器过来更新版本
            30M 定义从服务器30分钟过来同步一次数据
            10M 定义如果从服务器同步失败后,多久过来再次尝试连接主服务器
            1W  定义从服务器如果1周内都没有接连到主服务器的话就宣布自己的数据作废
            3H  定义如果解析失败的话,这个失败的结果放在缓存中,3小时候缓存失效
wKiom1U87W-BEvsfAAHB3KX8N14193.jpg


    4.创建并编辑反向解析记录区域文件/var/named/172.16.zone
wKioL1U88ebD4_4BAAH2AeFnOjI576.jpg
    5.检查这些文件有没有语法错误

wKioL1U89HOhG1JbAAB4n08QvzU817.jpg
wKiom1U88xOQXVCAAABlv2kqcxc799.jpg
  6.开启named的服务  service named start
         重读配置文件  rndc reload
7.使用dig工具测试正方向解析成不成功
      正向解析
wKiom1U9DOOA9ej7AABFLXgCzg0379.jpg
wKioL1U9DkazV9OuAABqgtWvFxs382.jpg
     反向解析
wKiom1U9DQfSmhfuAAA-jOnvH3w425.jpg
wKioL1U9DmrAYCFKAADAyrbLdRo117.jpg
         

         

三、搭建从DNS服务器,实现主从同步
   1.在主服务器的解析区域里添加从服务器的名字和A记录(ip)
wKiom1U9DSbBwiy8AABgSmx06pQ574.jpg
   2.在新的虚拟机里装bind工具
   3.新虚拟机,ip地址为172.16.13.101,在此主机上编辑配置文件/etc/named.conf
wKiom1U9DUKh3V9cAAMNKJW_kgU477.jpg
   4.编辑区域文件/etc/named.rfc1912.zones
wKioL1U9DsKTD-NiAAE9LlNbOWs124.jpg
   5.使用named-checkconf检查配置文件语法错误
   6.使用service named start,开启named服务
   7.使用rndc reload从主服务器上更新正反向解析文件到本地/var/named/slaves/
wKiom1U9DXnArdImAAHvjGVcTCU165.jpg


四 、搭建子DNS服务器,实现子域查询
   1.在主服务器的解析区域里添加子服务器的名字和A记录(ip)

wKiom1U9Db_CVzLmAABgsXHCkkE622.jpg
   2.在新的虚拟机里装bind工具
       yum install bind
   3.新虚拟机,ip地址为172.16.12.20,在此主机上编辑配置文件/etc/named.conf
      wKiom1U9DfawP5k3AANETGwVyGg798.jpg
   4.编辑区域文件/etc/named.rfc1912.zones
wKiom1U9Dg-iWJs0AAFpJRjjdvo902.jpg
   5.创建/var/named/目录下的正反向解析文件
  
wKioL1U9D4yTNp9vAAEU1lh5VXw867.jpg
wKiom1U9Dimgm8jyAAFFuAF5IjI920.jpg

   6.使用named-checkconf检查配置文件语法错误
     使用named-checkzone命令 检查正反向解析文件有没有语法错误
   7.使用service named start,开启named服务
   8.使用dig命令尝试子域解析父域,父域解析子域
wKioL1U9D7iyrMq3AAJ5kzt-mN0252.jpg
wKiom1U9Dlbi1nxwAAKRY_ULhrQ079.jpg


说明:子DNS服务器搭建与父DNS服务器搭建是一样的步骤,只不过要在/etc/named.conf下的option选项定义全局转发,或者在/etc/named.rfc1912.zones中添加一个转发区域实现区域转发,这样就可以实现在子域中解析父域的地址不用去寻找根了。
     完全转发:只要DNS server无法解析的请求就统统转发到option中定义的forwarders上
                   option { forward first|only;
                        forwarders { 父域地址;}; };
     部分转发:只转发已经在声明type forward; 所对应域的解析请求,对于其他域的解析请求按常规方法处理
                 zone "wuhf.com" IN {

                      type forward;
                      forward first|only;
                      forwarders { 父域地址; };  };
    first:先请求递归,若没有予以响应,使用迭代去找根
    only:如果想forwarders转发的请求没有的得到相应,就放弃解析并返回错误结果。
   

五、视图VIEW
   将内网与外网分隔开,实现内网用户访问域名www.bai.com 将引导至内网的主机地址,外网用户要访      问 www.bai.com  将被引导至不一样的外网地址
   实现内网用户与外网用户访问同样的域名,被视图解析到不同的地址上。

   在国内,像某宝的网站,每个省得用户访问的域名就是被解析到用户所在省份的服务器上,可能还会细分到联通、电信网段的用户,根据省份网段不同,被分配到不一样的服务器上。如:河南省联通用户输入某宝的域名后,会被解析到河南省联通机房的某宝服务器上。
   实现步骤:
   1.创建具有视图功能的主配置文件
       在/etc/named.conf中定义内外网的区域,使用 val 访问控制定义
定义内网段       acl internal {
                      192.168.0.0/24;
                      127.0.0.1/8;
                    };
定义外网段       acl external {
                    172.16.0.0/16;
                  };
定义工作目录     options {
                 directory "/var/named";
                 recursion yes;
                   };
wKioL1U-J3Tjw4fFAAFUL7ReVSM487.jpg    
      在/etc/named.rfc1912zones中创建view视图

定义内网view      view "inter" {
                         match-clients { internal; };
                          recursion yes;
                       zone "." IN {
                             type hint;
                             file "named.ca";
                         };
                        zone "wuhf.com" IN {
                              type master;
                              file "wuhf.inter.zone";
                            };
                      };
定义外网view      
                   view "exter" {
                         match-clients { external; };
                          recursion yes;
                       zone "." IN {
                             type hint;
                             file "named.ca";
                         };
                        zone "wuhf.com" IN {
                              type master;
                              file "wuhf.exter.zone";
                            };
                      };
wKiom1U-JjThUIrxAAIQHjOHd_U583.jpg

   2.在每个视图中定义相同的区域,在相同的区域中创建不同的区域文件,区域文件中相同的域名,解析     成不同的地址
      vim /var/named/wuhf.inter.zone
          $TTL 1200
          $ORIGIN wuhf.com.
          @           IN   SOA     ns1.wuhf.com.   admin.wuhf.com. (
                                                        2015042701
                                                        30M
                                                        10M
                                                        7D
                                                        1H   )
                      IN   NS        ns1
           ns1        IN   A         192.168.0.103     
           www        IN   A         192.168.0.123
   wKioL1U-KH6j3JanAAC_UNdgqG8686.jpg       
      vim /var/named/wuhf.exter.zone


          $TTL 1200
          $ORIGIN wuhf.com.
          @           IN   SOA     ns1.wuhf.com.   admin.wuhf.com. (
                                                        2015042701
                                                        30M
                                                        10M
                                                        7D
                                                        1H   )
                      IN   NS        ns1
           ns1        IN   A         172.16.12.12     
           www        IN   A         172.16.12.123   
   wKiom1U-JzODi1qCAAC2kdMHEAQ118.jpg
   3.测试,在一台属于内网的主机和一台属于外网的主机上使用dig测试能不能正向解析
     还有另一个测试办法,一台虚拟机配置两块网卡,一个设置为192.168.0.0/24网段地址,一个设置为172.16.0.0/16网段地址
先在虚拟机上添加一块网卡,然后再/etc/sysconfig/network-scripts/目录下,cp ifcfg-eth0 ifcfg-eth1,修改eth1里面的配置文件,设定eth0地址为172.16.12.20,设定eth1地址为192.168.13.13
(1)使用ip link set eth1 down,关闭eth1,使用dig www.wuhf.com @172.16.12.12测试,结果被视图解析到外网网段172.16.0.0
wKioL1U-Krzx0aycAAJWVR1QrlE982.jpg
(2)使用ip link set eth0 down,关闭eth1,使用ip link set eth1 up,开启eth1;使用dig www.wuhf.com @172.16.12.12测试,结果被视图解析到内网网段192.168.0.0
    注意:这里测试内网的dig命令却指向172.16.12.12,没有使用 dig www.wuhf.com @192.168.0.103,是因为我们的测试服务器没有陪双网卡,只有一个外网的地址,所以......将就一下吧。

wKioL1U-K-DTYSGhAAKVA3-J-cw476.jpg




六、DNS配置所需其他知识
关于DNS的安全访问控制指令:
         将它们写在配置文件的options中实现访问控制:
                        allow-query {}: 允许查询的主机;白名单;
                        allow-transfer {}:允许区域传送的主机;白名单;
                        allow-recursion {}: 允许递归的主机;
                        allow-update {}: 允许更新区域数据库中的内容;


关于测试命令dig、nslookup、host:
(1)dig命令

   dig [-t type] name [@SERVER] [query options]
        dig用于测试dns系统,因此,不会查询hosts文件进行解析;
        查询选项:
                +[no]trace:跟踪解析过程
                +[no]recurse:进行递归解析
        测试反向解析:
                dig -x IP @SERVER
        模拟区域传送:
               dig -t axfr ZONE_NAME @SERVER
                例如:dig -t axfr magedu.com @172.16.100.11
(2)host命令:
        host [-t type] name [SERVER]
(3)nslookup命令:
        nslookup [-option] [name | -] [server]
        交互式模式:
                nslookup>
                        server IP: 指明使用哪个DNS server进行查询;
                        set q=RR_TYPE: 指明查询的资源记录类型;
                        NAME: 要查询的名称;
关于数据同步命令rndc

        rndc:
        rndc --> rndc (953/tcp)
                rndc COMMAND
                COMMAND:
                        reload: 重载主配置文件和区域解析库文件
                        reload zone: 重载区域解析库文件
                        retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;
                        notify zone: 重新对区域传送发通知;
                        reconfig: 重载主配置文件
                        querylog: 开启或关闭查询日志;
                        trace: 递增debug级别;
                        trace LEVEL: 指定使用的级别;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61349-1-1.html 上篇帖子: linux mini模式下如何制作本地yum源,并用远程工具安装 vim 下篇帖子: 利用linux服务器sendmail发送邮件方式 虚拟机 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表