美文网首页技术文DevOps
利用BIND搭建私有DNS服务器

利用BIND搭建私有DNS服务器

作者: CHUANHAI | 来源:发表于2015-12-06 20:25 被阅读7246次

Bind(Berkeley Internet Name Domain)是一款开源的DNS服务器软件,由美国加州大学Berkeley分校开发,目前由Internet Systems Consortium组织来维护。它是目前世界上使用最为广泛的DNS服务器软件,支持各种类Unix平台和Windows平台。

搭建环境:CentOS 7、Bind-9.9.4

1、安装Bind软件包及其依赖

# yum install bind bind-libs bind-utils

2、Bind配置文件详解

// named.conf

options {

    listen-on port 53 { 127.0.0.1; 192.168.1.108; };    //定义DNS监听在哪个IP的特定端口上

    listen-on-v6 port 53 { ::1; };    //针对IPv6的DNS监听定义格式

    directory      "/var/named";    //指定DNS区域文件存放目录

    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; 192.168.1.100; };    //定义允许哪些主机可以查询本地的DNS服务

    recursion yes;    //定义是否允许DNS服务器做递归查询

    notify yes;    //DNS服务器采用主从模式时,定义是否当主服务器区域文件发生改变,通知从服务器更新

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

    pid-file "/run/named/named.pid";

    session-keyfile "/run/named/session.key";

};

logging {

    channel default_debug {

    file "data/named.run";

    severity dynamic;

    };

};

zone "." IN {    //根域的区域文件属性配置

    type hint;    //定义此区域文件的类型[master|slave|hint|forward]

    file "named.ca";    //相对directory "/var/named/"目录的文件,为根域的区域文件

};

include "/etc/named.rfc1912.zones";    //为保持主配置文件简洁,将部分配置信息存放于别处,在主配置文件中调用

include "/etc/named.root.key";

include "/etc/named/luochuanhai.cn";    //此为博主私有域的配置文件

3、Bind区域文件详解

以下是luochuanhai.cn域正向解析的区域文件。

$TTL 1D    ;被缓存的肯定回答的存活时间

@      IN      SOA    @      admin.luochuanhai.cn. ( 6    ;此区域文件的版本号,用于主从同步

                                                                          1D    ;DNS从服务器区域文件记录刷新时间

                                                                          1H    ;若DNS从服务器更新失败,下次尝试时间

                                                                          1W    ;若DNS从服务器更新失败,原有数据的过期时间

                                                                          3H )    ;被缓存的否定回答的存活时间

@      IN      NS      ns1    ;标识区域的DNS服务器及其授权子域

@      IN      NS      ns2

ns1    IN      A      192.168.1.108    ;主机名及其对应的IP地址

ns2    IN      A      192.168.1.100

www    IN      A      192.168.1.163

ftp    IN      A      192.168.1.163

www1    CNAME  www    ;用于标识www1.luochuanhai.cn是www.luochuanhai.cn主机的别名

4、域正向解析测试

# service named start

# dig -t A www.luochuanhai.cn @127.0.0.1    //正向解析私有域地址

# dig -t A www.sohu.com @127.0.0.1    //正向解析外网地址

如果想让别的主机使用本地的DNS服务,请务必让本地DNS服务器监听在能和其它主机联通的IP上。其它主机使用dig命令时,用@指向本地提供DNS服务的主机IP地址。如果存在连接超时或者找不到DNS服务器,那可能是DNS服务器所在主机防火墙过滤了请求。在提供DNS服务的主机上键入以下命令便可解决问题。

# iptalbes -I INPUT 1 -s 远程主机IP -d 本地主机IP -p tcp --dport 53 -j ACCEPT

# iptalbes -I INPUT 1 -s 远程主机IP -d 本地主机IP -p udp --dport 53 -j ACCEPT

# iptalbes -I OUTPUT 1 -s 本地主机IP -d 远程主机IP -p tcp --dport 53 -j ACCEPT

# iptalbes -I OUTPUT 1 -s 本地主机IP -d 远程主机IP -p udp --dport 53 -j ACCEPT

5、DNS主从复制及区域传送

以下是博主在主服务器上定义的私有域luochuanhai.cn配置文件。

zone "luochuanhai.cn" IN {    //luochuanhai.cn域的区域文件属性配置

    type master;    //指定本机为DNS主从结构中的主服务器

    file "luochuanhai.cn.zone";

    allow-update {none; };

    allow-transfer { 192.168.1.100; };    //指定允许区域传送的从服务器IP地址

};

以下是博主在从服务器上定义的私有域luochuanhai.cn配置文件(记得要被include到主配置文件)。

zone "luochuanhai.cn" IN {

    type slave;    //指定本机为DNS主从结构中的从服务器

    file "slaves/luochuanhai.cn.zone";    //指定从主服务器同步来的区域文件的存放位置

    masters { 192.168.1.108; };    //指定主服务器的IP地址

    allow-transfer { none; };    //指定禁止区域传送

};

此后在主从服务器都启用named服务,即可进行主从完全区域传送。

但是,博主在实做过程中遇到了一个问题,从服务器无法进行增量区域传送。在主服务器上修改luochuanhai.cn.zone区域文件,并将版本号加1,再让主服务器重新加载配置文件。主服务器确实有通知从服务器区域文件更新,但是从服务器仍无法自动更新。

从服务器中,保留初始启动服务时同步过来的区域文件。重启从服务器的named服务,无法同步。

从服务器中,删除初始启动服务时同步过来的区域文件。重启从服务器的named服务,便可同步更新。

经博主仔细分析后,发现是自己忘记让从服务器监听在主服务器可以联通的IP上。以至于,尽管主服务器发送更新通知,从服务器无法自主完成增量区域传送( ▼-▼ )。

6、DNS服务器管理工具rndc

To be continued.

7、DNS子域授权

在父域luochuanhai.cn的DNS服务器区域文件中追加以下两行更新,以授权子域life.luochuanhai.cn。

life    IN      NS      ns1.life

ns1.life        IN      A      192.168.1.118

以下是子域life.luochuanhai.cn的DNS服务器上定义的配置文件(记得要被include到主配置文件。且让子域DNS服务器监听在父域DNS服务器能够与之联通的IP地址上,且允许父域DNS服务器访问子域的DNS服务)。

zone "life.luochuanhai.cn" IN {

    type master;

    file "life.luochuanhai.cn.zone";

};

以下是子域life.luochuanhai.cn的正向解析区域文件。

$TTL 1D

@      IN      SOA    @      admin.life.luochuanhai.cn. ( 18

                                                                                 2H

                                                                                1H

                                                                                1W

                                                                                3H )

@      IN      NS      ns1

ns1    IN      A      192.168.1.118

www    IN      A      192.168.1.119

ftp    IN      A      192.168.1.119

测试子域life.luochuanhai.cn的正向解析。

# dig -t A www.life.luochuanhai.cn @192.168.1.117    //通过父域DNS服务器解析子域地址

# dig -t A www.life.luochuanhai.cn @192.168.1.118    //通过子域DNS服务器解析子域地址

如果想让子域DNS服务器不通过根域来解析父域的主机地址,则可在子域DNS服务器中启用转发功能。在子域配置文件中加入以下配置:

zone "luochuanhai.cn" IN {

    type forward;    //指定此域为转发类型

    forward first;    //如果父域不代为解析转发的查询,则自行通过根域解析查询[first|only]

    forwarders { 192.168.1.117; };    //指定接收转发请求的DNS服务器IP地址

};

8、DNS视图

To be continued.

9、DNS日志系统

To be continued.


如果想深入了解Bind配置,可以参考以下文档:

http://jianlee.ylinux.org/Computer/Server/bind9.html

http://www.zytrax.com/books/dns/ch7/xfer.html

相关文章

网友评论

    本文标题:利用BIND搭建私有DNS服务器

    本文链接:https://www.haomeiwen.com/subject/esoshttx.html