はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> DNSサーバ & DHCPサーバ >> DNSサーバの構築(bind)
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS4 / CentOS5 / CentOS6 / CentOS7 ]
  1. DNSサーバとは・・・
  2. bindのインストール
  3. bindの設定(マスタサーバとして動作する様に設定)
    構築の前に・・・
    正引きゾーン名とは・・・
    逆引きゾーン名とは・・・
  4. 設定ファイルにゾーン追加
    注意:bind のバージョンが 9.5 以降(Ver >= 9.5)の場合
  5. ゾーンファイルの作成
    内向き正引きゾーンの作成
    内向き逆引きゾーンの作成
    外向き正引きゾーンの作成
    外向き逆引きゾーンの作成
  6. ルートDNS情報の設定
  7. DNS動作前のネットワークファイル関連の確認
    名前解決ファイル『hosts』の変更
    DNS参照設定ファイル『resolv.conf』の変更
    順序設定ファイルの変更
  8. bindの起動
  9. bindの動作確認
    内向き名前解決の確認
    外向き名前解決の確認
    syslogに出力されるエラーメッセージについてIPv6
  10. bindの自動起動
  11. bindをchrootへ移行
    bind-chrootのインストール
    bind-chroot適用前・適用後のbind(named)プロセス
  12. 公開前の準備

■ DNSサーバとは・・・

DNS(Domain Name Server)はインターネットに接続するときにIPアドレス(xxx.xxx.xxx.xxx)を、kajuhome.comの様に人間に分かりやすくアドレスを変換してくれるサーバです。

■ bindのインストール

ネームサーバ(bind)のインストール
# yum -y install bind

■ bindの設定(マスタサーバとして動作する様に設定)

■ 構築の前に・・・

bindはホスト名とIPアドレスの対照表をゾーンという単位で管理しています。
マスタサーバとして設定を行なうには、まずゾーン名を決める必要があります。
また、このゾーンには正引きゾーンと逆引きゾーンがあります。

■ 正引きゾーン名とは・・・

正引きはドメイン名をIPアドレスに変換します。
正引きゾーンファイル名はドメインのkajuhome.comが正引きゾーン名となります

■ 逆引きゾーン名とは・・・

逆引きゾーンはIPアドレスをドメイン名に変換を行ないます。
使用するIPアドレスのネットワークアドレス部分から作成し、ネットワークアドレスを逆から作成しその値+.in-adde.arpaとします。
言葉だと分かりにくいので当サイトの逆引きゾーン名を例とすると、
逆引きゾーン名は1.168.192.in-addr.arpaになります

■ 設定ファイルにゾーン追加

# vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    全てに対してポート番号53をリッスンする
    listen-on port 53 { any; };
    コメントにする
//    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    bindを使用する範囲を指定(全てのIPに許可)
    allow-query     { any; };
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    以下(allow-transfer forwarders)は必要に応じて追加(特に追加の必要はありません)
    スレーブDNSサーバを指定
    allow-transfer{
        xxx.xxx.xxx.xxx;
    };
    外部のネームサーバに問い合わせを転送する場合
    複数ある場合は、以下の様に複数行で記述します。
    forwarders{
        yyy.yyy.yyy.yyy;
        zzz.zzz.zzz.zzz;
    };

};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
    逆引き時に問い合わせた他のDNSサーバがエラーだった場合(設定不良)のログは記録しない
        エラー時の例)下記のログが大量に出力されてしまう対処
            error (unexpected RCODE SERVFAIL) resolving
            error (network unreachable) resolving
    category lame-servers { null; };
};

内向きVIEWの定義
view "internal" {
    自サーバおよび、自サーバが所属するネットーワークに許可
    match-clients { localhost; localnets; };
    キャッシュ有効
    recursion yes;

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

    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    最終行にゾーン指定(以下)を追加
    // 正引きゾーン(kajuhome.com)の指定
    zone "kajuhome.com" {
        type master;
        file "kajuhome.com.lan";       <--- ファイル名に注視
        allow-update { none; };
    };
    // 逆引きゾーン(192.168.1.0/24)の指定
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "1.168.192.in-addr.arpa.db";
        allow-update { none; };
    };
};

外向きVIEWの定義
view "external" {
    上記(内向き問い合わせにマッチしなかったIP全て)
    match-clients { any; };
    キャッシュ無効
    recursion no;

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

    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    最終行にゾーン指定(以下)を追加
    // 正引きゾーン(kajuhome.com)の指定
    zone "kajuhome.com" {
        type master;
        file "kajuhome.com.wan";       <--- ファイル名に注視
        allow-update { none; };
    };
    // 逆引きゾーン(221.151.xxx.yyy)の指定
    zone "xxx.151.221.in-addr.arpa" {
        type master;
        file "xxx.151.221.in-addr.arpa.db";
        allow-update { none; };
    };
};

■ 注意:bind のバージョンが 9.5 以降(Ver >= 9.5)の場合

以下の部分が view のスコープ外に定義されていませんか?
zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


以下の様に view スコープ内に上記 zone 定義を移動します。
view 定義外の zone 参照を移動
view "internal" {
    match-clients { localhost; localnets; };
    recursion yes;

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

    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    zone "kajuhome.com" {
        type master;
        file "kajuhome.com.lan";
        allow-update { none; };
    };
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "1.168.192.in-addr.arpa.db";
        allow-update { none; };
    };
};

view "external" {
    match-clients { any; };
    recursion no;

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

    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    zone "kajuhome.com" {
        type master;
        file "kajuhome.com.wan";
        allow-update { none; };
    };
    zone "xxx.151.221.in-addr.arpa" {
        type master;
        file "xxx.151.221.in-addr.arpa.db";
        allow-update { none; };
    };
};

■ ゾーンファイルの作成

■ 内向き正引きゾーンの作成

内向き正引きゾーンファイル(kajuhome.com.lan)の作成
# vi /var/named/kajuhome.com.lan
$TTL    86400
@       IN      SOA     kajuhome.com. root.kajuhome.com.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              kajuhome.com.
        IN      MX      10      kajuhome.com.
        IN      A               192.168.1.5
client1 IN      A               192.168.1.10
client2 IN      A               192.168.1.20
fedora IN      CNAME           kajuhome.com.
www   IN      CNAME           kajuhome.com.

NSレコードはゾーンを管理するDNSサーバを指定します。
MXレコードはメールの配信先を指定します。(メールサーバの構築で必要となります。)
CNAMEレコードは別名でアクセスする場合に指定します。

Aレコードがホスト名に対応したIPアドレスを設定しています。

■ 内向き逆引きゾーンの作成

内向き逆引きゾーンファイル(1.168.192.in-addr.arpa.db)の作成
# vi /var/named/1.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     kajuhome.com. root.kajuhome.com.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              kajuhome.com.
5       IN      PTR             kajuhome.com.
10      IN      PTR             client1.kajuhome.com.
20      IN      PTR             client2.kajuhome.com.

NSレコードは、正引きゾーンファイルで説明しましたので割愛します。
PTRレコードがIPアドレスからホスト名に変換する為のレコードです。

■ 外向き正引きゾーンの作成

正引きゾーンファイル(kajuhome.com.wan)の作成
# vi /var/named/kajuhome.com.wan
$TTL    86400
@       IN      SOA     kajuhome.com. root.kajuhome.com.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              kajuhome.com.
        IN      MX      10      kajuhome.com.
        IN      A               221.151.xxx.yyy

外向きのゾーンファイルには「CNAME」を定義していないので、問い合わせにできる名前は『kajuhome.com』だけとなります。

■ 外向き逆引きゾーンの作成

逆引きゾーンファイル(xxx.151.221.in-addr.arpa.db)の作成
# vi /var/named/xxx.151.221.in-addr.arpa.db
$TTL    86400
@       IN      SOA     kajuhome.com. root.kajuhome.com.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              kajuhome.com.
yyy   IN      PTR             kajuhome.com.

■ ルートDNS情報の設定

ルートDNS情報を取得
# wget ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/named.root
--17:15:43--  ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/named.root
           => `named.root'
ftp.nic.ad.jp をDNSに問いあわせています... 202.12.30.115
ftp.nic.ad.jp[202.12.30.115]:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /internet/rs.internic.net/domain
... 完了しました。
==> PASV ... 完了しました。    ==> RETR named.root ... 完了しました。
長さ: 2,517 (確証はありません)

100%[=====================================>] 2,517         --.--K/s

17:15:43 (1.22 MB/s) - `named.root' を保存しました [2517]

取得したDNS情報を移動
# mv named.root /var/named/named.ca
mv: `/var/named/named.ca' を上書きしてもよろしいですか(yes/no)? y

■ DNS動作前のネットワークファイル関連の確認

■ 名前解決ファイル『hosts』の変更

ホストファイルの確認
# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
#192.168.1.5             fedora.kajuhome.com fedora
#192.168.1.10            client

■ DNS参照設定ファイル『resolv.conf』の変更

DNSサーバ指定ファイルの確認
# vi /etc/resolv.conf
search kajuhome.com
nameserver 192.168.1.5

■ 順序設定ファイルの変更

名前解決をする順番を hostsファイル→dnsの順に名前解決します。(以外は除外。)
ネームサービススイッチの設定ファイルの設定
# vi /etc/nsswitch.conf
#hosts: db files nisplus nis dns
          ↓
hosts: files dns

名前解決を行う方法とその利用順序を記述するファイルの確認
# vi /etc/host.conf
order hosts,bind

■ bindの起動

bindサービスを起動する
【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/named start

【Fedora15以降 / CentOS7 の場合】
# systemctl start named.service


サービス起動に失敗する場合
ログ「/var/log/messages」に下記の様なメッセージが出力され起動しない場合は2つの要因が考えられます。

could not configure root hints from 'named.ca': permission denied
loading configuration: permission denied

1.サービスがファイルを読み取る権限がない
   対処:設定ファイルやゾーンファイルを含め「named」が読めるように変更
         例)# chown named:named /var/named/named.ca
2.SELinuxが有効になっている為拒否される
   対処:SELinuxを無効にする
         参照:『セキュリティが仇となる?(インストール後のSELinux無効設定方法)

■ bindの動作確認

■ 内向き名前解決の確認

  1. 『インターネットプロトコル(TCP/IP)』を選択
  2. 『プロパティ』ボタン押下
  3. 下記へ遷移
  1. 『次のDNSサーバーのアドレスを使う(E)』をチェック
  2. 『優先DNSサーバー(P)』に自サーバのローカルIPアドレスを設定

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

nslookupの起動
C:\Documents and Settings\fedora>nslookup
Default Server:  kajuhome.com
Address:  192.168.1.5

正引き試験
> kajuhome.com
Server:  kajuhome.com
Address:  192.168.1.5

Name:    kajuhome.com
Address:  192.168.1.5                    ← ローカルIPアドレスが返ってきた

正引き試験(CNAME)
> www.kajuhome.com
Server:  kajuhome.com
Address:  192.168.1.5

Name:    kajuhome.com
Address:  192.168.1.5                    ← ローカルIPアドレスが返ってきた
Aliases:  www.kajuhome.com               ← 別名(CNAME)で解決されている

正引き試験(ショート名)
> client1
Server:  kajuhome.com
Address:  192.168.1.5

Name:    client1.kajuhome.com
Address:  192.168.1.10                    ← ローカルIPアドレスが返ってきた


逆引き試験
> 192.168.1.5
Server:  kajuhome.com
Address:  192.168.1.5

Name:    kajuhome.com          ← ホスト名が返ってきた
Address:  192.168.1.5

逆引き試験
> 192.168.1.20
Server:  kajuhome.com
Address:  192.168.1.5

Name:    client2.kajuhome.com          ← ホスト名が返ってきた
Address:  192.168.1.20

nslookupを終了
> exit

DOSを終了
C:\Documents and Settings\fedora>exit

■ 外向き名前解決の確認

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

nslookupの起動
C:\Documents and Settings\fedora>nslookup
Default Server:  UnKnown
Address:  172.16.12.251

問い合わせるDNSサーバを指定(自サーバのグローバルIPを指定する)
自サーバのグローバルIPアドレスを調べるのに問い合わせるDNSサーバへ
自サーバのグローバルIPアドレスを入力するのは不自然ですが、
bindの動作検証を行うのが目的ですのでご了承ください。
> server 221.151.xxx.yyy
Default Server:  [221.151.xxx.yyy]
Address:  221.151.xxx.yyy

正引き試験
> kajuhome.com
Server:  [221.151.xxx.yyy]
Address:  221.151.xxx.yyy

Non-authoritative answer:
Name:    kajuhome.com
Address:  221.151.xxx.yyy         ← グローバルIPアドレスが返ってきた

正引き試験(CNAME)
> www.kajuhome.com
Server:  [221.151.xxx.yyy]
Address:  221.151.xxx.yyy

外向けゾーンには定義していない為、見つからないと返却された。
*** UnKnown can't find www.kajuhome.com: Non-existent domain
また、内向きゾーンファイルも参照していない事も分かる。

正引き試験(試しに内部クライアントを問い合わせてみる)
> client1.kajuhome.com
Server:  [221.151.xxx.yyy]
Address:  221.151.xxx.yyy

外向けゾーンには定義していない為、見つからないと返却された。
*** UnKnown can't find client1.kajuhome.com: Non-existent domain
また、内向きゾーンファイルも参照していない事も分かる。

逆引き試験
> 221.151.xxx.yyy
Server:  [221.151.xxx.yyy]
Address:  221.151.xxx.yyy

Name:    kajuhome.com      ← ホスト名が返ってきた
Address:  221.151.xxx.yyy

nslookupを終了
> exit

DOSを終了
C:\Documents and Settings\fedora>exit

■ syslogに出力されるエラーメッセージについて

named外部指定パラメータの追加
# vi /etc/sysconfig/named
最下位行に以下を追加する
OPTIONS="-4"

サービスの再起動
【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/named restart

【Fedora15以降 / CentOS7 の場合】
# systemctl restart named.service

実行サービスの確認
#  ps -ef | grep named | grep -v grep
named    10726     1  0 09:18 ?        00:00:00 /usr/sbin/named -u named -4
上記の様に、オプションが追記されている事を確認

■ bindの自動起動

OSの再起動を行なった時にbind(DNSサーバ)を自動的に起動するように設定する
起動時にbindを起動する
【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】
# chkconfig named on
設定内容を確認
# chkconfig --list named
named           0:オフ  1:オフ  2:オン  3:オン  4:オン  5:オン  6:オフ

【Fedora15以降 / CentOS7 の場合】
# systemctl enable named.service
設定内容を確認
# systemctl status named.service
named.service - Berkeley Internet Name Domain (DNS)
          Loaded: loaded (/usr/lib/systemd/system/named.service; enabled)
          Active: active (running) since Sun, 17 Jun 2012 08:03:51 +0900; 1min 4s ago
        Main PID: 1209 (named)
          CGroup: name=systemd:/system/named.service
                  └ 1209 /usr/sbin/named -u named -4

■ bindをchrootへ移行

chrootとは、bind(named)プロセス等がchrootパスを「/」ルートと認識させ、万一乗っ取られた場合にそのパス以上にアクセスさせない為の機構です。

■ bind-chrootのインストール

bindサービスを停止
【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/named stop

【Fedora15以降 / CentOS7 の場合】
# systemctl stop named.service


bind-chrootのインストール
# yum -y install bind-chroot
【Fedora17のみ以下を追加実行】
# /usr/libexec/setup-named-chroot.sh /var/named/chroot on


bind-chroot導入後(Fedora17除く)は「/etc/sysconfig/named」ファイル内の属性「BOOTDIR」で設定されているパスに
サービス起動時に自動マウントされ「chroot」されます。
/etc/sysconfig/named」ファイルの「BOOTDIR」
# cat /etc/sysconfig/named | grep "^ROOTDIR"
ROOTDIR=/var/named/chroot

bindサービス起動前の「BOOTDIR」配下のbind関連ディレクトリ内容
# ls -l /var/named/chroot/etc/
合計 12
-rw-r--r-- 1 root root   331 11月 12 18:38 2010 localtime
drwxr-x--- 2 root named 4096  1月 10 18:13 2012 named
drwxr-xr-x 3 root root  4096  5月 18 07:54 2012 pki
# ls -l /var/named/chroot/var/named/
合計 0


bindサービス起動後の「BOOTDIR」配下のbind関連ディレクトリ内容
# ls -l /var/named/chroot/etc/
合計 28
-rw-r--r-- 1 root root   331 11月 12 18:38 2010 localtime
drwxr-x--- 2 root named 4096  1月 10 18:13 2012 named
-rw-r----- 1 root named 1581  1月 16 14:06 2012 named.conf
-rw-r--r-- 1 root named 2544  1月 10 18:13 2012 named.iscdlv.key
-rw-r----- 1 root named  931  6月 21 19:09 2007 named.rfc1912.zones
-rw-r--r-- 1 root named  487  1月 10 18:13 2012 named.root.key
drwxr-xr-x 3 root root  4096  5月 18 07:54 2012 pki
# ls -l /var/named/chroot/var/named/
合計 48
-rw-rw---- 1 root  named  459 12月 16 12:48 2006 1.168.192.in-addr.arpa.db
-rw-rw---- 1 root  named  329  3月 14 23:12 2007 xxx.151.221.in-addr.arpa.db
drwxr-x--- 6 root  named 4096  5月 18 07:54 2012 chroot
drwxrwx--- 2 named named 4096  5月 18 07:10 2012 data
drwxrwx--- 2 named named 4096  1月 10 18:13 2012 dynamic
-rw-rw---- 1 root  named  492 12月 16 12:47 2006 kajuhome.com.lan
-rw-rw---- 1 root  named  388  3月 14 23:27 2007 kajuhome.com.wan
-rw-rw---- 1 root  named 2518  4月 16 23:52 2007 named.ca
-rw-rw---- 1 root  named  129  6月 21 19:09 2009 named.empty
-rw-rw---- 1 root  named  152  6月 21 19:09 2007 named.localhost
-rw-rw---- 1 root  named  145  6月 21 19:09 2009 named.loopback
drwxrwx--- 2 named named 4096  1月 10 18:13 2012 slaves

Fedora17(おそらく、bind-chrootのバージョン)では「setup-named-chroot.sh」にてオプションによる有効「on」に
した直後に各設定ファイル(ゾーンファイルも含む)が上記ディレクトリに配置されます。

■ bind-chroot適用前・適用後のbind(named)プロセス

bind-chroot適用前のbindプロセス
注:Fedora17は除きます
# ps -ef | grep named named 1956 1 0 13:43 ? 00:00:00 /usr/sbin/named -u named bind-chroot適用後のbindプロセス # ps -ef | grep named named 1827 1 1 13:42 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot

■ 公開前の準備

自前DNSサーバを外部に公開するに当たって、ルータの設定が必要です。
ルータのポート開閉は、ご自分のルータ取扱説明書をご覧ください。

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.