LoginSignup
16
18

More than 5 years have passed since last update.

DNSサーバ構築

Last updated at Posted at 2015-08-11

目的

開発環境用にDNSサーバを構築する。

方法

Bindを使用し、接続を限定的にする。

環境

  • Amazon Linux AMI release 2015.03
  • bind-9.8.2-0.30.rc1.38.amzn1.x86_64

設定

named.confバックアップ

# cp /etc/named.conf /etc/named.conf.bak

named.conf設定

named.confはBind全体の設定ファイルです。

  1. ”hosts”というaclを作成し、問い合わせ・再帰的問い合わせを限定的にする。(FWでも53番ポートは限定的開放にする。)
  2. zoneステートメントでは動的更新を明示的に無効としておき、zoneファイルをフルパスで記述。
  3. notifyオプションではゾーンファイルが更新された場合、SOAレコードに記述したrefresh間隔とは別に、マスターサーバからスレーブサーバにNOTITYメッセージを出し、NOTITYメッセージを受信したスレーブサーバはマスターサーバに対してゾーン転送要求する。マスターサーバはスレーブサーバからの要求を確認し、ゾーン転送を行う。also-notifyオプションはNSレコードに記述していないサーバへのゾーン転送を行う。
named.conf
acl     "hosts" { localhost; localnets; IPアドレス; };
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     { hosts; };
        allow-recursion { none; };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

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

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

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

zone "example.com" IN {
        type master;
        file "/var/named/hoge.example.com.zone";
        allow-update { none; };
        notify { yes; };
        also-notify { NSレコードに記述していないDNSサーバのIPアドレス; };
};

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

zoneファイル設定

zoneファイルはBindが管理するゾーンの情報を記述されたファイルです。

1.zoneファイル作成(非省略形)

# touch /var/named/hoge.example.com.zone

hoge.example.com.zone
$TTL 1D
example.com.       IN      SOA     ns.example.com. root.example.com. (
                                        2015081101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H      ; minimum
)
example.com.           IN      NS      ns.example.com.
ns.example.com.        IN      A       ***.***.***.***
hoge.example.com.      IN      A       ***.***.***.***
  • SOAはこのゾーンの権限を持つことを宣言している。それに続いて管理者のメールアドレスを[@]を[.]に置換して記述する。
  • シリアルは年/月/日/番号で記述し、同日にファイル更新した場合、番号をインクリメントすること。
  • NSレコードにマスターサーバを指定。(スレーブがある場合はその台数分記述する)
  • DNSサーバと名前解決したいサーバのAレコードを記述
  • ドメインの記述はルートを指す(.)を書く。

2.zoneファイル作成(省略形)
# touch /var/named/hoge.example.com.zone

hoge.example.com.zone
$TTL 1D
$ORIGIN example.com
@       IN      SOA     ns.example.com. root.example.com. (
                                        2015081101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H      ; minimum
)
@           IN      NS      ns
ns          IN      A       ***.***.***.***
hoge        IN      A       ***.***.***.***
  • ORIGINも省略可能。その場合はnamed.confで指定したゾーン名がORIGINになる。
  • ドメインの記述はルートを指す(.)を書かない。

フルサービスリゾルバ設定

Bindにはスタブリゾルバ機能はないので、Linuxのスタブリゾルバを利用する。
自分自身がフルサービスリゾルバになるようにローカル・ループバック・アドレスを記述する。

/etc/resolv.conf
; generated by /sbin/dhclient-script
search ap-northeast-1.compute.internal
#nameserver ***.***.***.***
nameserver 127.0.0.1

構文チェック

# /usr/sbin/named-checkconf /etc/named.conf

# /usr/sbin/named-checkzone example.com /var/named/hoge.example.com.zone
zone hoge.example.com/IN: loaded serial 2015081101
OK

サービス起動

# service named start

動作確認

  1. DNSサーバが機能しているか
  2. 同じネットワークに存在するクライアントから正引きできるか
  3. 異なるネットワークに存在するクライアントから正引きできるか。

DNSサーバが機能しているか

# dig @127.0.0.1 hoge.example.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.38.amzn1 <<>> @127.0.0.1 hoge.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18457
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;hoge.example.com.            IN      A

;; ANSWER SECTION:
hoge.example.com.     86400   IN      A       ***.***.***.***

;; AUTHORITY SECTION:
example.com.           86400   IN      NS      ns.example.com.

;; ADDITIONAL SECTION:
ns.example.com.        86400   IN      A       ***.***.***.***

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 11 04:07:37 2015
;; MSG SIZE  rcvd: 85

同じネットワークに存在するクライアントから正引きできるか

$ dig @***.***.***.*** hoge.example.com

; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> @***.***.***.*** hoge.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12828
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;hoge.example.com.            IN      A

;; ANSWER SECTION:
hoge.example.com.     86400   IN      A       hoge.example.com

;; AUTHORITY SECTION:
example.com.           86400   IN      NS      ns.example.com.

;; ADDITIONAL SECTION:
ns.example.com.        86400   IN      A       ***.***.***.***

;; Query time: 3 msec
;; SERVER: ***.***.***.***#53(***.***.***.***)
;; WHEN: Tue Aug 11 13:33:53 JST 2015
;; MSG SIZE  rcvd: 96

異なるネットワークに存在するクライアントから正引きできるか。

C:>nslookup
既定のサーバー:  ****.***.ne.jp
Address:  ***.***.***.***
> server ***.***.***.***
既定のサーバー:  ec2-***.***.***.***.ap-northeast-1.compute.amazonaws.com
Address:  ***.***.***.***
> hoge.example.com
サーバー:  ec2-***.***.***.***.ap-northeast-1.compute.amazonaws.com
Address:  ***.***.***.***
名前:    hoge.example.com
Address:  ***.***.***.***
  • インターネットDNSとして運用するのであれば、レジストラに構築したDNSサーバを登録する。
16
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18