BINDサーバの構築

CentOSで自宅サーバー構築のDNSサーバー構築(BIND)を参考にした。

以下の環境のDNSサーバを構築する。

  • ドメイン名

    walhalla

  • DNSサーバ名(IPアドレス)

    bindtest(10.0.2.3)

  • 今回構築するサーバで名前解決できない場合の問い合わせ先(=上位DNSサーバ)のIPアドレス

    10.0.0.1

  • 不正アクセスされた場合の、他のファイルシステムへアクセス対策としてchrootする

BINDのインストール
chrootするので「bind-chroot」を同時にインストールする
# yum install -y bind bind-chroot
(途中省略)
完了しました!
#
BINDの設定
BINDの設定ファイル(/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 {
        listen-on port 53 { 127.0.0.1; localhost; }; //他のホストからの接続に応答する為、localhostを追加
        //localhostはアクセス制御リストにデフォルトでローカルホストとして設定されている。
        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; localnets; }; //他のホストからの接続に応答する為、localnetsを追加
        //localnetsはアクセス制御リストにデフォルトでローカルネットワークとして設定されている。
        recursion yes;

        version "Unknown"; //digコマンド等で外部からDNSサーバのバージョンを表示させない

        dnssec-enable yes;
        dnssec-validation yes;

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

        //今回構築するサーバで名前解決できない場合の問い合わせ先を指定
        forwarders{
                10.0.0.1;
        };
        managed-keys-directory "/var/named/dynamic";
};

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";
include "/etc/named/named.walhalla.zone"; //walhallaドメインの定義ファイル指定
walhallaドメインの定義ファイル作成
以下の内容で/etc/named/named.walhalla.zoneを作成する。
zone "walhalla" {
        type master;
        file "walhalla.db";
};

zone "10.in-addr.arpa" {
        type master;
        file "10.in-addr.arpa.db";
};
パーミッションは、以下のように設定する。
# ll /etc/named/named.walhalla.zone
-rw-r-----. 1 root named 127 11月 20 00:30 2016 /etc/named/named.walhalla.zone
#
chrootパスの確認
chrootするパスは、/etc/sysconfig/namedにROOTDIR=で指定されている。
# grep ROOTDIR /etc/sysconfig/named | grep -v ^\#
ROOTDIR=/var/named/chroot
#
ゾーンデータベース作成
/var/named/chrootにchrootされる為、相対パスで指定したファイルは、/var/named/chroot/var/named/に保存する。 named.ca、named.empty、named.localhost、named.loopbackは、デフォルトで作成される/var/named/named.*を移動させる。
# ll /var/named/named.* /var/named/chroot/var/named/
-rw-r-----. 1 root named 3171  1月 11 23:12 2016 /var/named/named.ca
-rw-r-----. 1 root named  152 12月 15 21:27 2009 /var/named/named.empty
-rw-r-----. 1 root named  152  6月 21 19:09 2007 /var/named/named.localhost
-rw-r-----. 1 root named  168 12月 15 21:27 2009 /var/named/named.loopback
# mv -i /var/named/named.* /var/named/chroot/var/named/
#
walhallaドメイン正引きゾーンデータベースを/var/named/chroot/var/named/walhalla.dbに作成する。
$TTL    86400
@       IN      SOA     walhalla.       root.walhalla.(
                                                2016111901      ;       Serial
                                                28800           ;       Refresh
                                                14400           ;       Retry
                                                3600000         ;       Expire
                                                86400 )         ;       Minimum
        IN      NS      walhalla.
        IN      MX 10   walhalla.
@       IN      A       10.0.2.3
*       IN      A       10.0.2.3
        IN      A       10.0.2.3
bindtest.walhalla.      IN      A       10.0.2.3
walhallaドメイン逆引きゾーンデータベースを/var/named/chroot/var/named/10.in-addr.arpa.dbに作成する。
$TTL    86400
@       IN      SOA     walhalla.       root.walhalla.(
                                                2016111901      ;       Serial
                                                28800           ;       Refresh
                                                14400           ;       Retry
                                                3600000         ;       Expire
                                                86400 )         ;       Minimum
        IN      NS      walhalla.
3       IN      PTR     walhalla.
3.2.0.10.in-addr.arpa.  IN      PTR     bindtest.walhalla.
設定ファイルが/var/named/chroot/var/named/に保存されていることを確認する。また作成したファイルが以下の権限となっていることも確認する。
  • パーミッション

    640

  • オーナ

    root

  • グループ

    namedk

# ll /var/named/chroot/var/named/
合計 24
-rw-r-----. 1 root named  305 11月 20 00:29 2016 10.in-addr.arpa.db
-rw-r-----. 1 root named 3171  1月 11 23:12 2016 named.ca
-rw-r-----. 1 root named  152 12月 15 21:27 2009 named.empty
-rw-r-----. 1 root named  152  6月 21 19:09 2007 named.localhost
-rw-r-----. 1 root named  168 12月 15 21:27 2009 named.loopback
-rw-r-----. 1 root named  321 11月 20 00:28 2016 walhalla.db
#
BIND起動
# service named start
Generating /etc/rndc.key:                                  [  OK  ]
named を起動中:                                            [  OK  ]
#
/var/named/chrootにchrootされていることを確認する。
# ps -ef | grep named | grep -v grep
named     1133     1 98 22:29 ?        00:30:13 /usr/sbin/named -u named -t /var/named/chroot
#
名前解決できることを確認
digコマンドをインストールする。
# yum install -y bind-utils
(途中省略)
完了しました!
#
/etc/resolv.confでDNSクライアントの設定を行う。
  • nameserver

    DNSサーバ名

  • search

    名前解決時の検索リスト

nameserver 10.0.2.3
search walhalla
walhallaドメインの正引きできることを確認する。
# dig bindtest.walhalla

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> bindtest.walhalla
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44473
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;bindtest.walhalla.             IN      A

;; ANSWER SECTION:
bindtest.walhalla.      86400   IN      A       10.0.2.3

;; AUTHORITY SECTION:
walhalla.               86400   IN      NS      walhalla.

;; ADDITIONAL SECTION:
walhalla.               86400   IN      A       10.0.2.3

;; Query time: 25 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sun Nov 20 00:37:33 2016
;; MSG SIZE  rcvd: 81
# 
walhallaドメインの逆引きできることを確認する。
# dig -x 10.0.2.3

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> -x 10.0.2.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2600
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;3.2.0.10.in-addr.arpa.         IN      PTR

;; ANSWER SECTION:
3.2.0.10.in-addr.arpa.  86400   IN      PTR     bindtest.walhalla.

;; AUTHORITY SECTION:
10.in-addr.arpa.        86400   IN      NS      walhalla.

;; ADDITIONAL SECTION:
walhalla.               86400   IN      A       10.0.2.3

;; Query time: 26 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sun Nov 20 00:37:41 2016
;; MSG SIZE  rcvd: 100
# 
名前解決時の検索リストの確認
# ping -c 1 bindtest
PING bindtest.walhalla (10.0.2.3) 56(84) bytes of data.
64 bytes from bindtest.walhalla (10.0.2.3): icmp_seq=1 ttl=64 time=0.110 ms

--- bindtest.walhalla ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 0.110/0.110/0.110/0.000 ms
# 
walhallaドメイン以外で正引き、逆引きできることを確認する。
# dig yahoo.co.jp

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60528
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 13

;; QUESTION SECTION:
;yahoo.co.jp.                   IN      A

;; ANSWER SECTION:
yahoo.co.jp.            88      IN      A       182.22.59.229
yahoo.co.jp.            88      IN      A       183.79.135.206

;; AUTHORITY SECTION:
jp.                     172797  IN      NS      b.dns.jp.
jp.                     172797  IN      NS      g.dns.jp.
jp.                     172797  IN      NS      e.dns.jp.
jp.                     172797  IN      NS      a.dns.jp.
jp.                     172797  IN      NS      f.dns.jp.
jp.                     172797  IN      NS      c.dns.jp.
jp.                     172797  IN      NS      d.dns.jp.

;; ADDITIONAL SECTION:
g.dns.jp.               172797  IN      A       203.119.40.1
e.dns.jp.               172797  IN      A       192.50.43.53
e.dns.jp.               172797  IN      AAAA    2001:200:c000::35
a.dns.jp.               172797  IN      A       203.119.1.1
a.dns.jp.               172797  IN      AAAA    2001:dc4::1
b.dns.jp.               172797  IN      A       202.12.30.131
b.dns.jp.               172797  IN      AAAA    2001:dc2::1
d.dns.jp.               172797  IN      A       210.138.175.244
d.dns.jp.               172797  IN      AAAA    2001:240::53
c.dns.jp.               172797  IN      A       156.154.100.5
c.dns.jp.               172797  IN      AAAA    2001:502:ad09::5
f.dns.jp.               172797  IN      A       150.100.6.8
f.dns.jp.               172797  IN      AAAA    2001:2f8:0:100::153

;; Query time: 4299 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sun Nov 20 00:44:19 2016
;; MSG SIZE  rcvd: 457

# dig -x 182.22.59.229

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> -x 182.22.59.229
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17120
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 7, ADDITIONAL: 2

;; QUESTION SECTION:
;229.59.22.182.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
229.59.22.182.in-addr.arpa. 900 IN      PTR     f1.top.vip.ssk.yahoo.co.jp.

;; AUTHORITY SECTION:
182.in-addr.arpa.       86399   IN      NS      tinnie.arin.net.
182.in-addr.arpa.       86399   IN      NS      ns2.lacnic.net.
182.in-addr.arpa.       86399   IN      NS      ns4.apnic.net.
182.in-addr.arpa.       86399   IN      NS      ns3.apnic.net.
182.in-addr.arpa.       86399   IN      NS      ns1.apnic.net.
182.in-addr.arpa.       86399   IN      NS      apnic.authdns.ripe.net.
182.in-addr.arpa.       86399   IN      NS      apnic1.dnsnode.net.

;; ADDITIONAL SECTION:
tinnie.arin.net.        172799  IN      A       199.212.0.53
tinnie.arin.net.        172799  IN      AAAA    2001:500:13::c7d4:35

;; Query time: 1869 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sun Nov 20 00:44:35 2016
;; MSG SIZE  rcvd: 304

#
DNSサーバのバージョンが表示されないことを確認
# dig chaos txt version.bind

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> chaos txt version.bind
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23931
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "Unknown"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 2 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Tue Nov 22 01:05:39 2016
;; MSG SIZE  rcvd: 64
#
OS起動時にDNSサーバ自動起動設定
# chkconfig --list named
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig named on
# chkconfig --list named
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off
#

0 件のコメント :

コメントを投稿