BIND(DNS)

【BIND(DNS)】関連ファイルと主な設定項目について

記事内に商品プロモーションを含む場合があります

こんにちは、やすです。

この記事では、DNS(BIND)に関連したファイルと主な設定項目について紹介します。

DNSサーバ(Domain Name Systems)とは、ホストの名前解決(IPアドレスとホスト名の紐づけ)をする役割のサーバのことです。

それぞれのサーバの「/etc/hosts」に、自分が関係するサーバ全てのIPとホスト名を記載してhostsを切っても良いのですが、これ結構大変ですよね。

DNSサーバを作っておき、みんなそこを参照するという方が楽です。

Linuxで標準的に使用されるDNSの機能は「BIND(バインド)」で、そのデーモン名は named 、動作設定ファイルは /etc/named.conf です。

DNSサーバ側の設定ファイル

/etc/named.conf

「/etc/named.conf」は、BINDのメイン設定ファイルです。

特徴
  • ファイル内は「options」「logging」「zone」「include」「controls」の区画(ステートメントと言う)に分けられる。
  • 文末は「;(セミコロン)」が必要。

初期設定

インストール直後だと下記でした。

[root@localhost ~]# cat /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 { 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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        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.root.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@localhost ~]#

options

各動作を設定するセクションです。
optionsステートメント内で使える主な設定項目は下記です。

設定項目内容
allow-queryDNS問い合わせを受け付けるホストを記載。
allow-transferDNSマスターサーバにて、ゾーン情報を転送するDNSスレーブサーバを指定。
blackhole問い合わせを受け付けないホストを記載する項目。

controls

BINDのデーモンである「named」を操作する「rndcコマンド」の使用を許可するホストを設定するセクションです。

DNSサーバにログインせずに、DNSの操作をさせたいホストがある場合は設定します。デフォルトだと項目がないですね。

zone

ゾーンは「管理するドメインの範囲(これをゾーンと言う)を設定する」セクションです。

#デフォルトだと下記のようになってた
zone "." IN {
        type hint;
        file "named.ca";
};

上記だと、「ヒントファイル(named.ca)」には、DNSサーバの情報を書き込んでおきます。

障害対策としてDNSを2台構成にする場合は、「マスター(DNS情報を持つサーバ)」と「スレーブ(マスターの内容を定期的にコピーするサーバ)」の構成にします。

その場合は、typeに「master」もしくは「slave」で宣言した上で、それぞれスレーブサーバとマスターサーバを指定します。

include

外部ファイルを読み込むステートメントです。
その位置に読み込んだ情報が反映されます。たとえばzone情報を別ファイルにして読み込むような形で使います。

#デフォルトだと下記だった
[root@localhost etc]# cat /etc/named.conf | grep include
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost etc]#

/etc/named.rfc1912.zones

ゾーン情報の中身です。

書式

ドメイン名(または名前) IN リソースタイプ 設定値

リソースタイプ説明
SOA
MX(Mail Exchange)メールサーバを指定
NS(Name Server)Zone情報を持つサーバを指定
A(Address)
CNAME

DNSクライアント側の設定ファイル

/etc/nsswitch

「/etc/nsswitch.conf」ファイルは、名前解決を行う優先順位を指定するファイルです。

デフォルトの設定値

hosts:      files dns myhostname

DNSを使うための項目は「hosts」で、上記の記載だと「files(/etc/hosts)」で名前解決できなかったら「dns」で名前解決を行うという記載になります。

/etc/resolv.conf

「/etc/resolv.conf」ファイルは、DNSサーバを指定するファイルです。

書式

nameserver <DNSサーバのIPアドレス>

「nameserver」という設定項目に、利用するDNSサーバのIPアドレスもしくはホスト名を記載します。

まとめ

この記事では、BIND(DNS)関連の設定ファイルを紹介しました。

ではまた、バイバーイ♪