dns
bind
centos7
bind-chroot

[勉強会]centos7にてDNSサーバを立てる勉強をしたので、


2018.07.06 Thu 更新

設定ファイルのチェック方法と、

DNSサーバが正しく動作しているかの確認について

そのうち追加します。そのうち。。。


概要

centos7系でのDNSサーバの建て方


導入手順

yum -y install bind bind-chroot

systemctl start named-chroot
systemctl enable named-chroot


  • ポートを開く。使用ポートは、53番。

  • 設定は、/etc/named.confへ記述。

  • zoneファイルは、/var/named 下に作成。


named-chrootって何?

chrootはchange root の略で、

named.serviceをルートディレクトリを変更した状態で起動してくれる。

(セキュリティ対策、過信は禁物みたい)

named-chroot.serviceを起動すると、

裏で -t option付きのnamedが起動していることが確認できる。


  • named:

[root@main ~]# ps aux | grep named

named 2820 1.3 11.3 166272 56508 ? Ssl 03:07 0:00 /usr/sbin/named -u named -c /etc/named.conf


  • named-chroot:

[root@main ~]# ps aux | grep /usr/sbin/named

named 2647 0.0 11.6 163892 57968 ? Ssl 02:51 0:00 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot


  • namedの各オプションについて、


    • -uはuser名指定

    • -cはconfigファイル指定

    • -tはルートディレクトリ指定



また、named-chroot.serviceの起動時に、

/var/named 下のファイルを/var/named/chroot/var/named にコピーして起動してくれるので、

zoneファイル等の作成、編集については、通常通り/var/named 下で行えば良い。


DNSサーバの種類

大きく分けると以下の2種類。


  • 権威サーバ(コンテンツサーバ)


    • フルサービスリゾルバからの反復問い合わせに対して、管理下のゾーン情報について返答するサーバ。自分のゾーン情報を持っている。



  • キャッシュサーバ


    • スタブリゾルバからの再帰問い合わせを受けて、反復問い合わせを行うサーバ。キャッシュサーバというと、大体がこのDNSのキャッシュサーバを指す。



ちなみに、リゾルバ(resolver)とは、名前解決を行うためのクライアント側のソフトウェアのこと。

DNSの用語については、下記の記事が参考になるかと思います。

[Qiita] DNSの用語を中心にまとめてみました


named.conf

再帰問い合わせや反復問い合わせ、ゾーン転送等に関して、ネットワーク単位やIP単位で制限をかけたり、

ログの出力について設定したりすることが出来ます。

最低限下記くらいは把握しておきたい。

recursion yes/no; #再帰問合せを受け付けるかどうか

allow-recursion { $ip_or_network; }; #再帰問い合わせ
allow-transfer { $ip_or_network; }; #ゾーン転送
allow-query { $ip_or_network; }; #反復問い合わせ
allow-query-cache { $ip_or_network; }; #キャッシュ問合せ

recursionは、キャッシュサーバとして運用するかどうかの設定。

$ip_or_networkの部分には、許可したいIPアドレスやネットワークを設定する。

デフォルトで、下記のような設定が記述可能。


  • any: 全てのホストを許可

  • none: どのホストも許可しない

  • localhost: 自分自身を許可

  • localnets: 自分の所属するネットワークを許可

IPアドレスを直接追加していくことも出来るが、

下記のようにネットワークやIPをまとめて設定に利用することも可能。

acl "groupname" {

123.123.123.123
192.168.10.0/24
135.245.135.0/24
}

recursion yes;
allow-recursion { groupname; }; #groupnameのみ再帰問い合わせを許可

ファイルを読み込みたいときは、

include $filename;

定義したグループごとに、DNSサーバとして利用できる機能やzone情報を変更するなど、

細かい設定は色々と出来る模様。

詳細は下記のサイトが参考になるかと。

[サーバの実験室 RedHat/Fedora] named.conf の設定


zoneファイル

基本的に名前はなんでも良いらしい。

通例的には、ドメイン名.zoneとするのでは無いかと思う。

include "$filename"; で、読み込む。

hostsファイルと少し似てる。

下記のサイトが詳しいかも。

[FC-Lab] BINDによるDNSの運用


リゾルバに登録

ネームサーバを利用する場合には、リゾルバの設定ファイルに追加してあげる必要がある。

centosなら/etc/resolv.conf に追加してあげればいい。

書き方は、nameserver $ipaddress 、

自身がネームサーバの場合は、nameserver 127.0.0.1

再起動して消える場合は、dns=noneでググると幸せになれる。


余談

色々調べていると、bindは性善説に基づいた設計がされているようなので、

設定はしっかり書いていくのがいいかも。


他に参考にしたサイト

3 Minutes Networking

[CentOSで自宅サーバー構築] DNSサーバー構築(BIND)