centos 6 或Centos 7 DNS服务器 搭建

一、DNS 介绍

  DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,DNS协议运行在UDP协议之上,使用端口号53(Domain), 953(mdc)。这两个端口号。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

二、安装

[root@dns ~]# yum install -y bind bind-chroot bind-utils

  DNS的主程序 bind,还有一个是bind-utils。为了DNS安全考虑,引入了bind-chroot.

  chroot是通过将相关文件封装到一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,将只能访问到伪根目录内的内容,而并不是真实的根目录。安装了chroot这个服务,DNS服务的配置文件都会被安装到我们的伪根里面,会在里面生成一个与原来服务完全相同的一个目录体系结构。该服务的根目录就会把 /var/named/chroot 当成是自己的根目录,这样就可以对我们的真实根目录进行保护,所以建议大家在安装网络服务时最好都附带安装上chroot这个程序。

三、配置

  BIND 的一些服务文档位置和模板:

    /usr/share/doc/bind-9.8.2/sample

  BIND的主配置文件通常是保存在两个位置:

    /etc/named.conf  -BIND服务主配置文件

    /var/named/  -域的zone配置文件

  安装了 bind-chroot 这个程序以后,BIND的主配置文件存放位置就变了,此时BIND的主配置文件会被封装到一个伪根目录内,此时的配置文件位置为:

    /var/named/chroot/etc/named.conf  -BIND服务主配置文件

    /var/named/chroot/var/named  -域的zone配置文件  

  复制模板

[root@dns ~]# cp /etc/named.conf /etc/named.rfc1912.zones /var/named/chroot/etc/
[root@dns ~]# cp -rv /usr/share/doc/bind-*/sample/var/* /var/named/chroot/var/

  修改配置:

  1、声明要解析的域名

 

[root@dns etc]# vim /var/named/chroot/etc/named.conf options { listen-on port 53 { 192.168.1.200; }; //监听本地IP的53端口 //listen-on-v6 port 53 { ::1; }; //取消IPv6的监听,可以不注释 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 { any; }; //接受任何人的DNS解析请求 /*    - 如果你要建立一个 授权域名服务器 服务器, 那么不要开启 recursion(递归) 功能。    - 如果你要建立一个 递归 DNS 服务器, 那么需要开启recursion 功能。    - 如果你的递归DNS服务器有公网IP地址, 你必须开启访问控制功能,只有那些合法用户才可以发询问. 如果不这么做的话,那么你的服服务就会受到DNS 放大攻击。实现BCP38将有效抵御这类攻击。 */ recursion yes; //允许递归查询 dnssec-enable yes; //NDS的安全性,如果开启转发需要关闭此项,否则报错"broken trust chain resolving" dnssec-validation yes; //DNS 安全验证, 如果开启转发功能此项也需要关闭。

     /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic";    //全局转发配置 forward only; forwarders {IP;}; //多IP使用";"隔开 }; logging { channel query { file "/var/log/query.log" versions 100 size 20480k; severity info;           print-category yes;           print-severity yes;           print-time yes; };      category queries { query; }; }; zone "." IN { type hint; file "named.ca"; }; //This is my DNS configuration zone "123.com" IN {                  //域名正向解析配置,建议写在 named.rfc1912.zones 文件中 type master;                // 指定我们要配置的是域主DNS服务器 file "123.com.zone";          // 指定域名的zone文件为123.com.zone ,一般都是以域名.zone 命名 allow-update { none; }; };        // ;号一定要加上,否则会报错 zone "2.168.192.in-addr.arpa" IN { //域名反向解析配置,建议写在 named.rfc1912.zones 文件中,格式一定为 xx.xx.xx.in-addr.arpa type master; file "192.168.2.zone"; allow-update { none; }; }; // End my configuration include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";

 

 

 

 

  2、配置域名和IP的对应关系。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@dns etc]# cd /var/named/chroot/var/named
[root@dns etc]# cp named.localhost 123.com.zone
[root@dns etc]# vim 123.com.zone
$TTL 1D
@       IN SOA  @ 123.com. (                                       ; “.”号必须加上
                                        2017012501      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        IN      MX      10      mail.123.com.         ; MX  添加一条 邮件记录,邮件记录后面要跟域名,它会递归的解析这个域名,所以该域名的资源记录一定要有,后面的 “.” 一定要写上
www     IN      A       192.168.2.10            ;添加A记录
c1    IN      A       192.168.2.11
c2    IN      A       192.168.2.12

  注意:MX记录一定要定义资源记录的最前面,否则就会解析不成功

  $TTL = 1D(默认生存时间=1D、缓存服务器保存记录的时间是1天。也就是告诉缓存服务器保存域的解析记录为1天)

  serial = 2017012501 (序列号=2017012501、我用配置日期作为序列号。这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)

  refresh = 1D (刷新=1D、辅域名服务器每隔24小时查询一个主服务器)

  retry = 1H (1 hour) (重试=3600秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)

  expire = 1W (7 days) (到期=604800秒、辅域名服务器在向主服务更新失败后,7天后删除中的记录。)

  3、配置反向解析

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@dns etc]# cp named.localhost 192.168.2.zone
[root@dns etc]# vim 192.168.2.zone
$TTL 1D
@       IN SOA  @ 123.com. (
                                        2017012501      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
10       IN      PTR     www.123.com.11    IN    PTR  c1.123.com.12    IN    PTR  c2.123.com.

  

  4.启动DNS服务

    [root@dns etc]# service named restart    或  systemctl restart named-chroot(centos 7)

    Stopping named:           [ OK ]
    Starting named:            [FAILED]   

  查看日志:

    [root@dns etc]# tail -f /var/log/messages

    权限问题,查看named.rfc1912.zones 发现 其他用户 没有 r 权限.

    添加权限   

      [root@dns etc]# chmod o+r /var/named/chroot/etc/named.rfc1912.zones

  

   [root@dns etc]# service named restart     或  systemctl restart named-chroot(centos 7)

    Stopping named:           [ OK ]
    Starting named:            [ OK ]   

   5.测试,在自己PC上配置DNS,通过nslookup 进行测试。

  

四、转发

forward only;      #only表示仅转发 ;first表示先进行转发,如果没查询到结果,那么它自己还会根据根提示向外迭代查询 
forwarders {IP;};    #多IP用";" 隔开

全局转发在named.conf 中进行配置

局部转发

zone "google.com.hk" IN { type forward; forward only; forwarders {8.8.8.8;}; };

 






__EOF__

本文作者语 默
本文链接https://www.cnblogs.com/weijie0717/p/6363059.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   语~默  阅读(7627)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示