0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BIND DNS 構築/用語メモ

Last updated at Posted at 2025-05-19

BINDの基本設定メモ

DNS自体の仕組みとDNS構築時の設定について、細かく日本語で説明したページが見つからなかったので自分用にメモを作成しました。

バージョン

[root@dns named]# named -v
BIND 9.16.23-RH (Extended Support Version) <id:fde3b1f>
[root@dns etc]# cat oracle-release
Oracle Linux Server release 9.5
[root@dns etc]# dnf info bind
Last metadata expiration check: 1:15:51 ago on Mon 19 May 2025 10:43:32 PM JST.
Installed Packages
Name         : bind
Epoch        : 32
Version      : 9.16.23
Release      : 24.0.1.el9_5.3
Architecture : x86_64
Size         : 1.4 M
Source       : bind-9.16.23-24.0.1.el9_5.3.src.rpm
Repository   : @System
From repo    : ol9_appstream
[root@dns etc]# dnf info bind-utils
Last metadata expiration check: 1:17:03 ago on Mon 19 May 2025 10:43:32 PM JST.
Installed Packages
Name         : bind-utils
Epoch        : 32
Version      : 9.16.23
Release      : 24.0.1.el9_5.3
Architecture : x86_64
Size         : 644 k
Source       : bind-9.16.23-24.0.1.el9_5.3.src.rpm
Repository   : @System
From repo    : ol9_appstream

/etc/named.conf 設定例

◆全体

/etc/named.conf
options {
    listen-on port 53 { any; };
    directory "/var/named";
    allow-query { any; };
    recursion yes;
    forwarders { 8.8.8.8; 8.8.4.4; }; // Google Public DNS
};

//~~~~ 中略 ~~~~~

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

zone "example123.com" IN {
    type master;
    file "example123.com.zone";
};

zone "179.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.179.zone";
};

◆options ブロック

/etc/named.conf
options {
    listen-on port 53 { any; };
    directory "/var/named";
    allow-query { any; };
    recursion yes;
    forwarders { 8.8.8.8; 8.8.4.4; }; // Google Public DNS
};
  • listen-on port 53 { any; }; → ポート 53 で任意のインターフェースからのクエリを受付ける
  • directory "/var/named"; → ゾーンファイルの保存ディレクトリ
  • allow-query { any; }; → すべてのクライアントからのクエリを許可
  • recursion yes; → 再帰的クエリを許可
  • forwarders → 外部DNSサーバへの転送先

■補足

【recursionとforwarders】
recursion yes; が設定されていると、BINDは「再帰的な名前解決を代行する」DNSリゾルバになる。
自分が権威を持たないドメイン(例:www.google.com)の問い合わせを受けたとき:
forwarders が設定されていれば、まずフォワーダーDNSに問い合わせる
forwarders のDNSが応答すれば、それをそのままクライアントに返す
forwarders のDNSが応答しなければ、BINDはルートDNSからたどって自力で解決を試みる(ただし forward only; がない場合)

◆zone 設定

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

"." はルートゾーンを意味します。
type hint は、再帰的名前解決の出発点としてルートDNSの情報を使うという指定。
named.ca(または named.root)には、ルートDNSサーバの一覧(A〜Mなど)が記載されている。
「ルートDNS(ルートネームサーバ、root DNS server)」とは、インターネット全体の名前解決の最上位にあるDNSサーバ群のこと。世界でたった13か所だけある。

zone "example123.com" IN {
    type master;
    file "example123.com.zone";
};

このBINDサーバが example123.com の権威DNSサーバ(マスター)であることを意味する。
type master → ゾーンファイルをローカルで保持・管理する「マスターDNS」。
file "example123.com.zone" → /var/named/example123.com.zone にゾーンファイルがある前提。
★目的:example123.com および、そのゾーンに属するホスト名(FQDN)」の名前解決を提供する。

zone "179.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.179.zone";
};

このサーバが 192.168.179.0/24 の逆引きゾーンの管理者であることを意味する。
type master → 逆引き情報もローカルで持っている。
file "192.168.179.zone" → /var/named/192.168.179.zone に PTR レコード(後で説明)が記載されている。
★目的:クライアントや他のDNSサーバが 192.168.179.31 のようなIPを逆引きしたときに、
→ ns1.example123.com. のようなFQDNを返す。

■補足

【逆引きゾーン名】
逆引きゾーン名では「IPアドレスのネットワーク部分だけを使い、ホスト部分(最後のオクテット)を取り除く」。最後に in-addr.arpa を付加する。
179.168.192.in-addr.arpa は、192.168.179.0/24 の逆引きゾーンを意味し、ホスト部(最後のオクテット)は除かれている。


ゾーンファイル設定例

◆ゾーンファイル内の記号の意味

  • @ → /etc/named.confで指定した「ゾーン名(origin)」を示す。
    • ゾーン名は正引きなら"example123.com"。逆引きなら"179.168.192.in-addr.arpa."。
  • ; → これ以降をコメントアウト
  • . → FQDNの後ろに付ける

◆正引き・逆引き 共通設定

     1  $TTL 86400
     2  @   IN  SOA     ns1.example123.com. admin.example.com. (
     3                  2023101301 ; Serial
     4                  3600       ; Refresh
     5                  1800       ; Retry
     6                  604800     ; Expire
     7                  86400      ; Minimum
     8                  )

■各行の意味

1行目
$TTL 86400

TTL(Time To Live)=キャッシュの有効期限(秒)

2行目
@   IN  SOA     ns1.example123.com. admin.example.com. (

「Start of Authority(SOA)=権威開始レコード」とは、そのDNSゾーンの基本情報を定義する最初のレコードである。
ns1.example123.com. は、このゾーンのプライマリネームサーバーを示す。この例の場合、FQDNはこのDNS設定を行っているサーバ自身のIPアドレスを設定している。
admin.example.com.は、管理者メールを示す。(. → @)と読み替える。

  • プライマリDNSサーバ【プライマリネームサーバ】とは、あるドメイン名の情報を管理する権限を持つDNSサーバのうち、主系統 (メイン)のサーバのこと。
3~7行目
                  2023101301 ; Serial
                  3600       ; Refresh
                  1800       ; Retry
                  604800     ; Expire
                  86400      ; Minimum
項目名 意味と用途
Serial(シリアル番号) 2023101301 ゾーンデータのバージョン番号。セカンダリDNSが変更を検知するために使用。
更新のたびにこの値を増やす必要がある。通常は YYYYMMDDnn の形式で管理される。
Refresh(リフレッシュ間隔) 3600 秒(1時間) セカンダリDNSがマスターDNSに「更新ある?」と問い合わせる間隔。
Retry(再試行間隔) 1800 秒(30分) Refresh に失敗したときに、再試行するまでの時間。
Expire(期限切れ) 604800 秒(7日) マスターにずっと接続できなかった場合、セカンダリDNSがゾーン情報を破棄するまでの最大期間
Minimum(ネガティブキャッシュTTL) 86400 秒(1日) 存在しないドメインのNXDOMAIN結果をキャッシュする時間(※古い仕様では全体のTTLとされていたが、今は主にネガティブTTLとして扱われる)。
9行目
@  IN  NS     ns1.example123.com.

NSレコード(Name Server Record)は、そのゾーンの「権威DNSサーバの名前」を他のDNSに知らせるためのもの。
SOA レコードで指定したプライマリネームサーバ(例:ns1.example123.com.)は、NSレコードとしても必ずゾーン内に定義するのが原則。
一つのゾーンに複数のNSレコードを定義して冗長化するのが一般的(ns1, ns2 など)。
この例の場合、このゾーン(@)の名前解決を担当するDNSサーバは ns1.example123.com.であることを示す。
この ns1.example123.com. は、通常このゾーンファイル内か別のゾーンファイル内で A レコード(IPv4)や AAAA レコード(IPv6)としてIPアドレスに解決できるようにしておく必要がある。(逆引きも同様)

◆正引きゾーンファイル例

[root@dns ~]# cat -n /var/named/example123.com.zone
     1  $TTL 86400
     2  @   IN  SOA     ns1.example123.com. admin.example.com. (
     3                  2023101301 ; Serial
     4                  3600       ; Refresh
     5                  1800       ; Retry
     6                  604800     ; Expire
     7                  86400      ; Minimum
     8                  )
     9  @  IN  NS     ns1.example123.com.
    10  @  IN  MX  10 mail.example123.com.
    11 
    12  @   IN  A   192.168.179.27
    13  ns1 IN  A   192.168.179.31
    14  mail IN  A   192.168.179.27

■各行の意味

10行目
@  IN  MX  10 mail.example123.com.

MXレコード(Mail Exchange Record) は、DNSの中で メール配送の宛先を指定するためのレコード。「このゾーン宛のメールは mail.example123.com. に送ってくれ」というメール配送の経路情報を示す。

12行目
@   IN  A   192.168.179.27

MXレコードがあっても、@(ゾーン名)にAレコードがなければ、逆引きや接続元ホスト名解決には使えない。
だから、@ IN A xxx.xxx.xxx.xxx は通常必要。Aレコードについては一つ下を参照。

13~14行目
ns1 IN  A   192.168.179.31
mail IN  A   192.168.179.27

Aレコード(Address Record) は、
ホスト名(FQDN)をIPv4アドレスに対応付けるためのDNSレコード。

◆逆引きゾーンファイル例

[root@dns ~]# cat -n /var/named/192.168.179.zone
     1  $TTL 86400
     2  @   IN  SOA     ns1.example123.com. admin.example.com. (
     3                  2023101301 ; Serial
     4                  3600       ; Refresh
     5                  1800       ; Retry
     6                  604800     ; Expire
     7                  86400      ; Minimum
     8                  )
     9  @  IN  NS      ns1.example123.com.
    10  31  IN  PTR     ns1.example123.com.
    11  27  IN  PTR     mail.example123.com.

■各行の意味

10~11行目
31  IN  PTR     ns1.example123.com.
27  IN  PTR     mail.example123.com.

PTRレコード(Pointer Record) は、DNSにおける「逆引き(IPアドレス → ホスト名)」を実現するレコード。

クライアントからクエリ

◆正引きの問い合わせ

$ nslookup mail.example123.com
$ dig mail.example123.com

◆逆引きの問い合わせ

$ nslookup 192.168.179.27
$ dig -x 192.168.179.27
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?