サーバ構築(3) DNSサーバ(BIND)

Pocket

独自ドメインを取得してサーバ運用をする場合、当然の事ながらまずはドメインを取得しなければなりません。ドメイン取得を扱っている業者さんはたくさんありますので、どこを利用してもいいんですが、注意すべき点は、ドメイン取得時の情報を自分できちんと管理しておくことと、更新は毎年行う(複数年契約しない)ということです。当方のドメインは 2001年に DOMAIN21 という業者さんで取得し、その後順調に運営していましたが、2006年にこの会社が傾いてしまったようで、別の会社さんに(おそらく強制的に)ドメイン管理業務が引き継がれました。このとき、複数年契約は無効にされた(払い込んだお金は丸損となった)模様です。私は毎年更新していたので特に実害はありませんでした。引き継いだ側もえらい迷惑だったんだろうなと推測しますが、メールの問い合わせ対応に不満を感じたので、そこからさらに別の業者さんにドメインを移管して現在に至っております。

それはさておき、DNS(BIND)の設定ですね。我が家の場合、BINDは外向け(WAN側)には自ドメインyomaigoto.jpのプライマリDNSサーバ(コンテンツサーバ)として、内向け(LAN側)には名前解決用のリゾルバ(キャッシュサーバ)として動かします。なお、DNSの基本的なことについて学ぶには、少し古いドキュメントですがJFのDNS-HOWTOをお勧めします。

ところで、OSのインストール時にパッケージの選択で「DNSサーバ」を選択すると、もれなく bind-chroot パッケージがインストールされます。これ(chroot)はBINDのセキュリティ強化策として用いられる手法で、bind-chroot がインストールされていると、当然のごとくnamed(BIND) がデフォルトで /var/named/chroot/ に chroot された状態で起動するようになります。そもそも「chrootってなに?」って方は各自勉強して頂くとして、何か問題になるのかというと、chroot すると勝手に作られる /var/named/chroot/proc が意外にディスク容量を食うという点です。数百メガ~1ギガ弱に育つこともありまして、インストール時に /var を適当に小さく切っていたりするとパンクする恐れがあるのです。/var が パンクするとログイン不能になるので、これは知っておくべきでしょう。ま、最近はHDDもでかいのであまり神経質になる必要はないですが。そんなこともあり、私はインストール時に「DNSサーバ」は選択から外します。

ということで、まずはインストール。続いてヒントファイルを作成します。ヒントファイルはFTPでも配布されていますが、digコマンドを使って生成する方法が前述のDNS-HOWTOでも紹介されています。

# yum -y install bind
# cd /var/named
# dig
; <<>> DiG 9.3.3rc2 <<>>	
;; global options:  printcmd	
;; Got answer:	
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18112	
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1	

;; QUESTION SECTION:	
;.                              IN      NS	

;; ANSWER SECTION:
.                       819     IN      NS      J.ROOT-SERVERS.NET.
.                       819     IN      NS      K.ROOT-SERVERS.NET.
.                       819     IN      NS      L.ROOT-SERVERS.NET.
.                       819     IN      NS      M.ROOT-SERVERS.NET.
.                       819     IN      NS      A.ROOT-SERVERS.NET.
.                       819     IN      NS      B.ROOT-SERVERS.NET.
.                       819     IN      NS      C.ROOT-SERVERS.NET.
.                       819     IN      NS      D.ROOT-SERVERS.NET.
.                       819     IN      NS      E.ROOT-SERVERS.NET.
.                       819     IN      NS      F.ROOT-SERVERS.NET.
.                       819     IN      NS      G.ROOT-SERVERS.NET.
.                       819     IN      NS      H.ROOT-SERVERS.NET.
.                       819     IN      NS      I.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
J.ROOT-SERVERS.NET.     87219   IN      A       192.58.128.30

# dig @j.root-servers.net > named.ca

次に、rndcコマンドを使用するためにkeyの生成を行います。ちなみに、keyはこの項を書くために新たに生成しました。実際のものとは異なります。

■keyの作成
# dnssec-keygen -a HMAC-MD5 -b 512 -n USER rndc
Krndc.+157+62374

○内容の確認
# cat Krndc.+157+62374.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: ITp4ES0MQngctltBr4ColyijX8oyPGT7yF8IoRKCjGoiFGaYJkeQuE
mBKI2hugAr0U06SXm51umuDR6+2rQwPA==

■rndc.keyの作成
# vi /etc/rndc.key
[/etc/rndc.key]
3c3
<       secret          "bzsyW0gS0v6QkXEZU2fBlZmwkRsHWEwEJZq6
mVFsmTF5WGVkTCOTCAQpqNT7";
---	
>       secret          "ITp4ES0MQngctltBr4ColyijX8oyPGT7yF8I
oRKCjGoiFGaYJkeQuEmBKI2hugAr0U06SXm51umuDR6+2rQwPA==";

インストール時、named.confは作成されません。サンプルは /usr/share/doc/bind-9.3.3/sample/etc/named.conf にありますが、今ひとつ美しくないので自分で作ります。viewステートメントを使用し、LAN側のみ再起問い合わせを許可(recursion yes)します。WAN側は再起問い合わせを禁止(recursion no)し、自分が権威を持つゾーン(yomaigoto.jp)への問い合わせのみ返答を返します。

# vi /etc/named.conf
[/etc/named.conf]
include "/etc/rndc.key";

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

acl "local-net" {
        127.0.0.1; 192.168.1.0/24;
};

acl "allow-hosts" {
        xxx.xxx.xxx.xxx(セカンダリDNSのIPアドレス);
};

options {
        directory "/var/named"; 
        allow-transfer { allow-hosts; };        
        pid-file "/var/run/named/named.pid";    
};

logging {
        category lame-servers { 
                null;
        };
};

view "local-zone" {     
        match-clients { local-net; };
        allow-query { local-net; };
        allow-transfer { local-net; };
        recursion yes;


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 "localhost.rev";
        allow-update { none; };
        };

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.rev";
        allow-update { none; };
        };

};

view "external" {
        match-clients { any; };
        allow-query { any; };
        allow-transfer { local-net; allow-hosts; };
        recursion no;

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

ゾーンファイルはこんな感じで。逆引きはとりあえず全部設定しておきます。

[/var/named/localhost.zone]
$TTL    86400
$ORIGIN localhost.
@       1D IN SOA       @ root (
        42              ; serial (d. adams)
        3H              ; refresh
        15M             ; retry
        1W              ; expiry
        1D )            ; minimum

        1D IN NS        @
        1D IN A         127.0.0.1

[/var/named/localhost.rev]
$TTL    3600
@       IN      SOA     chibi.yomaigoto.jp. root.chibi.yomaigoto.jp. (
           20040103        ; Serial
           3600    ; Refresh
           900     ; Retry
           3600000 ; Expire
           3600 )  ; Minimum
        IN      NS      chibi.yomaigoto.jp.
1       IN      PTR     localhost.yomaigoto.jp.

[/var/named/1.168.192.rev]
$TTL    3600
@       IN      SOA     chibi.yomaigoto.jp. root.chibi.yomaigoto.jp.  (
                                2007092201      ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                3600000 ; Expire
                                3600 )  ; Minimum
        IN      NS      chibi.yomaigoto.jp.
1       IN      PTR     gw.yomaigoto.jp
2       IN      PTR     dummy2.yomaigoto.jp.
3       IN      PTR     usi.yomaigoto.jp.
4       IN      PTR     dummy4.yomaigoto.jp.
5       IN      PTR     printer.yomaigoto.jp.
6       IN      PTR     chibi.yomaigoto.jp.
7       IN      PTR     dummy7.yomaigoto.jp.
8       IN      PTR     dummy8.yomaigoto.jp.
    (中略)
252     IN      PTR     dummy252.yomaigoto.jp.
253     IN      PTR     dummy253.yomaigoto.jp.
254     IN      PTR     dummy254.yomaigoto.jp.

[/var/named/yomaigoto.zone]
$TTL    86400
@       1D IN SOA chibi.as.wakwak.ne.jp. root.yomaigoto.jp. (
        2008022701      ; serial (d. adams)
        3H              ; refresh
        15M             ; retry
        1W              ; expiry
        1D )            ; minimum

         IN NS  chibi.yomaigoto.jp.
         IN NS  chibi.as.wakwak.ne.jp.
         IN NS  ns1.granitecanyon.com.
         IN MX 10       chibi.yomaigoto.jp.
chibi    IN A  61.xx.xx.xx
www      IN CNAME   chibi
www2     IN CNAME   chibi
mail     IN CNAME   chibi

wakwakは固定IPオプションつけると正引き/逆引きの設定を入れてくれるので、メールサーバも安心して運用できます。NSレコードにはwakwakに登録してあるホスト名を書いてあります。あとは自動起動設定しておしまい。

# chkconfig named on
# service named start

DNSサーバ立てるのも結構たいへんですが、自宅サーバのドメイン運用はセカンダリDNSを見つけるのも一苦労ですね。探せばフリーで利用できるDNSサーバもありますので、うちではそれを利用してます。どうやって登録したかは既に忘却しました(をい)。

この記事にコメントする

Powered by WordPress, WP Theme designed by WSC Project. ログイン