分享

bind - DNS 设定

 孔林卢 2012-03-28

bind - DNS 设定

参考资讯

  • DNS and BIND 管理

DNS 是所有伺服之母,电脑连节时均以 IP 为主,比方说输入 202.43.195.52 就会到台湾雅虎,当然您也可以打 tw.yahoo.com 到 Yahoo-Taiwan 首页,但是,当您输入 tw.yahoo.com 时,可曾想过其实背后是由 DNS 帮您做转换成 IP 的动作!

DNS 的组成,是由分散式 DB 所构成的,每个 DNS 可以管理属於自己的网域,也可以受权自己所属的子网域给别人,在你得到网域之后,你上层的 DNS 就不会管你如何设定,如何受权;而你受权子网域之后,您也不用管理你的子网域如何管理,因为“一旦受权 完全自由”。当然,您可别先挂掉 (或你的上一层 DNS),不然就连你的小孩 (子网域) 都跟著挂了!

实作 DNS 管理

以下,假设 abc 实业公司申请属於他们的 domain,一旦申请了自己的 网域名称 之后,接下来就要设定让你的 DNS 能够活起来,在 Linux 里,长久以来多数都使用 bind 这个套件来做 DNS 的管理,他经历了历史的考验,因此在多绝大部份的功能上都最为完整。

档案编辑

在编辑 DNS 时,大部份只需要编辑 database 档,而初次或有网域变动时才会需要编辑到 /etc/named.conf。

编辑设定档 (/etc/named.conf)

# vi /etc/named.conf
_______________________________________________________________________________
options {
     directory "/var/named";
}

controls {
          inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
     type hint;
     file "named.ca";
};

zone "localhost" IN {
     type master;
     file "localhost.zone";
     allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
     type master;
     file "named.local";
     allow-update { none; };
};

include "/etc/rndc.key";
____________________________________________________________________________
 

当您开启 /etc/named.conf 之后,您就可以发现已经存在一些资讯了,而 /etc/named.conf 这个目录主要是设定每个网域资讯是存在那一个档案里,比方说 localhost 这个 domain 是存在 localhost.zone 的档案里,而 root domain 资讯是放在 named.ca 里面。然而,假设现在已经申请了 abc.com.tw 这个 domain,所以当 .com.tw 受权过来后就可以设定我们所属的网域了。

正解设定

编辑设定档 (/etc/named.conf)

在 /etc/named.conf 里面输入一段设定,并指定 abc.com.tw 的网域资讯是放在那里的。

zone "abc.com.tw" IN {
     type master;
     file "db-abc.com.tw";
     allow-update { none; };
};

指定 abc.com.tw 的 domain 资讯放在 db-abc.com.tw,把 /etc/named.conf 存起来。接下来要去“那里”编辑 db-abc.com.tw 呢?其实答案就在 /etc/named.conf 里的 options { directory "/var/named"; } 这个区段里,看到了吧!所以接下来的 db-abc.com.tw 就要在 /var/named 编好之后放在这里,这样才能正确被读入呢!

编辑设定档 (/var/named/db-abc.com.tw)

$TTL          86400
$ORIGIN abc.com.tw.
@          1D IN SOA                    @ root.abc.com.tw. (
                                        2005021801          ; 修改序号
                                        3H                  ; refresh
                                        15M                 ; retry
                                        1W                  ; expiry
                                        1D )                ; minimum
										
@                   IN NS         dns.abc.com.tw.
dns.abc.com.tw.     IN A          11.22.33.100

;设定 MX record
@                   IN MX 10      ms1
@                   IN MX 20      ms2
ms1                 IN A          11.22.33.69
ms2                 IN A          11.22.33.70

www                 10 IN A       11.22.33.85     ;www 做 load balancing
www                 10 IN A       11.22.33.86     ;www 做 load balancing
web                 IN CNAME      www             ;让 web.abc.com.tw 也指到 www

上述范列设定了一些技巧,以下一一解释重要部份:

  • $ORIGIN abc.com.tw.
    说明这个设定档是属於那一个网域的。
  • root.abc.com.tw.
    指定管理者的 mail,也就 root@abc.com.tw,root 之后的 . 代表著 @ 的意思,不用 @ 的原因是 "@" 符号有特别的含意。
  • @ IN NS dns.abc.com.tw.
    指定当前 abc.com.tw. 的 dns 查询主机是那一部
  • dns.abc.com.tw. IN A 11.22.33.44
    指定 dns.abc.com.tw. 的正解。
  • @ IN MX 10 ms1
    @ IN MX 20 ms2

    指定 abc.com.tw. 的 MX 记录,分别指向 ms1.abc.com.tw 和 ms2.abc.com.tw、而 ms1 的优先等级高於 ms2,此为重要设定,若邮件无法传递,有部份原因是 MX 记录没有设好 (若有 mail gateway、mail routing 时尤为重要)。
  • ms1 IN A 11.22.33.50
    ms2 IN A 11.22.33.51

    设定 ms1.abc.com.tw 和 ms2.abc.com.tw 的正解 A 记录。
  • www 10 IN A 11.22.33.85
    www 10 IN A 11.22.33.86

    既 www.abc.com.tw。设定了两组 www 的 A 正解记录主要是有两台 www 伺服器在运作,为避免伺服器太过忙碌,而使用两组设定以分摊流量 (Load balancing)。
  • web IN CNAME www
    既 web.abc.com.tw,其实就是指向 www.abc.com.tw,这只是 www.abc.com.tw 的一个别名而已。

符号说明:

@:当地的 domain 简写,也就是 abc.com.tw

;:这个符号代表注解,在 ; 之后的文字将被视为无效。

此时,abc.com.tw 的网域正解设定应已完成,接下来看看 DNS 是否能查得到

正解检查

查 MX record

[root@rhel200 named]# host -t mx abc.com.tw
abc.com.tw mail is handled by 20 ms2.abc.com.tw.
abc.com.tw mail is handled by 10 ms1.abc.com.tw.
[root@rhel200 named]#

查 www.abc.com.tw

[root@rhel200 named]# host www.abc.com.tw
www.abc.com.tw has address 11.22.33.69
www.abc.com.tw has address 11.22.33.70
[root@rhel200 named]#

查 web.abc.com.tw

[root@rhel200 named]# host web.abc.com.tw
web.abc.com.tw is an alias for www.abc.com.tw.
www.abc.com.tw has address 11.22.33.85
www.abc.com.tw has address 11.22.33.86
[root@rhel200 named]#

反解设定

编辑设定档 (/etc/named.conf)

加入一个 reserve zone。

        zone "33.22.11.in-addr.arpa" IN {
                type master;
                file "db-11.22.33";
        };

再到 /var/named 里编辑 db-11.22.33

$TTL    86400
@       IN      SOA     abc.com.tw. root.abc.com.tw.  (
                                      2004102501 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      dns.abc.com.tw.
69      IN      PTR     ms1
70      IN      PTR     ms2
85      IN      PTR     www
86      IN      PTR     www
100      IN      PTR     dns

正反解的设其实都差不多,只是在新增对应反解时是使用 PTR 记录。而 69 是 69.33.22.11.in-addr.arpa 的简写。

反解检查

[root@mailgw named]# host 11.22.33.100
100.33.22.11.in-addr.arpa domain name pointer dns.abc.com.tw.
[root@mailgw named]# host 11.22.33.85
85.33.22.11.in-addr.arpa domain name pointer www.abc.com.tw.
[root@mailgw named]#

以上,若是正反解都 OK 了,那么就可以开开心心的让别人查到您的 DNS 了。

Bind 9 新功能 view

view 在实做上, 主要的功能就是可以让你的 DNS 伺服器见人说人话, 见鬼说鬼话, 怎么说呢, 比方说你在一些网路主机不想被别人使用 DNS 来查到, 那么就可以使用 view 功能来隔开, 像一般公司内的伺服器, 会使用内部网段, 但是又不想要让别人可以从外面查到 (就算查到对一般人也没什么用处), 又不想多增加一台所谓的内部 DNS 伺服器, 所以我们就可以使用 view 的功能, 看是 Client 连上来是属於那一个区段来回应.

设定 acl

为什么要设定 acl, 就是 Access Control List, 主要是用来分类群组用的. 以下的范例, 将把 intranet 设定在 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24, 而不在这三个范围之内的, 就叫 internet. 设定完之后, 再使用 view function 划清界线.

以下, 在 /etc/named.conf 做设定

//acl 设定各不同 Client 的分组


acl "intranet" { 192.168.1.0/24; 192.168.2.0/24; 192.168.3.0/24; };
acl "internet" { ! 192.168.1.0/24; ! 192.168.2.0/24; ! 192.168.3.0/24; }; 
view "intranet" { //使用 match-clients 来检视查寻的 Client 来源 (公司网路) match-clients { "intranet"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; zone "abc.com.tw" IN { type master; file "db.abc.com.tw"; }; zone "33.22.11.in-addr.arpa" IN {
type master;
file "db-11.22.33";
}; // 以下这一段就是不希望本公司以外的人可以查到 zone "company.abc.com.tw" IN { type master; file "db-in.company.abc.com.tw"; }; // the company.abc.com.tw PTR record zone "1.168.192.in-addr.arpa" IN {
type master;
file "db-192.168.1.0";
}; };

view "internet" { //使用 match-clients 来检视查寻的 Client 来源 (非公司网路) match-clients { "internet"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; zone "abc.com.tw" IN { type master; file "db.abc.com.tw"; }; zone "33.22.11.in-addr.arpa" IN {
type master;
file "db-11.22.33";
}; };

以上设定, 就不示范如何设定 db 资料库档, 因为设定方法就如同上面所说的一样, 没有什么改变.

你可以很明确的发现, 在我们设定 view "internet" 和 view "intranet" 时, 都需要把原本的 zone 都重新定义才行, 看起来就会像是独立的 DNS Server, 现在只要使用不同的网路, 就可以发现你的 DNS 是见人说人话, 见鬼说鬼话了!

授权子网域

如果当您的网路规摩有一定的程度之后, 也许会想要再新增一个子网域. 在这个范例之后, 将会示范如何在一个现有的网域下再新增一个 DNS 网域, 并把该子网域授权给下层的单位管理.

新增一个 demo.abc.com.tw 的子网域, 并把 demo.abc.com.tw 的 DNS 伺服器指到 211.6.9.85

编辑 /var/named/db.abc.com.tw

$ORIGIN demo.abc.com.tw.
demo.abc.com.tw.     IN NS dns.demo.abc.com.tw.
dns.demo.abc.com.tw. IN A  211.6.9.85

避免成为 Open DNS servers

Open DNS servers 简单来说,就是只要大家指向你为查询伺服器,那么你就会为大家努力的查询,而且来者不拒。成为 Open DNS servers,一般除了 ISP 之外,其它私人或企业伺服器应该是不需要的。

以下设定,可以设定为只为 192.168.1.0/24 查询,不为外界的连线查询。

建立一个 acl:

root # vi /etc/named.conf
---------------/etc/named.conf-----------------------
#在档案最上面加入 trusted 的 acl。
acl "trusted" {127.0.0.1; 192.168.1.0/24;};
----------------------------------------------------------
root #

在 option {}; 区段加入 allow-recursion 设定:

root # vi /etc/named.conf
---------------/etc/named.conf-----------------------
options {
~其它 option 设定~
allow-recursion { trusted; };
};
----------------------------------------------------------
root #

经过以上的设定之后,这台 DNS 就只会为 192.168.1.0/24 和 127.0.0.1 (本机) 查询。

Last modified: 05/25/2006

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多