-->

2011-06-22

net-dns/bind-9.7.3_p1の設定

### 期待する動作。
ルーターにDNSサーバーのIPアドレスが設定されているので、そこに聞きに行くという動作を変更しない。
その前に内部のPCの名前を解決してほしい。
内部向けのDNSサーバーが止まっている場合はルーターに聞きに行く。

### dnsの設定を修正します。
$ grep dns /etc/conf.d/net
dns_search_br0="localnet"
dns_servers_br0="192.168.0.100 192.168.0.1"
$ cat /etc/resolv.conf
# Generated by net-scripts for interface br0
search localnet
nameserver 192.168.0.100
nameserver 192.168.0.1
インターネットプロトコル(TCP/IP)のプロパティ
...
優先DNSサーバー(P):  192 . 168 . 0 . 100
代替DNSサーバー(A):  192 . 168 . 0 . 1

### named.confの設定をします。
$ /usr/bin/sudo /usr/bin/rcsdiff -u /etc/config-archive/etc/bind/named.conf,v /etc/bind/named.conf
===================================================================
RCS file: /etc/config-archive/etc/bind/named.conf,v
retrieving revision 1.1
diff -u -r1.1 /etc/bind/named.conf
--- /etc/bind/named.conf        2011/06/21 09:31:08     1.1
+++ /etc/bind/named.conf        2011/06/21 20:09:49
@@ -24,6 +24,7 @@
 acl "trusted" {
        127.0.0.0/8;
        ::1/128;
+       192.168.0.0/24;
 };

 options {
@@ -34,7 +35,7 @@
        //bindkeys-file "/etc/bind/bind.keys";

        listen-on-v6 { ::1; };
-       listen-on { 127.0.0.1; };
+       listen-on { 192.168.0.100; };

        allow-query {
                /*
@@ -74,18 +75,17 @@
        * Uncomment the following lines to turn on DNS forwarding, and change
        *  and/or update the forwarding ip address(es):
        */
-/*
-       forward first;
+       forward only;
        forwarders {
        //      123.123.123.123;        // Your ISP NS
        //      124.124.124.124;        // Your ISP NS
        //      4.2.2.1;                // Level3 Public DNS
        //      4.2.2.2;                // Level3 Public DNS
-               8.8.8.8;                // Google Open DNS
-               8.8.4.4;                // Google Open DNS
+       //      8.8.8.8;                // Google Open DNS
+       //      8.8.4.4;                // Google Open DNS
+        192.168.0.1;
        };

-*/

        //dnssec-enable yes;
        //dnssec-validation yes;
@@ -94,7 +94,6 @@
        //query-source address * port 53;
 };

-/*
 logging {
        channel default_log {
                file "/var/log/named/named.log" versions 5 size 50M;
@@ -106,17 +105,18 @@
        category default { default_log; };
        category general { default_log; };
 };
-*/

 include "/etc/bind/rndc.key";
 controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1/32; ::1/128; } keys { "rndc-key"; };
 };

+/*
 zone "." in {
        type hint;
        file "/var/bind/root.cache";
 };
+*/

 zone "localhost" IN {
        type master;
@@ -163,3 +163,15 @@
 //     allow-notify { <MASTER>; };
 //     notify no;
 //};
+
+zone "localnet" IN {
+       type master;
+       file "pri/localnet.zone";
+       notify no;
+};
+
+zone "0.168.192.in-addr.arpa" IN {
+       type master;
+       file "pri/0.168.192.zone";
+       notify no;
+};

信頼できるネットワークに192.168.0.0/24を追加します。(allow-queryなど許可)

listenするアドレスを変更します。
$ netstat -an|grep -P ":53\s"
tcp        0      0 192.168.0.100:53        0.0.0.0:*               LISTEN
udp        0      0 192.168.0.100:53        0.0.0.0:*

マッチしない問い合わせを192.168.0.1に渡します。
ログを取ります。
ルートサーバーへの問い合わせの設定を消します。
localnet(192.168.0.0/24)の正引き、逆引きの設定をします。

### localnetの正引きの設定をします。
$ cat /etc/bind/pri/localnet.zone
$ORIGIN localnet.
$TTL 1M
@                       1D IN SOA       amdgentoo.localnet. root.amdgentoo.localnet. (
                                        2011062101      ; serial
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

@              IN NS    amdgentoo
@              IN MX 10 amdgentoo
@              IN A     192.168.0.100

router         IN A     192.168.0.1
winxp          IN A     192.168.0.90
amdgentoo      IN A     192.168.0.100
dynabook       IN A     192.168.0.110
kuroboxhg      IN A     192.168.0.150
cogentoo-1     IN A     192.168.0.200
centos5        IN A     192.168.0.210
vm002-debian   IN A     192.168.0.211
fedora         IN A     192.168.0.212
ubuntu         IN A     192.168.0.213
freebsd        IN A     192.168.0.214
openbsd49      IN A     192.168.0.216
scientific     IN A     192.168.0.217

省略せずに書いた場合、下記などの様になります。
router.localnet.         1M IN A     192.168.0.1

「MX 10」の部分の10は優先順位です。複数書く場合で予備の場合「MX 20」などで設定します。
$ORIGINは書かなくても、この場合は同じです。
変更した場合serialを変更しないと引けない場合があります。

別名を登録する場合、下記のようになります。
debian-squeeze IN CNAME vm002-debian
fedora15       IN CNAME fedora
freebsd82      IN CNAME freebsd
Aレコードで指定されたドメイン名のみに利用可能、などの自分ルールを決めたほうが良いです。

### localnetの逆引きの設定をします。
$ cat /etc/bind/pri/0.168.192.zone
$ORIGIN 0.168.192.in-addr.arpa.
$TTL 1M
@                       1D IN SOA       amdgentoo.localnet. root.amdgentoo.localnet. (
                                        2011062105      ; serial
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

@              IN NS    amdgentoo.localnet.

1              IN PTR   router.localnet.
90             IN PTR   winxp.localnet.
100            IN PTR   amdgentoo.localnet.
110            IN PTR   dynabook.localnet.
150            IN PTR   kuroboxhg.localnet.
200            IN PTR   cogentoo-1.localnet.
210            IN PTR   centos5.localnet.
211            IN PTR   vm002-debian.localnet.
212            IN PTR   fedora.localnet.
213            IN PTR   ubuntu.localnet.
214            IN PTR   freebsd.localnet.
216            IN PTR   openbsd49.localnet.
217            IN PTR   scientific.localnet.

省略せずに書いた場合、下記などの様になります。
250.0.168.192.in-addr.arpa. 1M IN PTR abc.localnet.

### テストします。
dig @192.168.0.100 amdgentoo.localnet
dig @192.168.0.1 amdgentoo.localnet
dig amdgentoo.localnet
ping -c1 amdgentoo.localnet
ping -c1 amdgentoo
dig -x 192.168.0.100
dig -x 192.168.0.250

「$TTL 1M」はテスト用や内部向けのDNS用の短い時間の設定です。
@で始まる行の@はlocalnet.などの省略です。
直前の行の@などの1カラム目が同じ場合、@などが省略されている場合があります。

たぶんドメイン名などの最後の"."はそこで名前が終わりと言う意味で省略名との区別に必要です。
SOAレコードのメールアドレス(root.amdgentoo.localnet.など)がroot@amdgentoo.localnetと書かない理由を知りません。
滅多に落とさないサーバーが内部向けのDNSサーバーの場合で、自前でDNSキャッシュしたい場合named.confのforwardersの部分が必要ありません。

error: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found

$ sudo touch /var/bind/managed-keys.bind

メールアドレスの設定の追加。
@              IN MX 10 amdgentoo => root@localnet           => amdgentoo.localnetのrootに届く。
amdgentoo      IN MX 10 amdgentoo => root@amdgentoo.localnet => amdgentoo.localnetのrootに届く。
# 省略は$ORIGINなどの設定によって違う。省略しない場合。
localnet.           IN MX 10 amdgentoo.localnet.
amdgentoo.localnet. IN MX 10 amdgentoo.localnet.

### 参考URL。
http://www.kozupon.com/bind/forward_err.html
http://www.jitaku-server.net/bind_intro.html
http://dns2007.seesaa.net/article/32695498.html
http://forum.parallels.com/showthread.php?t=108519
http://epa.scitec.kobe-u.ac.jp/~itpass/hiki/hiki.cgi?%5BMemo2010%5D%5BITPASS%5D+tako+%B9%BD%C3%DB%BA%EE%B6%C8%A5%ED%A5%B0+5+%28DNS%29
http://ie00010.blogspot.com/2011/02/bind-973dnssec.html
http://www.atmarkit.co.jp/flinux/rensai/bind902/bind902b.html
http://www.atmarkit.co.jp/fnetwork/dnstips/031.html
http://honana.com/bind/setting.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/592nslookupsoa/nslookupsoa.html
http://www.atmarkit.co.jp/fnetwork/dnstips/014.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23435&forum=11
http://e-words.jp/w/E6ADA3E5BC95E3818D.html
http://www.isc.org/software/bind/documentation/arm95
http://www.aconus.com/~oyaji/suse/bind_ddns_suse.htm

0 件のコメント: