社内LAN向けにDNS Server"Bind"をInstall, 設定

images今の社内にはDNS Serverがおらず(RouterにもDNS機能がない)、名前解決するためにProviderのDNSに問い合わせていたので、DNS ServerをInstall, 設定したときのMemo.

環境はCentOS 6.0 64bit, Bind 9.7.0


社内にDNS Server(Bind)を導入する利点

  • DNS ServerのCache機能で名前解決が早くなるので、Networkの体感速度が上がる。
  • 社内の共有Serverに(Mac, Windows関係なく)名前でAccess出来る。
  • 名前でAccess出来ると共有ServerのIP Addressが変わっても通知しなくて済む。
  • (hostsを変更しなくても)本番環境のURLを社内の開発Serverに指定出来るので、Testし易い(かも)。

参考にしたのは下記Site.

 


1. Install

Install自体はyum経由でサクッと終了。自動起動とFirewallも設定しておく。
# yum install bind
# /etc/rc.d/init.d/named start
# chkconfig named on
# system-config-firewall-tui

 


2. /etc/named.confを編集

< 2013/05/29 Modified >
Bind 9.3の場合は
# yum install caching-nameserver
するとサンプルの設定ファイルがインストールされる。
/etc/named.caching-nameserver.confを編集してnamed.confを作成する。

 

利用を許可する範囲と自前で名前解決出来なかったときの外部DNSを指定

options {
    listen-on port 53 { 127.0.0.1; 192.168.0.0/24; };
    allow-query     { 127.0.0.1; 192.168.0.0/24;};
    /* Specify the IP addresses you can throw a query to this DNS. */
    allow-transfer { 127.0.0.1; 192.168.0.0/24; };

    /* If this DNS could not resolve your request, the request is forwarded to other DNS. */
    forwarders { 8.8.8.8; 8.8.4.4; }
    forward first;

     /* cache settings */
     max-cache-ttl 86400;
}

max-cache-ttlは秒を指定。なぜかDefault値が反映されなかったので設定した方がよさそう。(2011/12/13 Modified: ない方が安定して稼働するみたい)

次は各Zone Fileを読み込むための設定を追記. named.rfc1912.zonesを読み込んでいるので、"localhost"系はそっちに任せることにした。

"hoge.com"ではなく、"lan.hoge.com"をLAN内で使い、外部DNSで管理している"hoge.com"に影響が出ないようにする。

// forward map for lan.hoge.com
zone "lan.hoge.com" {
        type master;
        file "hoge.com";
};

// reverse map for 192.168.0.*
zone "0.168.192.in-addr.arpa" {
        type master;
        file "192.168.0.rev";
};

次はそれぞれ正引き(Forward)と逆引き(Reverse)のZone Fileを作成する。
directory       "/var/named"
の記述があるので、/var/namedがZone Fileの置き場所。

 


3. zone "lan.hoge.com"の設定

# cp named.empty lan.hoge.com
# vi lan.hoge.com

$TTL 3H
@       IN SOA  mercury.lan.hoge.com. root.mercury.lan.hoge.com (
                                        20111110        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                     IN      NS      @

@                  IN      A       192.168.0.100
router             IN      A       192.168.0.1
mercury          IN      A       192.168.0.100
venus             IN      A       192.168.0.13
earth              IN      A       192.168.0.11
mars              IN      A       192.168.0.12
jupiter             IN      A       192.168.0.250

ns         IN      CNAME   mercury
www     IN      CNAME   mercury
nas       IN      CNAME   jupiter

 


4. zone "0.168.192.in-addr.arpa"の設定

# cp named.loopback 192.168.0.rev
# vi 192.168.0.rev

$TTL 1D
@       IN SOA  mercury.lan.hoge.com. root.mercury.lan.hoge.com (
                                        20111110        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      @

        IN      PTR     lan.hoge.com.
        IN      A       255.255.255.0

1        IN      PTR     router.lan.hoge.com.
100     IN      PTR     mercury.lan.hoge.com.
11       IN      PTR     earch.lan.hoge.com.
12       IN      PTR     mars.lan.hoge.com.
13       IN      PTR     venus.lan.hoge.com.


5. 確認

作成したZone Fileの権限を変更
# chown named. lan.hoge.com 192.168.0.rev

Name Serverは自分を参照するように変更
# vi /etc/resolv.conf

search lan.hoge.com
nameserver 127.0.0.1

別Consoleを開いてLogを確認しながら
# tail -f /var/log/messages
# nslookup

Windowsから確認する場合はcmd.exeを起動して下記Command
> nslookup - 192.168.0.100

この場合192.168.0.100がName Server.

Pingで試している場合はCacheを削除するのを忘れずに。
> ipconfig /flushdns

Server側のCacheを削除するには
# rndc flush

無事名前解決することを確認できれば、DHCP ServerになっているRouterや固定IPのServerに設定して完了。

Secondary Name ServerはGoogle Public DNSのIP(8.8.8.8)を設定しておくと安心できる。

 


6. digで再帰問い合わせしないか確認

Bindの設定が再帰問い合わせ可能になっているとDDos攻撃の踏み台にされる可能性があるので、digを使って確認する。詳しくは下記Site.

ちなみにBindはTCPを利用しないので、hosts.allow, hosts.denyを利用することは出来ない。

 


< 2011/12/08 Modified >
名前解決が最近遅くなったと思ってlogを見ると次のようなErrorがいっぱい

named[8372]: error (network unreachable) resolving 'hoge.net/AAAA/IN': 2001:500:2f::f#53

bind9はDefaultでIPv6機能が有効になっているらしい。ここを参考に起動Optionを追加

# vi /etc/sysconfig/named

OPTION="-4"

再起動
# /etc/rc.d/init.d/named restart

さらにdigを使って試してみるとISPのDNS自体が遅いことが分かったので、forwarders先をGoogle Public DNSに変更。

そうすると、今度は下記Error(?)が吐かれて応答が時々遅くなる

success resolving 'hoge.jp/A' (in 'hoge.jp'?) after disabling EDNS

EDNS(Extension Mechanisms for DNS)はDNSの拡張仕様。詳しくは下記Siteで。

EDNSを無効すればいいのかな?と思い、/etc/named.confの最後に次の行を追記

server 0.0.0.0/0 { edns no; };

でBindを再起動すると、Google Public DNSからAccess拒否された。どうやら必須らしい。・・・で、元に戻して再び再起動。

するとErrorも出ず、名前解決の応答速度も素晴らしくなった。

・・・なぜだろう・・・一応解決?

ちなみにGoogle Public DNSはIPv6に対応しているので、CentOSのIPv6設定をしてあれば問題なく使えそう。それはまた次回。


 

< Related Posts >