2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

最新BIND8による自前サーバ的DNS設定!

近頃、ネットの世界もブロードバンドが常識になりつつあります。その中で、DNSサーバの役割は自前サーバを構築する人たちには欠かせないものだと思います。そこで、このネタは、自前サーバ的DNS設定と名付けてBIND8(セキュリティー対策以降のもの)によるセキュリティー機能も含めた設定方法とBINDの設定ファイルのパラメータの意味も含めて解説する。但し、設定ファイルのみの説明であって、BINDのインストールは既に済んでいるものとして説明する。


1. 俺のDNSサーバの仕様

プライマリネームサーバ sub2.kozupon.com(203.141.144.180)
セカンダリネームサーバ tegtan1.interlink.or.jp(203.141.128.33)     ←プロバイダ側のDNSサーバ
ドメイン名 kozupon.com

1) /etc/named.conf設定ファイル(DNSの動作全般に関わる設定ファイル)

① options {
   directory “/var/named”;
  };

② zone “.” {
③  type hint;
④  file “named.ca”;
   };

⑦ zone “kozupon.com”{
   type master;
   file “kozupon.com.zone”;
   allow-transfer {
    203.141.144.180;
    203.141.128.33;
   };
  };

⑤ zone “localhost”{
   type master;
   file “named.local”;
   allow-update { none; };
  };

⑥ zone “0.0.127.in-addr.arpa”{
   type master;
   file “named.local.rev”;
   allow-update { none; };
  };

⑧ zone “180.144.141.203.in-addr.arpa“{
   type master;
   file “named.rev”;
   allow-transfer {
    203.141.144.180;
    203.141.128.33;
   };
  };

①の”options”ステートメントは、namedの動作全体に適用されるオプションを指定するブロックである。
②の”zone”ステートメントは、「.」と言うゾーンに関しての定義である。このゾーンはインターネット全体を表す。ここで各国のトップレベルドメインを管理するDNSサーバ(ルートサーバ)に関する情報を定義しており、
③の”hint”を指定して、キャシュとして動作させている。
④の”named.ca”(もしくは、named.root)ファイルはBINDのアーカイブに同梱されているが、最新版をInterNICの FTPサイト からダウンロードすることが出来る。
⑤、⑥の2つの”zone”ステートメントは、自分自身(localhost)に関しての正引き/逆引きの定義ですある。これに関しては、自分がプライマリサーバとなるので、”type”に”master”を定義している。
⑦、⑧は、各ゾーン毎に異なる部分である。ここでは、”kozupon.com”ドメインの正引きゾーンと逆引きゾーンを設定している。プライマリとして設定する場合は、”type”を”master”とし、このサーバがオリジナルのゾーンファイルを持つようにする。さらに、この中の”zone”ステートメント内の”allow-transfer”は、いわゆるゾーン転送の制限。無駄なゾーン転送をやめ、セキュリティー対策として効果的な設定である(自分のDNS情報の漏洩防止)。kozupon.comゾーンのゾーン情報の転送を203.141.144.180(プライマリDNSサーバ)と203.141.128.33(セカンダリDNSサーバ)のみに許可している。セカンダリDNSサーバに対しては必ずゾーン転送を許可しよう!


2) /var/named/named.ca(ルートキャッシュ)ファイル

; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the “cache . <file>”
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File


3) /var/named/kozupon.com.zone(正引きゾーン)ファイル

; File Name “kozupon.com.zone” by kozupon.com

①  $ORIGIN kozupon.com.
②  $TTL 86400
③  @  IN  SOA  sub2.kozupon.com. root.kozupon.com. (
         2001062601 ; serial
             10800 ; refresh
              3600 ; retry
            604800 ; expire
             86400 ; default_ttl
    )
  ; Name Server & Mail Server

    
IN   NS     sub2
     IN   NS     tegtan1.interlink.or.jp.
※→  IN   MX   10 mail                           ; Server PC

     sub2  IN   A  203.141.144.180 
     mail  IN   A  203.141.144.180

     www  IN  CNAME  sub2
     smtp  IN  CNAME  sub2
     pop   IN  CNAME  sub2
     proxy IN  CNAME  sub2

③の”@”を指定すると、①のゾーンファイルの先頭部分で指定された$ORIGINの値が対象となる。省略すると、その直前のレコードと同じ物が指定されたことになる。名前は、FQDNで指定された場合そのまま適用されるが、そうでない場合(末尾にピリオドがない場合)は、名前の後にそのゾーン名が付加される。
②の”$TTL”の記述であるが、BIND8.2.1以降TTLの設定を$TTLとしてゾーンファイルのSOAレコードの前に記述しなくてはならなくなった。この場合、SOAレコードで定義したTTL値よりもゾーンファイルの先頭で定義された$TTLの方が優先される。

※印の部分の説明:
ここは、気をつけた方がよい。設定の仕方により必要のない余計なクエリを増やしてしまうことになる。間違いではないので、何もなかったように動いてしまうが、これ以外にZONEファイルの記述ミス等は、他人のBINDのlogに”LameSever”の如く残ってしまう。ちょっと、恥ずかしいので気をつけよう!
間違った設定
  ↓

IN   MX   10     mail
sub2  IN   A     203.141.144.180
mail  IN  CNAME  sub2
正しい設定

  ↓
IN   MX   10   mail
mail IN   A   203.141.144.180以上を間違えないこと。

4) /var/named/named.local(ループバック正引きゾーン)ファイル

; File Name “named.local” by kozupon.com

  $ORIGIN localhost.
  $TTL   86400 
  @  IN  SOA  sub2.kozupon.com. root.kozupon.com. (
        2001062601 ; serial
            10800 ; refresh 
             3600 ; retry
           604800 ; expire
            86400 ; default_ttl
            )
  ;
  ; Name Server
  ;   IN      NS     localhost.

  localhost  IN  A  127.0.0.1


5) /var/named/named.local.rev(ループバック逆引きゾーン)ファイル

; File Name “named.local.rev” by kozupon.com

  $ORIGIN 0.0.127.in-addr.arpa.
  $TTL 86400
  @  IN  SOA  sub2.kozupon.com. root.kozupon.com. (
       2001062601 ; serial
           10800 ; refresh
            3600 ; retry
          604800 ; expire
           86400 ; default_ttl
           )
  ;
  ; Name Server
  ;
  IN  NS     localhost.

  1  IN  PTR  localhost.

重要:
小生の考えでは、ローカル用の正引きゾーン(named.local)と、逆引きゾーン(named.local.rev)は、分けるべきであると思う。127.0.0.1は、ローカルアドレスであるが、各ドメインのゾーン情報に混在しているプロバイダがほとんどである。このようなアドレスを全世界に公開する意味は全くない。ゾーンは、そのドメインに対する権威の範囲によって決めることになっているが、このルールを完全に無視している。また、同じ権威の逆引きゾーン0.0.127in-addr.arpaに対するゾーンファイルが無いため、設定ファイルを理解するのも難しくなっている。


6) /var/named/named.rev(逆引きゾーン)ファイル

; File Name “named.rev” by kozupon.com

  $ORIGIN 180.144.141.203.in-addr.arpa.
  $TTL   86400
  @  IN  SOA  sub2.kozupon.com. root.kozupon.com. (
       2001062601 ; serial
           10800 ; refresh
            3600 ; retry
          604800 ; expire
           86400 ; default_ttl
             )  ; Subnet
  ; Name Server
  IN  NS  sub2.kozupon.com.
  IN  NS  tegtan1.interlink.or.jp.

  ; Server Group

  IN  PTR  sub2.kozupon.com.

☆ /etc/resolv.conf(リゾルバ)ファイル ☆

  domain     kozupon.com(もしくは、search kozupon.com)
  nameserver 127.0.0.1
  nameserver 203.141.128.33

重要:
グローバルIPアドレスが1個の場合、困るのはリゾルバの記載である。ホストのアドレスはローカルアドレス(192.168.255.103のように)で割り当てている。そのため、リゾルバのnameserverにグローバルIPを書いてしまうとnslookupが出来ない。つまり、nameserverの場所が解らないのである。したがって、このような場合は、上記のように127.0.0.1のローカルホストにしておくべきである。
             
この問題は、後のBIND9で解決されている。BIND9のviewステートメントを使って、LAN/WANのDNS設定を行えば内側もしくは外側共にnslookupが可能である。詳細は、俺のサイトの ここ を参照!

コラム:
Lame serverメッセージについて
DNSの設定は、結構間違えやすいもので、世の中のサーバは沢山あれど、初めての方々はそのほとんどが間違っている。特に、log監視を行っているとき、# tail /var/log/messagesでlogを見ていると、Jul 2 07:01:02 sub2 named[421]: Lame server on ’97.xxx.120.61.in-addr.arpa’ (in ‘xxx.120.61.in-addr
.arpa’?): [210.132.xxx.54].53 ‘dnss7.hoge.ne.jp’このような、メッセージが記録されている場合がある。この手のlogは Lame server on で表示されているDNSサーバの設定が間違っている可能性が大きい。このメッセージは、攻撃を受けているのだと勘違いする方々が多いが、相手に原因があるため、気にしなくて良いだろう。ただし、どうしても気になる方は、 ここ の4項BINDのログのlogging設定を参照してブロックして欲しい。

以上

コメント