【CentOS7】 DNSサーバーの構築手順(bind-chroot、bind9.9.4)

 

レンタルサーバーには欠かせないDNS(Domain Name System:名前解決の仕組み)ですが、DNSの内部的な処理がどのようになっているのか詳しく調べるために、実際に検証用に DNS サーバーを構築してみました。

 

下記の記事はchrootについて分かりやすく解説をしています。

 

 

DNSサーバー構築の環境・設計

以下の環境で内部DNSサーバーを構築したので、ぜひ参考にしてください。

■環境

OS:CentOS7 ← DNSサーバー

OS:Windows ← 個人パソコン

 

■設計

DNSサーバー:bind(9.9.4-38.el7_3.2)

内部ドメイン名:tama-chan.local

192.168.1.10 ns ← DNSサーバーにする

192.168.1.3  PC ← 個人のWindowsパソコン

 

図解するとこんな感じになります。

bindをインストールします。

[root@centos7 ~]# yum install bind ← bindをインストール
読み込んだプラグイン:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                                             | 3.6 kB  00:00:00
epel/x86_64/metalink                                                             | 5.5 kB  00:00:00
epel                                                                             | 4.3 kB  00:00:00
extras                                                                           | 3.4 kB  00:00:00
groonga                                                                          | 2.5 kB  00:00:00
ius                                                                              | 2.3 kB  00:00:00
updates                                                                          | 3.4 kB  00:00:00
(1/5): groonga/7/x86_64/primary_db                                               | 278 kB  00:00:00
(2/5): ius/x86_64/primary_db                                                     | 203 kB  00:00:01
(3/5): epel/x86_64/updateinfo                                                    | 781 kB  00:00:01
(4/5): updates/7/x86_64/primary_db                                               | 4.7 MB  00:00:04
(5/5): epel/x86_64/primary_db                                                    | 4.7 MB  00:00:20
Determining fastest mirrors
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * ius: mirrors.kernel.org
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ bind.x86_64 32:9.9.4-38.el7_3.2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================
 Package            アーキテクチャー     バージョン                         リポジトリー           容量
==========================================================
インストール中:
 bind               x86_64               32:9.9.4-38.el7_3.2                updates               1.8 M ← bindのバージョンは 9.9.4-38

トランザクションの要約
==========================================================
インストール  1 パッケージ

総ダウンロード容量: 1.8 M
インストール容量: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
bind-9.9.4-38.el7_3.2.x86_64.rpm                                                 | 1.8 MB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 32:bind-9.9.4-38.el7_3.2.x86_64                                         1/1
  検証中                  : 32:bind-9.9.4-38.el7_3.2.x86_64                                         1/1

インストール:
  bind.x86_64 32:9.9.4-38.el7_3.2

完了しました!
[root@centos7 ~]#

 

[root@centos7 ~]# yum install bind-chroot   ←bind-chrootもインストールする
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * ius: mirrors.kernel.org
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ bind-chroot.x86_64 32:9.9.4-38.el7_3.2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=========================================================
 Package                 アーキテクチャー   バージョン                        リポジトリー         容量
=========================================================
インストール中:
 bind-chroot             x86_64             32:9.9.4-38.el7_3.2               updates              85 k

トランザクションの要約
=========================================================
インストール  1 パッケージ

総ダウンロード容量: 85 k
インストール容量: 3.3 k
Is this ok [y/d/N]: y
Downloading packages:
bind-chroot-9.9.4-38.el7_3.2.x86_64.rpm                                          |  85 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 32:bind-chroot-9.9.4-38.el7_3.2.x86_64                                  1/1
  検証中                  : 32:bind-chroot-9.9.4-38.el7_3.2.x86_64                                  1/1

インストール:
  bind-chroot.x86_64 32:9.9.4-38.el7_3.2

完了しました!
[root@centos7 ~]#

[root@centos7 ~]# cd /var/named/ ←chrootができているか確認
[root@centos7 named]# ls ←chrootができているか確認
chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves ←chrootができていることを確認できた。
[root@centos7 named]# 

 

 

bind-chrootをインストールしてbindを確認したところ、現在 bind・bind-chroot サービスは起動していない状態、且つdisabledの状態です。

 

[root@centos7 etc]# cd /var/named/chroot/etc/named/ ←bind,bind-chrootインストール後にファイルの情報を確認
[root@centos7 named]# ls
[root@centos7 named]# ←まだサービスが起動していないためファイルが何もない状態

 

この /var/named/chroot が bindにとっての「/(root)」ディレクトリになります。

そのため、bind サービスは /var/named/chroot より上のディレクトリには行けなくなり、仮にbindを乗っ取られても他のディレクトリには被害が及びません。

つまり、セキュリティを確保することができます。

 

念のためサービスの状況確認と設定確認をします。

[root@centos7 named]# systemctl status named ←namedのステータス確認をしてまだ named が起動していないことを確認
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@centos7 named]# systemctl status named-chroot ←named-chroot のステータス確認をしてまだ named-chroot が起動していないことを確認
● named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@centos7 named]# systemctl list-unit-files | grep named ←サービスの自動起動設定を確認
named-chroot-setup.service                    static
named-chroot.service                          disabled
named-setup-rndc.service                      static
named.service                                 disabled
systemd-hostnamed.service                     static
[root@centos7 named]#

 

named.service も named-chroot.service も「disabled(OS再起動で自動的にサービスが上がってこない)」になっています。

named-chroot-setup.serviceが「static」となっていますが、これは毎回サービスとして起動するものではなく他のサービスに依存して起動したりしなかったりします。

つまり起動するかどうかは、その時の「環境・状況」に依存します。

まとめると

  • enabled ← OS起動時にサービスとして自動起動する。
  • disabled ← OS起動をしてもサービスとして自動起動しない。
  • static ← 他のサービスに依存する。その時の状況・環境により起動したりしなかったりする。

です。

 

インターネット上には3つの手順があるので注意

bindに関する設定で、インターネットの情報を調べてみたところ、3つの手順がありました。

①bind-chrootをインストールした場合、設定ファイルを手動でコピーする必要がある派

②bind-chrootをインストールした場合、設定ファイルをシェルでコピーする必要がある派

③bind-chrootをインストール後に手動で設定ファイルを作成しなくても、bind-chrootサービスを起動すれば自動的にbindの設定ファイは作成される派

 

実際にCentOS7でnamed、named-chrootの動作確認をした

実際、手元のCentOS7の環境ではどうなのか確認するため、まずは以下の手順で試してみます。

 

1.named.serviceのみサービス起動してみる。

 →多分「/var/named/chroot/etc/namad」配下に設定ファイルはできない。

  理由は、「named-chroot.service」「named-chroot-setup.service」も起動していないから。

 

2.named-chroot.serviceを起動する。

 →多分、自動的に「/var/named/chroot/etc/namad」配下に設定ファイルができている。

  理由は、「named-chroot-setup.service」の自動起動設定が「static」になっていて、依存関係で起動していろいろとセットアップをしてくれるだろうから。

 

[root@centos7 named]# systemctl enable named.service ← namedが自動起動するように設定します。
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@centos7 named]# systemctl start named.service ← namedを起動します。
[root@centos7 named]# systemctl status named.service  ← namedが正常に起動しているか確認します。
named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 07:01:02 JST; 6s ago
  Process: 5566 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 5563 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 5568 (named)
   CGroup: /system.slice/named.service
           mq5568 /usr/sbin/named -u named

 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: command channel listening on ::1#953
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: managed-keys-zone: loaded serial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: zone localhost/IN: loaded serial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip...ial 0
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: all zones loaded
 4月 16 07:01:02 centos7.journey.dix.asia named[5568]: running
 4月 16 07:01:02 centos7.journey.dix.asia systemd[1]: Started Berkeley Internet Name Domain (DNS).
Hint: Some lines were ellipsized, use -l to show in full.

 

[root@centos7 named]# ll /var/named/chroot/etc/named/ ← 念のため /var/named/chroot/etc/named/ に設定ファイルが作成されているか確認。されていない。
合計 0

 

[root@centos7 named]# systemctl enable named-chroot ← named-chroot が自動起動するように設定 
Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
[root@centos7 named]# systemctl start named-chroot ← named-chroot を起動する 
[root@centos7 named]# systemctl status named-chroot ← named-chroot のステータスを確認する 
named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 07:04:06 JST; 5s ago
  Process: 5830 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 5826 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 5831 (named)
   CGroup: /system.slice/named-chroot.service
           mq5831 /usr/sbin/named -u named -t /var/named/chroot

 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: couldn't add command channel ::1#953: address in use
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: managed-keys-zone: journal file is out of date: removing journal file
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: managed-keys-zone: loaded serial 2
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: zone localhost/IN: loaded serial 0
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip...ial 0
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: all zones loaded
 4月 16 07:04:06 centos7.journey.dix.asia named[5831]: running
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7 named]# pwd
/var/named/chroot/etc/named
[root@centos7 named]# ls ← /var/named/chroot/etc/named/ に設定ファイルが作成されているか確認。されていない。

[root@centos7 name]# cd /var/named/chroot/etc 
[root@centos7 etc]# pwd ← しかし /var/named/chroot/etc 配下には「named.conf」ファイルが作成されている?
/var/named/chroot/etc
[root@centos7 etc]# ll
合計 24
-rw-r--r-- 2 root root   292  3月  9 06:25 localtime
drwxr-x--- 2 root named    6  2月 15 22:16 named
-rw-r----- 1 root named 1705  3月 22  2016 named.conf ←named.confファイルが存在する。
-rw-r--r-- 1 root named 2389  2月 15 22:16 named.iscdlv.key
-rw-r----- 1 root named  931  6月 21  2007 named.rfc1912.zones
-rw-r--r-- 1 root named  487  7月 19  2010 named.root.key
drwxr-x--- 3 root named   25  4月 15 23:00 pki
-rw-r----- 1 root named   77  4月 16 07:01 rndc.key
[root@centos7 etc]#

 

 

/var/named/chroot/etc/named/ ディレクトリ配下には、設定ファイルが作成されていませんでしたが、/var/named/chroot/etc ディレクトリ配下には named.conf ファイルが作成されていました。

 

named-chroot サービスを起動すると named.conf ファイルが自動で作成されるのが正解

何が正しいのかもう一度整理します。

・結論は③だった

・「yum install named-chroot」コマンドで「named-chroot」パッケージをインストール

・named、named-chroot サービスを自動起動に設定

・named、named-chroot サービスを起動

・/var/named/chroot/etc/named.conf ファイルが作成されていた

・named のインストール直後は、/var/named/chroot/etc/named.conf は存在していない

[root@centos7 named]# systemctl list-unit-files | grep named ← named、named-chrootインストール直後の自動起動の設定を確認します。
named-chroot-setup.service      static
named-chroot.service         enabled
named-setup-rndc.service       static
named.service             enabled
systemd-hostnamed.service       static

[root@centos7 named]# cd /var/named/chroot/ ← 一応、named-chrootインストール直後はディレクトリあり

[root@centos7 named]# ls
dev etc run usr var

 

[root@centos7 named]# cd /var/named/chroot/etc/ 
[root@centos7 etc]# ls
localtime  named  named.conf  named.iscdlv.key  named.rfc1912.zones  named.root.key  pki  rndc.key

[root@centos7 etc]# cd /var/named/chroot/etc/named/ 
[root@centos7 named]# ls ← /var/named/chroot/etc/named ディレクトリにも何もファイルなし

[root@centos7 named]# 

 

 

念のため、インストール直後の「/var/named/chroot/etc/named.conf」の内容を確認します。

[root@centos7 etc]# pwd
/var/named/chroot/etc
[root@centos7 etc]# ls -l
合計 24
-rw-r--r-- 2 root root   292  3月  9 06:25 localtime
drwxr-x--- 2 root named    6  2月 15 22:16 named
-rw-r----- 1 root named 1705  3月 22  2016 named.conf
-rw-r--r-- 1 root named 2389  2月 15 22:16 named.iscdlv.key
-rw-r----- 1 root named  931  6月 21  2007 named.rfc1912.zones
-rw-r--r-- 1 root named  487  7月 19  2010 named.root.key
drwxr-x--- 3 root named   25  4月 15 23:00 pki
-rw-r----- 1 root named   77  4月 16 07:01 rndc.key
[root@centos7 etc]# cat 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { 127.0.0.1; };
        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";
        allow-query     { localhost; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

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

[root@centos7 etc]#

 

named と named-chroot の2つのプロセスが起動していることが判明

namedのサービス確認をしたところ、以下のように「named」「named-chroot」が連携しているように見えますが、念のために調査をしてみると、以下の状態は連携しているのではなく、named が2つ起動していることが判明しました。

[root@centos7 etc]# ps -ef | grep named
named     1292     1  0 07:20 ?        00:00:00 /usr/sbin/named -u named
named     1303     1  0 07:20 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
root      3213  2696  0 09:23 pts/0    00:00:00 grep --color=auto named
[root@centos7 etc]#

 

調べたところ、chroot をインストールした環境の場合、

  • named  → 自動起動 disable(自動起動しない)
  • named-chroot → 自動起動 enable(自動起動する)

という環境にする必要がるようです。

でないと、上記のように named が2つ起動している状態になってしまいます。

参考:http://blog.livedoor.jp/aspplus/archives/51888435.html

 

この場合は以下のように named の方を off にします。

[root@centos7 etc]# systemctl stop named
[root@centos7 etc]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since 日 2017-04-16 09:28:38 JST; 5s ago
  Process: 3227 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1279 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1118 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1303 (code=exited, status=0/SUCCESS)

 4月 16 07:20:01 centos7.journey.dix.asia named[1292]: running
 4月 16 09:28:37 centos7.journey.dix.asia systemd[1]: Stopping Berkeley Internet Name Domain (DNS)...
 4月 16 09:28:37 centos7.journey.dix.asia named[1292]: received control channel command 'stop'
 4月 16 09:28:37 centos7.journey.dix.asia named[1292]: shutting down: flushing changes
 4月 16 09:28:37 centos7.journey.dix.asia named[1292]: stopping command channel on 127.0.0.1#953
 4月 16 09:28:37 centos7.journey.dix.asia named[1292]: stopping command channel on ::1#953
 4月 16 09:28:38 centos7.journey.dix.asia named[1292]: no longer listening on 127.0.0.1#53
 4月 16 09:28:38 centos7.journey.dix.asia named[1292]: no longer listening on ::1#53
 4月 16 09:28:38 centos7.journey.dix.asia named[1292]: exiting
 4月 16 09:28:38 centos7.journey.dix.asia systemd[1]: Stopped Berkeley Internet Name Domain (DNS).
[root@centos7 etc]# systemctl disable named
Removed symlink /etc/systemd/system/multi-user.target.wants/named.service.
[root@centos7 etc]# systemctl list-unit-files | grep named
named-chroot-setup.service                    static
named-chroot.service                          enabled
named-setup-rndc.service                      static
named.service                                 disabled
systemd-hostnamed.service                     static
[root@centos7 etc]# ps -ef | grep named
root      3317  2696  0 09:29 pts/0    00:00:00 grep --color=auto named
[root@centos7 etc]# ps -ef | grep named*
root      3319  2696  0 09:29 pts/0    00:00:00 grep --color=auto named
[root@centos7 etc]# ps -ef | grep chroot
root      3327  2696  0 09:30 pts/0    00:00:00 grep --color=auto chroot
[root@centos7 etc]#

 

しかし、2つの named が停止しています。。

しかし、現状

「named → 自動起動 OFF」

「named-chroot → 自動起動 ON」

の状態なのでOSを再起動したときにどのように動作をするのか確認した方が良いと思い、CentOS7のOSを再起動しました。

そして再起動後に確認すると、以下のように「named」が1つだけ起動している状態になりました。

しかも chroot の方が起動しています。

[root@centos7 ~]# ps -ef | grep named
named     1170     1  0 09:32 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot ←namedが1つだけ起動している状態になった。
root      2730  2684  0 09:34 pts/0    00:00:00 grep --color=auto named
[root@centos7 ~]#

 

設定的にはこれが正しいと思います。

CentOS7での named と named-chroot の設定(bind設定)まとめ

1.以下のように bind(named,named-chroot)をインストールします。

[root@centos7 ~]# yum install bind bind-chroot

 

2.以下の状態にサービス設定をします。

[root@centos7 ~]# systemctl list-unit-files | grep named
named-chroot-setup.service                    static
named-chroot.service                          enabled
named-setup-rndc.service                      static
named.service                                 disabled
systemd-hostnamed.service                     static
[root@centos7 ~]#

 

named → 自動起動 OFF

named-chroot → 自動起動 ON

 

以下のコマンドを実行して上の状態を作ります。

[root@centos7 named]# syestemctl enable named-chroot
Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
[root@centos7 named]# systemctl start named-chroot

 

3.設定ファイル(named.conf)が自動的に作成されているか確認します。

[root@centos7 ~]# cd /var/named/chroot/etc/
[root@centos7 etc]# ls -l
合計 24
-rw-r--r-- 2 root root   292  3月  9 06:25 localtime
drwxr-x--- 2 root named    6  2月 15 22:16 named
-rw-r----- 1 root named 1705  3月 22  2016 named.conf
-rw-r--r-- 1 root named 2389  2月 15 22:16 named.iscdlv.key
-rw-r----- 1 root named  931  6月 21  2007 named.rfc1912.zones
-rw-r--r-- 1 root named  487  7月 19  2010 named.root.key
drwxr-x--- 3 root named   25  4月 15 23:00 pki
-rw-r----- 1 root named   77  4月 16 07:01 rndc.key
[root@centos7 etc]#

 

4.named プロセスが1つしか起動していないことを確認する。

[root@centos7 etc]# ps -ef | grep named
named     2863     1  0 09:44 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
root      2891  2684  0 09:49 pts/0    00:00:00 grep --color=auto named
[root@centos7 etc]#

 

以上で、named,named-chrootのインストール手順は終わりです。

この後「named.conf」ファイルを編集します。

なぜbind-chrootパッケージをインストールしたのか?

「named.conf」ファイルの編集をする前に、なぜ今回「bind-chroot(named-chroot)」パッケージをインストールしたのかを説明します。

結論から言うと、「クラッカー(攻撃者)に bind が乗っ取られてもセキュリティを確保するため」です。

chrootとは、指定のディレクトリを/(root)ディレクトリにしてしまい、それ以上の上のディレクトリにアクセスできないようにすることです。

chrootを別名「chroot監獄」などと言います。

 

 

named-chroot の目的は、bind に上のディレクトリ階層にアクセスさせないためです。

その結果、セキュリティを確保できます。

chrootについて詳しい説明は以下をご覧ください。

 

【chroot】 なぜFTPでレンタルサーバーにアクセスしても、他のアカウントのファイルが見れないか?

 

 

イメージしやすいように FTP サーバーを例に例えて説明すると、FTP サーバーも chroot を利用して各ユーザーを他のディレクトリに移動させないようにしてセキュリティを保っています。

※特に多数の人が利用する「共用レンタルサーバー」の場合は、この機能が必要になりますよね。

 

chrootのイメージ図

 

たとえば、FTPサーバーの場合は上図のように各ユーザーにchrootを実行して、自分が割り当てられたディレクトリ以上には上に行けないように設定されていますが、同じように bind でも chroot をすることで、最悪 bind が乗っ取られても被害を最小限に抑えることができるようになります。

bindの設定(named.conf、正引きゾーンファイル、逆引きゾーンファイルの作成&編集)

以下の設計とします。

内部ドメイン名:tama-chan.local

192.168.1.10 ns ← DNSサーバー

192.168.1.3  PC

正引きゾーンファイル:/var/named/chroot/var/named/tama-chan.local.zone

逆引きゾーンファイル:/var/named/chroot/var/named/1.168.192.in-addr.arpa.zone

named.confファイル:/var/named/chroot/etc/named.conf

 

正引きゾーンファイル(tama-chan.local.zone)の作成・編集

ゾーンファイルのサンプルは、/var/named/chroot/var/named ディレクトリに、「named.localhost」ファイルがあるのでこれを利用します。

デフォルトのゾーンファイルサンプル(/var/named/chroot/var/named/named.localhost)

 

[root@centos7 named]# cd /var/named/chroot/var/named

[root@centos7 named]# cat named.localhost
$TTL 1D
@      IN    SOA  @ rname.invalid. (
                0   ; serial
                1D   ; refresh
                1H   ; retry
                1W   ; expire
                3H )  ; minimum
           NS   @
           A    127.0.0.1
           AAAA  ::1
[root@centos7 named]#

 

 

このサンプルを参考に以下のようにゾーンファイル(/var/named/chroot/var/named/tama-chan.local.zone)を作成しました。

[root@centos7 named]# cp -ip named.localhost tama-chan.local.zone ← 「named.localhost」をコピーして「tama-chan.local.zone」を作成します。

[root@centos7 named]# vi tama-chan.local.zone ← 「tama-chan.local.zone」を編集して以下のようにします。

[root@centos7 named]# cat tama-chan.local.zone
$TTL 1D
@    IN  SOA     ns.tama-chan.local. root.tama-chan.local. (
                    0   ; serial
                    1D   ; refresh
                    1H   ; retry
                    1W   ; expire
                    3H )  ; minimum
       NS    ns.tama-chan.local.
@    IN   A     192.168.1.10
ns    IN   A     192.168.1.10
PC    IN   A     192.168.1.3
[root@centos7 named]#

 

 

とりあえず必要最低限の設定だけ入れました。

最初に一気に設定してうまく稼働しなかった場合、原因の切り分け調査が大変になるので、フォワーディングの設定とかメールサーバーの設定などは後程入れていきます。

 

設定ファイルの構文が正しいかどうか構文チェックをします。

[root@centos7 named]# named-checkzone tama-chan.local /var/named/chroot/var/named/tama-chan.local.zone
zone tama-chan.local/IN: loaded serial 0
OK
[root@centos7 named]#

構文的には問題ないことが分かりました。

大規模なシステムの場合は、confファイルやzoneファイルを編集して、構文チェックをせずにいきなりbindを再起動した場合、構文が間違っていた場合はbindがエラーになり起動できなくなります。

その場合、他にも影響が出る(関係ないドメインの名前解決でもできなくなる等)ので、必ず構文チェックをしてから bind の再起動をします。

 

/etc/resolv.confの編集

/etc/resolv.confに今回のDNSサーバーのIPアドレスを追加します。

[root@centos7 named]# vi /etc/resolv.conf

 

↓この1行を追加する。

nameserver 127.0.0.1

この「nameserver  127.0.0.1」を追加することにより、名前解決の問い合わせを自分自身(127.0.0.1)で行うようになります。

 

named.conf の編集

次に「named.conf」を編集します。

目的は「内部DNS」サーバーの構築で、外部DNSに関しては何もしません。

あくまでも内部だけです。

以下のように内部DNSサーバーを設計してみました。

 

【設計】

DNSサーバー:bind(9.9.4-38.el7_3.2)

内部ドメイン名:tama-chan.local

192.168.1.10 ns(OS:CentOS)← DNSサーバー

192.168.1.3  PC(OS:Windows)

DNSクライアントは2台(ns と PC)です。

 

今回は named-chroot をインストールしているので、編集するファイルは「/var/named/chroot/etc/named.conf」です。

[root@centos7 etc]# cd /var/named/chroot/etc
[root@centos7 etc]# vi named.conf ← named.conf を編集して以下のようにします。
[root@centos7 etc]#
cat 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { 127.0.0.1; };
        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";
        allow-query     { localhost; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "tama-chan.local" IN { ←この tama-chan.local のゾーン情報を追加した。
        type master;
        file "tama-chan.local.zone";
};

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

 

bind(named-chroot)のサービス再起動

ここまで設定したらnamed-chrootを再起動します。

[root@centos7 etc]# systemctl restart named-chroot ← named-chroot を再起動

[root@centos7 etc]# systemctl status named-chroot ← named-chroot のステータスを確認
named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 11:36:09 JST; 6s ago
  Process: 3315 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3403 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 3400 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 3405 (named)
   CGroup: /system.slice/named-chroot.service
           mq3405 /usr/sbin/named -u named -t /var/named/chroot

 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: command channel listening on ::1#953
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: managed-keys-zone: loaded serial 2
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.... 0
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone tama-chan.local/IN: loaded serial 0 ← tama-chan.local のゾーンファイルも読み込まれました。
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone localhost/IN: loaded serial 0
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: all zones loaded
 4月 16 11:36:09 centos7.journey.dix.asia named[3405]: running
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7 etc]#

 

エラーが出ていないので、ここまでは大丈夫そうです。

Linuxマシン(DNSサーバー)から名前解決の動作確認

名前解決ができるかどうか確認します。

[root@centos7 named]# nslookup tama-chan.local ← tama-chan.local ドメインに対して名前解決ができるかどうか確認してみる。
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   tama-chan.local
Address: 192.168.1.10 ← 回答が返ってきた。

 

[root@centos7 etc]# nslookup ns.tama-chan.local ← ns.tama-chan.localの名前解決ができるかどうか確認してみる。
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   ns.tama-chan.local
Address: 192.168.1.10 ← 回答が返ってきた。

[root@centos7 etc]#

 

[root@centos7 named]# nslookup PC.tama-chan.local ← PC.tama-chan.local の名前解決も試してみる。
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   PC.tama-chan.local
Address: 192.168.1.3  ← 回答が返ってきた。

[root@centos7 named]#

 

 

DNSサーバーに名前解決を投げて

「tama-chan.local」

「ns.tama-chan.local」

「PC.tama-chan.local」

のIPアドレスが返ってきました。

ここまではうまく行っているようです。

Windowsマシンから名前解決の動作確認(クエリ失敗)

DNSクライアントの Windows マシン(デスクトップPC)から動作確認をしてみました。

C:\>ping 192.168.1.10

192.168.1.10 に ping を送信しています 32 バイトのデータ:
192.168.1.10 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.1.10 からの応答: バイト数 =32 時間 =1ms TTL=64

192.168.1.10 の ping 統計:
    パケット数: 送信 = 2、受信 = 2、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 1ms、最大 = 1ms、平均 = 1ms

C:\>nslookup tama-chan.local
DNS request timed out.
    timeout was 2 seconds.
サーバー:  UnKnown
Address:  192.168.1.10

*** UnKnown への要求がタイムアウトしました

C:\>nslookup ns.tama-chan.local
DNS request timed out.
    timeout was 2 seconds.
サーバー:  UnKnown
Address:  192.168.1.10

*** UnKnown への要求がタイムアウトしました

C:\>nslookup PC.tama-chan.local
DNS request timed out.
    timeout was 2 seconds.
サーバー:  UnKnown
Address:  192.168.1.10

*** UnKnown への要求がタイムアウトしました

C:\>

パソコンから ping 通信はできていますが、名前解決はできません。

原因を切り分け調査します。

firewalldの確認

Windowsからの通信をファイアウォールがブロックしている可能性があるので、firewalldのプロセスが起動しているかどうか確認します。

[root@centos7 named]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)  ← firewalldは起動していない
     Docs: man:firewalld(1)
[root@centos7 named]#

firewalldは起動していません。

ポートがLISTENしているか確認

本当はセキュリティ的に一覧をアップするのは危険ですが、今回の環境は完全にローカル環境なので以下にnetstatコマンドの結果を記載します。

[root@centos7 named]# netstat -tanp | grep LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2865/named ← ?あれ?53番ポートは LISTEN 状態であるが、プロトコルはTCPで、アドレスが127.0.0.1です。ここに原因がありそうです。
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1129/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1121/cupsd
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2865/named
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1968/master
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      1968/master
tcp6       0      0 :::110                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::143                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::80                   :::*                    LISTEN      1238/httpd
tcp6       0      0 ::1:53                  :::*                    LISTEN      2865/named
tcp6       0      0 :::22                   :::*                    LISTEN      1129/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1121/cupsd
tcp6       0      0 ::1:953                 :::*                    LISTEN      2865/named
tcp6       0      0 :::25                   :::*                    LISTEN      1968/master
tcp6       0      0 :::993                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::995                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::587                  :::*                    LISTEN      1968/master
[root@centos7 named]#

 

netstatコマンドでLISTENの状態を確認したところ、以下の点に気が付きました。

1.tcp/53 であること

2.127.0.0.1:53 であること

3.IPv6でもLISTENしていること

 

まずは、/var/named/chroot/etc/named.conf を確認してみましょう。

options {
        listen-on port 53 { 127.0.0.1; }; ← LISTEN するIPアドレスが 127.0.0.1 だけです。(他のPCからはアクセスできない)
        listen-on-v6 port 53 { ::1; };  ← IPv6 で LISTEN する設定が入っています。

 

そのため、以下のように修正します。

options {
        listen-on port 53 { any; }; ← すべてのIPアドレスに対して LISTEN するようにします。(他のPCからアクセス可能)
        #listen-on-v6 port 53 { ::1; };  ← コメントアウトをして IPv6 で LISTEN しないようにします。

 

 

named.confの構文チェックをしてから、問題なければ named-chrootを再起動します。

[root@centos7 etc]# named-checkconf /var/named/chroot/etc/named.conf
[root@centos7 etc]#  ← 何も表示されなければ構文は問題ありません。

[root@centos7 etc]# named-checkconf -t /var/named/chroot /etc/named.conf
[root@centos7 etc]#  ← 何も表示されなければ構文は問題ありません。

 

特に何もエラーメッセージが出ないので named.conf ファイルは問題なさそうです。

[root@centos7 etc]# systemctl restart named-chroot ← named-chrootを再起動します。
[root@centos7 etc]# systemctl status named-chroot ← named-chrootのスタータスを確認します。
named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 14:20:39 JST; 6s ago
  Process: 3294 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3383 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 3380 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 3386 (named)
   CGroup: /system.slice/named-chroot.service
           mq3386 /usr/sbin/named -u named -t /var/named/chroot

 4月 16 14:20:39 centos7 named[3386]: command channel listening on ::1#953
 4月 16 14:20:39 centos7 named[3386]: managed-keys-zone: loaded serial 2
 4月 16 14:20:39 centos7 named[3386]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 14:20:39 centos7 named[3386]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 14:20:39 centos7 named[3386]: zone localhost/IN: loaded serial 0
 4月 16 14:20:39 centos7 named[3386]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 14:20:39 centos7 named[3386]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0...al 0
 4月 16 14:20:39 centos7 named[3386]: zone tama-chan.local/IN: loaded serial 0
 4月 16 14:20:39 centos7 named[3386]: all zones loaded
 4月 16 14:20:39 centos7 named[3386]: running
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7 etc]# netstat -tanp | grep LISTEN ← named-chroot の LISTEN ポートを確認します。
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 192.168.1.10:53         0.0.0.0:*               LISTEN      3386/named ← 192.168.1.10でもLISTENしています。
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      3386/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1129/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1121/cupsd
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      3386/named
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1968/master
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      1279/dovecot
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      1968/master
tcp6       0      0 :::110                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::143                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::80                   :::*                    LISTEN      1238/httpd
tcp6       0      0 :::22                   :::*                    LISTEN      1129/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1121/cupsd
tcp6       0      0 ::1:953                 :::*                    LISTEN      3386/named
tcp6       0      0 :::25                   :::*                    LISTEN      1968/master
tcp6       0      0 :::993                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::995                  :::*                    LISTEN      1279/dovecot
tcp6       0      0 :::587                  :::*                    LISTEN      1968/master
[root@centos7 etc]#

 

Windows パソコンから名前解決ができるようになったか確認します。

C:\>nslookup tama-chan.local
サーバー:  UnKnown
Address:  192.168.1.10

*** UnKnown が tama-chan.local を見つけられません: Query refused

 

Windowsで実行すると「UnKnown が tama-chan.local を見つけられません: Query refused」とメッセージが出ます。

まだ設定が足りないようです。

 

DNSサーバーの /var/log/messages を確認してみます。

Apr 16 14:43:16 centos7 named[3386]: client 192.168.1.3#64674 (tama-chan.local): query 'tama-chan.local/A/IN' denied
Apr 16 14:43:16 centos7 named[3386]: client 192.168.1.3#64675 (tama-chan.local): query 'tama-chan.local/AAAA/IN' denied
Apr 16 14:43:16 centos7 named[3386]: client 192.168.1.3#64676 (tama-chan.local): query 'tama-chan.local/A/IN' denied
Apr 16 14:43:16 centos7 named[3386]: client 192.168.1.3#64677 (tama-chan.local): query 'tama-chan.local/AAAA/IN' denied ←queryが来ているのは分かるが拒否されています。

 

queryは来ているけど、DNSサーバーに拒否されていますね。

再度「/var/named/chroot/etc/named.conf」を確認し、以下の設定を発見しました。

[root@centos7 etc]# cat /var/named/chroot/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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        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";
        allow-query     { localhost; }; ← これが Windows パソコンからの query が拒絶されていた原因でした。

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "tama-chan.local" IN {
        type master;
        file "tama-chan.local.zone";
        allow-query     { localhost; }; ← これが Windows パソコンからの query が拒絶されていた原因でした。
};

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

[root@centos7 etc]#

 

以下のように修正しました。

[root@centos7 etc]# vi named.conf ← named.conf を以下のように編集します。

[root@centos7 etc]# cat 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        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";
        allow-query     { any; }; ← allow-queryを「any」にします。

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "tama-chan.local" IN {
        type master;
        file "tama-chan.local.zone";
        allow-query     { any; }; ← allow-queryを「any」にします。
};

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

[root@centos7 etc]# 

 

 

named.confの構文チェックをしてから、問題なければ named-chrootを再起動します。

[root@centos7 etc]# named-checkconf /var/named/chroot/etc/named.conf
[root@centos7 etc]# ← 何も表示されなければ構文は問題ありません。

[root@centos7 etc]# named-checkconf -t /var/named/chroot /etc/named.conf
[root@centos7 etc]# ← 何も表示されなければ構文は問題ありません。

 

 

再度 named-chroot を再起動します。

[root@centos7 etc]# systemctl status named-chroot
named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 15:15:44 JST; 8s ago
  Process: 4123 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 4212 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 4208 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 4213 (named)
   CGroup: /system.slice/named-chroot.service
           mq4213 /usr/sbin/named -u named -t /var/named/chroot

 4月 16 15:15:44 centos7 named[4213]: command channel listening on ::1#953
 4月 16 15:15:44 centos7 named[4213]: managed-keys-zone: loaded serial 2
 4月 16 15:15:44 centos7 named[4213]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: zone tama-chan.local/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: zone localhost/IN: loaded serial 0
 4月 16 15:15:44 centos7 named[4213]: all zones loaded
 4月 16 15:15:44 centos7 named[4213]: running
[root@centos7 etc]#

 

再度 Windows パソコンから nslookup コマンドを実行してみます。

C:\>nslookup ns.tama-chan.local
サーバー:  UnKnown
Address:  192.168.1.10

名前:    ns.tama-chan.local
Address:  192.168.1.10

C:\>nslookup PC.tama-chan.local
サーバー:  UnKnown
Address:  192.168.1.10

名前:    PC.tama-chan.local
Address:  192.168.1.3

C:\>

 

今度は名前解決ができました。

DNS設定まとめ(named.confと正引きのゾーンファイル)

結構 DNS の設定が多岐にわたったのでもう一度設定をまとめます。

DNSサーバー側

・named-chrootをインストール

・named-chrootのみ自動起動ON、namedは自動起動OFF

・/var/named/chroot/etc/named.confを編集

・/var/named/chroot/var/named/ ディレクトリ配下にゾーンファイルを作成(tama-chan.local.zone)

・ゾーンファイルのひな型は /var/named/chroot/var/named/named.localhost を利用

・named.confは以下のように設定

[root@centos7 etc]# cat 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { any; }; ← 全部許可
        #listen-on-v6 port 53 { ::1; }; ← IPv6をコメントアウト
        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";
        allow-query     { any; }; ← 全部許可

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "tama-chan.local" IN {
        type master;
        file "tama-chan.local.zone"; ← ゾーンファイル指定
        allow-query     { any; }; ← 全部許可
};

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

[root@centos7 etc]# 

 

・ゾーンファイル(/var/named/chroot/var/named/tama-chan.local.zone)は以下のように設定

[root@centos7 named]# cat tama-chan.local.zone
$TTL 1D
@       IN SOA  ns.tama-chan.local. root.tama-chan.local. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      ns.tama-chan.local.
@       IN      A       192.168.1.10
ns      IN      A       192.168.1.10
PC      IN      A       192.168.1.3
[root@centos7 named]#

 

・/etc/hostname ファイルは以下のように設定

[root@centos7 named]# cat /etc/hostname
centos7
[root@centos7 named]#

 

・/etc/resolv.conf ファイルは以下のように設定

[root@centos7 named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
[root@centos7 named]#

 

・firewalldは停止

・SELinuxは Disabled

[root@centos7 named]# getenforce
Disabled
[root@centos7 named]#

 

Windowsパソコン側

・IPv6を無効にした

・Windows ファイアウォールは「有効」(既定値の状態)

 

以上です。

CentOS7、bind、named-chroot で逆引きの設定

続けて「逆引きの設定」もします。

逆引きの設定が必要なのかと言われれば不要ですが、DNSサーバー構築の調査のために「逆引き」の設定も入れてみます。

CentOS7、bind、named-chrootでの設計と環境

再度、設計と環境をチェックします。

 

内部ドメイン名:tama-chan.local

192.168.1.10 ns ← DNSサーバー

192.168.1.3  PC

正引きゾーンファイル:/var/named/chroot/var/named/tama-chan.local.zone

逆引きゾーンファイル:/var/named/chroot/var/named/1.168.192.in-addr.arpa.zone

named.confファイル:/var/named/chroot/etc/named.conf

 

逆引き用のゾーンファイルを作成・設定

逆引きゾーンファイルは、以下のように正引きのゾーンファイルをコピーして作成しました。

[root@centos7 named]# cp -ip tama-chan.local.zone 1.168.192.in-addr.arpa.zone
[root@centos7 named]# pwd
/var/named/chroot/var/named
[root@centos7 named]# cat 1.168.192.in-addr.arpa.zone
$TTL 1D
@       IN SOA  ns.tama-chan.local. root.tama-chan.local. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns.tama-chan.local.
10      IN      PTR     tama-chan.local.
10      IN      PTR     ns.tama-chan.local.
3       IN      PTR     PC.tama-chan.local.
[root@centos7 named]#

named.conf ファイルを編集

以下のように逆引きのゾーン部分を追加しました。

[root@centos7 etc]# cat 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        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";
        allow-query     { any; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

zone "tama-chan.local" IN {
        type master;
        file "tama-chan.local.zone";
        allow-query     { any; };
};

zone "1.168.192.in-addr.arpa" IN {   ← この逆引き設定の部分を追加しました。
        type master;
        file "1.168.192.in-addr.arpa.zone";
        allow-query     { any; };
};

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

[root@centos7 etc]#

 

 

named.confの構文チェックをしてから、問題なければ named-chrootを再起動します。

[root@centos7 etc]# named-checkconf /var/named/chroot/etc/named.conf
[root@centos7 etc]# named-checkconf -t /var/named/chroot /etc/named.conf
[root@centos7 etc]# systemctl restart named-chroot
[root@centos7 etc]# systemctl status named-chroot
named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-04-16 16:32:13 JST; 7s ago
  Process: 3140 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3226 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 3223 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 3228 (named)
   CGroup: /system.slice/named-chroot.service
           mq3228 /usr/sbin/named -u named -t /var/named/chroot

 4月 16 16:32:13 centos7 named[3228]: managed-keys-zone: loaded serial 2
 4月 16 16:32:13 centos7 named[3228]: zone 0.in-addr.arpa/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: zone localhost/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0...al 0
 4月 16 16:32:13 centos7 named[3228]: zone 1.168.192.in-addr.arpa.zone/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: zone tama-chan.local/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: zone localhost.localdomain/IN: loaded serial 0
 4月 16 16:32:13 centos7 named[3228]: all zones loaded
 4月 16 16:32:13 centos7 named[3228]: running
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7 etc]#

 

 

逆引き設定の動作確認

設定が完了したので、逆引きの動作確認をします。

 

【Linuxサーバー上から】

 

[root@centos7 etc]# nslookup 192.168.1.10
Server:    192.168.1.10
Address:   192.168.1.10#53

 

10.1.168.192.in-addr.arpa   name = ns.tama-chan.local.
10.1.168.192.in-addr.arpa   name = tama-chan.local.

 

[root@centos7 etc]# nslookup 192.168.1.3
Server:   192.168.1.10
Address:   192.168.1.10#53

3.1.168.192.in-addr.arpa  name = PC.tama-chan.local.

[root@centos7 etc]#

 

 

【Windows PC上から】

C:\>nslookup ns.tama-chan.local
サーバー:  UnKnown
Address:  192.168.1.10

名前:    ns.tama-chan.local
Address:  192.168.1.10

C:\>nslookup PC.tama-chan.local
サーバー:  UnKnown
Address:  192.168.1.10

名前:    PC.tama-chan.local
Address:  192.168.1.3 

 

これで逆引きの設定・動作もOKですね。

かなり長くなってしまいました。

参考にしたサイト一覧

https://centossrv.com/bind.shtml

http://www.fc-lab.com/network/server/dns/zone.html

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

“【CentOS7】 DNSサーバーの構築手順(bind-chroot、bind9.9.4)” への12件のフィードバック

  1. 名無しさん より:

    CentOS7で内部DNSの設定をしたく、色んなサイトや本を拝見してもなかなかうまく行かず、貴サイトを拝見しながら設定を進めています。
    お聞きしたいのですが、192.168.1.3  PC と設定されていますが、PCとはどのことを指しているのでしょうか。

    また、クライアントPCからnslookupをしても、サーバーが、google-public-dns-a.google.com を参照してしまい、貴サイトのように、Unknownとならず、Addressも8.8.8.8となってしまいます。
    こちらはどう設定がおかしいのでしょうか。

    数日かかりっきりでもなかなかうまくできず、困っておりまして、どうか教えていただけましたら大変嬉しく思います。
    よろしくお願いいたします。

  2. 100%レンタルサーバーを使いこなすサイト管理人 より:

    ご質問ありがとうございます!

    > CentOS7で内部DNSの設定をしたく、色んなサイトや本を拝見してもなかなかうまく行かず、貴サイトを拝見しながら設定を進めています。
    > お聞きしたいのですが、192.168.1.3  PC と設定されていますが、PCとはどのことを指しているのでしょうか。

    PCとは個人用のWindowsパソコンを指しています。
    分かりやすくするために図を載せてみました。
    今回の環境はCentOS7にbindをインストールして、DNSサーバー(ネームサーバー)として構築し、個人用のWindowsパソコンから名前解決ができるかどうか検証しています。

    >
    > また、クライアントPCからnslookupをしても、サーバーが、google-public-dns-a.google.com を参照してしまい、貴サイトのように、Unknownとならず、Addressも8.8.8.8となってしまいます。
    > こちらはどう設定がおかしいのでしょうか。

    おそらく今Windowsパソコンを使われていると思いますが、Windowsのネットワークのプロパティを確認すると、「DNSサーバー」のアドレスがGoogleのパブリックDNSである「8.8.8.8」が設定されているのではないでしょうか。
    今回の検証では、WindowsパソコンのDNSサーバーのアドレスは、bindをインストールしたCentOS7のIPアドレスを入れる必要があります。(プライマリDNSに設定する必要があります)
    ここをもう一度確認してみてください。

    >
    > 数日かかりっきりでもなかなかうまくできず、困っておりまして、どうか教えていただけましたら大変嬉しく思います。
    > よろしくお願いいたします。

    また分からないところがありましたら是非ご質問ください。

    • 名無しさん より:

      管理人様

      ご返信ありがとうございます!!

      ご丁寧にイラストも追加してくださってありがとうございました。

      環境は大体同じなのですが、特定の個人PCからではなく、社内の不特定多数の個人PCからのアクセスで名前解決をしたいと思っております。

      できたら、個人ごとのPCでの設定はせずに、CentOSサーバー、DNSサーバーだけの設定で、設定したドメイン名でWEBページの表示ができないのでしょうか。

      また、初心者の質問で大変申し訳無いのですが、WEBサーバーとしてのCentOS7サーバーと、DNSサーバーはハード的に別のサーバーとして分けないといけないのでしょうか。

      WEBサーバーとしてのCentOSにDNSも設定できたら1台で済んで、運用なども楽なのになと思うのですが、色んなサイトや本を調べると別にしないといけないのか、1台だけじゃなく、2台目のDNSサーバーを用意しないといけないのか、、

      よくわからなくて、できるだけシンプルな方法でできたらいいなと思っております。

      WEBサーバーのIPアドレスの設定がないように思えるのですが、こちらのやり方ですと、WEBサーバーとDNSサーバーは一台で行っているのでしょうか。

      重ねて色々質問させていただきましたが、教えていただけましたら幸いです。

      どうぞよろしくお願いいたします。

  3. 100%レンタルサーバーを使いこなすサイト管理人 より:

    > 管理人様
    >
    > ご返信ありがとうございます!!
    >
    > ご丁寧にイラストも追加してくださってありがとうございました。
    >
    > 環境は大体同じなのですが、特定の個人PCからではなく、社内の不特定多数の個人PCからのアクセスで名前解決をしたいと思っております。
    >
    > できたら、個人ごとのPCでの設定はせずに、CentOSサーバー、DNSサーバーだけの設定で、設定したドメイン名でWEBページの表示ができないのでしょうか。

    なるほど。

    ・個人PCに対して個別に設定を入れるという運用をしたくない

    ・しかし特定のDNSサーバーのIPアドレスを個人PCに設定したい

    ということでしたらDHCPサーバーで「DNSサーバーのIPアドレス」を配布することで実現すると思います。

    ただし、もし現在、個人PCの設定が手動で「固定IPアドレス」の設定をしていた場合は、個人PCの設定を「DHCP」に変更する手間が発生します。

    先日の質問で「クライアントPCからnslookupをしても、サーバーが、google-public-dns-a.google.com を参照してしまい」とのことでしたので何らかのDNSが存在しているのだと思います。

    それがLinux系のDNSサーバーなのか、ルーターがDNSサーバーを兼任しているのか環境が分からないため不明ですが、何らかの設定が入っていると思います。

    →そのため「Unknown」の表示がされなかったのだと思います。

    だから、いずれにせよ一度は各個人PCの設定をする必要があります。

    一番お勧めなのは「DHCP」サーバーを立てて一括して管理するのが後々楽かなと考えます。

    >
    > また、初心者の質問で大変申し訳無いのですが、WEBサーバーとしてのCentOS7サーバーと、DNSサーバーはハード的に別のサーバーとして分けないといけないのでしょうか。
    >
    > WEBサーバーとしてのCentOSにDNSも設定できたら1台で済んで、運用なども楽なのになと思うのですが、色んなサイトや本を調べると別にしないといけないのか、1台だけじゃなく、2台目のDNSサーバーを用意しないといけないのか、、
    >
    > よくわからなくて、できるだけシンプルな方法でできたらいいなと思っております。
    >
    > WEBサーバーのIPアドレスの設定がないように思えるのですが、こちらのやり方ですと、WEBサーバーとDNSサーバーは一台で行っているのでしょうか。
    >

    規模感次第だと思いますが、会社で運用しているなら分けた方が良いです。

    個人で趣味で運用しているなら1台に全部入れてしまってもいいですが、日々運用する中でどうしてもメンテナンスが発生するのでできるだけ分けた方が運用しやすいです。

    それにトラブルシューティングもしやすくなります。

    > 重ねて色々質問させていただきましたが、教えていただけましたら幸いです。
    >
    > どうぞよろしくお願いいたします。

    こちらこそ、みなさんが何に困っているのかよく分かったので勉強になりました。

    また質問がありましたら、細かい部分でもいいのでご質問ください。

    よろしくお願いします。

  4. 名無しさん より:

    管理人様
    ご返信ありがとうございます!

    あのあと、自分なりにやってみましたが、個人のパソコンのネットワークの設定から優先DNSサーバーの設定に、DNSサーバーのIPアドレスを設定したら、自分のパソコンから、IPアドレスではなく、設定したドメイン名で表示することができました。

    ですが、意図しているドメインは、
    http://aaa.bb.cc
    でページが表示されることなのですが、
    こちらでは接続できず、

    http://pc.aaa.bb.cc
    ですと接続ができます。

    「pc」は貴サイトで表示されていました、zoneファイルの設定であったものを使わせていただいたのですが、先日ご説明頂きまして、個人パソコンのIPアドレスを設定しても繋がらず、WEBサーバーで使っているIPアドレスを設定し、自分のパソコンに、DNSサーバーのIPアドレスでDNSサーバーの設定をしたら、pc.~のドメインでページの表示ができました。

    個人のPCのIPアドレスを設定していない時点で、貴サイトの方法とは違うのですが、こちらは、pc.がなくて表示することはできないのでしょうか。

    個人のパソコンには固定IPは設定しておりません。

    DHCPサーバーですか、
    私の環境の場合、WEBサーバー、DNSサーバー、の他にDHCPサーバーを立てたが方いいということでしょうか。

    今簡単に調べたら、ルーターの設定でもできるのでしょうか。
    こちらに設定したら普通のインターネットの接続はできなくなったりしないのでしょうか。

    立て続けにお言葉に甘えて質問していまして、大変申し訳ございません。
    どうぞよろしくお願いいたします。

  5. 100%レンタルサーバーを使いこなすサイト管理人 より:

    > 管理人様
    > ご返信ありがとうございます!
    >
    > あのあと、自分なりにやってみましたが、個人のパソコンのネットワークの設定から優先DNSサーバーの設定に、DNSサーバーのIPアドレスを設定したら、自分のパソコンから、IPアドレスではなく、設定したドメイン
    > 名で表示することができました。

    うまくいって良かったです。

    >
    > ですが、意図しているドメインは、
    > http://aaa.bb.cc
    > でページが表示されることなのですが、
    > こちらでは接続できず、
    >
    > http://pc.aaa.bb.cc
    > ですと接続ができます。
    >
    > 「pc」は貴サイトで表示されていました、zoneファイルの設定であったものを使わせていただいたのですが、先日ご説明頂きまして、個人パソコンのIPアドレスを設定しても繋がらず、WEBサーバーで使っているIPアド
    > レスを設定し、自分のパソコンに、DNSサーバーのIPアドレスでDNSサーバーの設定をしたら、pc.~のドメインでページの表示ができました。
    >
    > 個人のPCのIPアドレスを設定していない時点で、貴サイトの方法とは違うのですが、こちらは、pc.がなくて表示することはできないのでしょうか。

    今回の例で言いますと、pcはホスト名で、tama-chan.localはドメイン名になります。
    個人PC(pc)をネットワークの中から見つけ出すためには「pc.tama-chan.local」というように FQDN で指定する必要があります。

    ただ、思ったのが「http://pc.aaa.bb.cc」ということは、pcがWebサーバーを兼任しているということでしょうか。
    pc=Webサーバーとして話を進めますと、1つのアイデアとしてwebサーバーのホスト名を「www」にしてみるのはいかがでしょうか。

    そうすれば、
    http://www.aaa.bb.cc
    でアクセスができるようになるので、「見栄え」が良くなると思います。

    >
    > 個人のパソコンには固定IPは設定しておりません。
    >
    > DHCPサーバーですか、
    > 私の環境の場合、WEBサーバー、DNSサーバー、の他にDHCPサーバーを立てたが方いいということでしょうか。
    >
    > 今簡単に調べたら、ルーターの設定でもできるのでしょうか。
    > こちらに設定したら普通のインターネットの接続はできなくなったりしないのでしょうか。

    ルーターでも DNSサーバー機能を持っているルーターはあります。
    各家庭で利用されている5千円程度のブロードバンドルーターにも DNSサーバー機能が付いているものもあります。
    インターネットへの接続に関しては特に影響はありません。
    DNS機能を利用してもインターネットへの接続は可能です。

    ただ、組織でサーバーを管理しているなら別途 DNS サーバーを構築して管理をした方がいいです。

    >
    > 立て続けにお言葉に甘えて質問していまして、大変申し訳ございません。
    > どうぞよろしくお願いいたします。

    私の方も皆さんが何に対して悩んでいるのか知ることができるので何でもご質問ください。
    出来る限り調べて答えたいと思います。

  6. 名無しさん より:

    管理人様
    ご返信ありがとうございます!

    その後、システム担当の者に聞いたりしたのですが、DHCPサーバー、ルーターに、DNSサーバーを設定するのは駄目、個人パソコン上で優先DNSの設定も駄目、LMHOSTSに設定したらいいんじゃないかと言われてしまいまして。。
    ちょっと八方塞がりな感じです。

    確かにLMHOSTSに設定したら、DNSサーバー自体いらなくなってしまうのですが。。

    できたら、一括管理、切り替えをしたいのです。。
    ↑これが最大の目標、目的です。

    >ただ、思ったのが「http://pc.aaa.bb.cc」ということは、pcがWebサーバーを兼任しているということでしょうか。

    個人パソコンではなく、現在は、「pc」にWEBサーバーのIPアドレスを設定しています。
    (個人パソコンのIPアドレスを設定しても接続ができなかったので。。)
    その状態で、個人パソコンに優先DNSサーバーの設定でDNSサーバーのIPアドレスを設定したら、表示されている状態です。

    http://www.aaa.bb.cc
    では表示されませんでした。

    このような環境で、一括管理できるような方法はありますでしょうか。

    どうにもできなければ、最終手段でLMHOSTS、、と思っていますが、できたらサーバーの設定などで一括管理、切り替えをしたいです。

    お力をいただけたらとても嬉しいです。

    よろしくお願いいたします。

  7. 100%レンタルサーバーを使いこなすサイト管理人 より:

    > その後、システム担当の者に聞いたりしたのですが、DHCPサーバー、ルーターに、DNSサーバーを設定するのは駄目、個人パソコン上で優先DNSの設定も駄
    > 目、LMHOSTSに設定したらいいんじゃないかと言われてしまいまして。。
    > ちょっと八方塞がりな感じです。

    確かに八方ふさがりですね。。
    一番了解が得られそうなのが、DNSサーバーを構築することのような気がしますが、その場合は個人パソコン上でDNSサーバーのIPアドレスの設定が必要になってしまいますし。。
    LMHOSTSでも名前解決の管理はできますが、管理が複雑になるというか、ヒューマンエラーが起こりやすくなります。
    そのため、管理するコンピュータの台数が少ないならまだしも多いと大変ですよね。

    >
    > 確かにLMHOSTSに設定したら、DNSサーバー自体いらなくなってしまうのですが。。
    >
    > できたら、一括管理、切り替えをしたいのです。。
    > ↑これが最大の目標、目的です。
    >
    > >ただ、思ったのが「http://pc.aaa.bb.cc」ということは、pcがWebサーバーを兼任しているということでしょうか。
    >
    > 個人パソコンではなく、現在は、「pc」にWEBサーバーのIPアドレスを設定しています。
    > (個人パソコンのIPアドレスを設定しても接続ができなかったので。。)
    > その状態で、個人パソコンに優先DNSサーバーの設定でDNSサーバーのIPアドレスを設定したら、表示されている状態です。
    >
    > http://www.aaa.bb.cc
    > では表示されませんでした。
    >
    > このような環境で、一括管理できるような方法はありますでしょうか。

    私の説明が分かりにくかったかもしれませんが、www.aaa.bb.ccで表示させようとする場合は、あらかじめホスト名「www」でゾーンファイルに登録しておく必要があります。

    >
    > どうにもできなければ、最終手段でLMHOSTS、、と思っていますが、できたらサーバーの設定などで一括管理、切り替えをしたいです。
    >
    > お力をいただけたらとても嬉しいです。

    一括管理となると DHCP になりますでしょうか。。
    DHCPならIPアドレス、サブネット、ゲートウェイ、DNSサーバーIPアドレスなど一括して設定することができます。
    あとは、、どうやって担当者の理解を得られるかというところでしょうか。

    なかなかお力になれずにすみませんが、メリット・デメリットをまとめて担当者に話してみるのがいいと思います。

    • 名無しさん より:

      管理人様

      お忙しい中返信ありがとうございました。

      そうなんですね~、DNSか、DHCPか。。
      台数も多いので、一括管理のほうが楽だと思うのですが、、、
      多分昔ながらのやり方のほうが慣れていて楽、今の方法で問題ないんだから変えたくない、という担当者の感じなので、難しそうです。。(泣)

      何度もご返信有難うございました。
      私もまた色々検討してみます。
      もし良い方法がありましたらまた教えていただけましたら幸いです。
      ありがとうございました。

  8. 名無しさん より:

    管理人様

    すみません、DNDサーバーの構築をしても、各パソコンに優先DNSの設定をしないと駄目という認識でよろしいのでしょうか。
    初歩的な質問で申し訳ございません。

  9. 100%レンタルサーバーを使いこなすサイト管理人 より:

    > すみません、DNDサーバーの構築をしても、各パソコンに優先DNSの設定をしないと駄目という認識でよろしいのでしょうか。
    > 初歩的な質問で申し訳ございません。

    DNSサーバーを構築して、そのDNSサーバーに名前解決をさせたい場合は、各パソコンでDNSサーバーのIPアドレスを設定する必要があります。

    DHCPサーバーによるIPアドレスの設定でも
    手動によるIPアドレスの設定でも
    各パソコンにDNSサーバーのIPアドレスを設定する必要があります。
    各パソコンがDNSサーバーの所在を知らなければ名前解決ができません。

    名前解決のために問い合わせる順番ですが、
    プライマリDNSサーバー(優先DNSサーバー)から問い合わせ、応答が返ってこなかったらセカンダリDNSサーバーに問い合わせます。

    たとえば、プライマリDNSサーバーがダウンしていたり、ネットワークが遅延してタイムアウトしたら次のDNSサーバーへ問い合わせます。

    ちなみに、問い合わせた結果、DNSサーバーから応答があって且つ名前解決ができなかったらそこで問い合わせは終了します。

    何となくイメージはできますでしょうか。

  10. 名無しさん より:

    管理人様

    ご返事ありがとうございます。

    そうなのですね!
    結局各パソコンに設定は必要なのですね。。(泣)

    何処かで一括管理したら各パソコンに設定しなくていいのかなと思いました。。

    ご丁寧なご説明、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。