1
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?

DNSマスターサーバ構築

Posted at

使用環境

サーバー:Red Hat Enterprise Linux 9 (RHEL9)
仮想化:VMware Workstation 17 Pro

設定値

アドレス:192.168.0.100/24
ホスト名:dns
ドメイン名:example.com

正引きゾーンファイルの設定

【正引きゾーンとは?】
ドメイン名 → IPアドレス を解決するための領域

ゾーンファイルの書き方

/var/named/example.com.zone
example.com.		    3600	IN	SOA  dns.example.com. dnsadmin.example.com.(
	2025053101 ; シリアル番号(変更ごとに+1)
	3600       ; リフレッシュ(秒)
	1800       ; リトライ(秒)
	604800     ; 有効期間(秒)
	86400 )    ; キャッシュTTL(秒)

example.com.     	    3600	IN	NS   dns.example.com.
example.com.     	    3600	IN	NS   dns.slave.example.com.

dns.example.com. 	    3600	IN	A    192.168.0.100
dns.slave.example.com. 	3600	IN	A    192.168.0.101

localhost.example.com. 	3600	IN	A    127.0.0.1
詳細な解説 1 SOAレコード(1~6行目)
行数 項目 説明
example.com. ゾーン名。FQDN
3600 このレコードのキャッシュ有効期限(以下略)
IN インターネットクラス(以下略)
SOA Start Of Authority:このゾーンの権威開始を示すレコード
dns.example.com. プライマリDNSサーバ名
dnsadmin.example.com. 管理者メールアドレス(@を.に変換)
2025053101 シリアル番号。更新のたびに+1(形式例:YYYYMMDDnn)
3600 スレーブがマスターに問い合わせる周期(秒)
1800 マスターに問い合わせ失敗時の再試行期間(秒)
604800 スレーブがマスターと連絡取れないまま保持できる最大期間(秒)
86400 名前が存在しないときのキャッシュ時間(ネガティブキャッシュTTL)

2 NSレコード(8~9行目)

行数 項目 説明
8,9 example.com. このゾーンの名前空間に対するネームサーバの指定
8,9 NS ネームサーバレコード
8 dns.example.com. プライマリDNSサーバ
9 dns.slave.example.com. セカンダリDNSサーバ(スレーブ)

NSレコードで指定したサーバには必ず以下のAレコードが必要
さもないと名前解決が不可能です!!

3 Aレコード(11~14行目)

行数 項目 説明
11 dns.example.com. DNSサーバ自身のFQDN
11~14 A アドレスコード(IPv4アドレスを定義)
11 192.168.0.100 実際のサーバもアドレス
ゾーンファイルの書き方(省略ver)
/var/named/example.com.zone
$TTL 3600
@     IN  SOA  dns.example.com. dnsadmin.example.com. (
          2025053101 ; シリアル番号
          3600       ; リフレッシュ
          1800       ; リトライ
          604800     ; 有効期限
          86400 )    ; ネガティブキャッシュTTL

      IN  NS   dns.example.com.
      IN  NS   dns.slave.example.com.

dns           IN  A    61.120.151.82
dns.slave     IN  A    202.11.16.212
localhost     IN  A    127.0.0.1

省略のポイント

書き方 省略した部分
TTL 3600 TTLを1時間に統一。各レコードに毎回書かなくてOKに
@ example.com. の省略記号(ゾーン名)
NSレコードの先頭省略 @ が暗黙的に適用される(example.com.)
dns ゾーン名が補完されて dns.example.com. に自動解釈される

省略した際に使う@は、後述するnamed.confでzone ディレクティブで指定されたものに自動的に変換されます。

逆引きゾーンファイルの設定

【逆引きゾーンとは?】
IPアドレス → ドメイン を解決するための領域

ゾーンファイルの書き方

/var/named/example.com.rev.zone
$TTL 3600
0.168.192.in-addr.arpa.      IN  SOA  dns.example.com. dnsadmin.example.com. (
    2025053101 ; シリアル番号(変更ごとに+1)
    3600       ; リフレッシュ(秒)
    1800       ; リトライ(秒)
    604800     ; 有効期間(秒)
    86400 )    ; キャッシュTTL(秒)

0.168.192.in-addr.arpa.      IN  NS   dns.example.com.
0.168.192.in-addr.arpa.      IN  NS   dns.slave.example.com.

100.0.168.192.in-addr.arpa.  IN  PTR  dns.example.com.
101.0.168.192.in-addr.arpa.  IN  PTR  dns.slave.example.com.

大体は正引きファイルと一緒です。省略の仕方も同じです。
一点だけ解説します。

項目 説明
PTR IPアドレスと紐づくホスト名の指定

逆引きローカルゾーンファイル

【逆引きローカルゾーンファイルとは?】
ループバックIPアドレスからローカルホスト名を解決する際に参照されるファイルです。

ここで「正引きは?」と思われた方もいると思いますが、正引きは正引きゾーンファイルの最終行に書き込んでありました。
「なぜ逆引きは一緒に書かないの?」そう思われた方もいると思いますが、これはデフォルトのファイルがあるので、それを使用します。

ゾーンファイルの書き方

/var/named/named.localhost
$TTL 3600
@       IN  SOA  @ rname.invalid. (
            0          ; シリアル
            3600       ; リフレッシュ
            1800       ; リトライ
            604800     ; 有効期限
            86400 )    ; ネガティブTTL

NS    @
A     127.0.0.1
AAAA  ::1

これは大体デフォルトで大丈夫です。

ヒントファイルの設定

【ヒントファイルとは?】
ルートDNSを定義するファイルです

ヒントファイルの書き方

/var/named/named.ca
.                  3600000    IN    NS    dns.wxample.com
dns.example.com    3600000    IN    A     192.168.0.100
項目 説明
. ルートゾーン(すべてのDNS起点)
NS ルートネームサーバ
A 各サーバのIPv4アドレス
3600000 TTL

ゾーンファイルの文法チェック

今まで記述した各種ゾーンファイルの文法が正しいか、コマンドを用いてチェックします。

正引きゾーンファイル

bash
$ named checkzone dns.example.com /var/named/example.com.zone
zone dns.example.com/IN: loaded serial 20250531
OK     ←これが出ればとりあえずOK

逆引きゾーンファイル

bash
$ named checkzone 0.168.192.in-addr.arpa. /var/named/example.com.rev.zone
zone 0.168.192.in-addr.arpa./IN: loaded serial 20250531
OK     ←これが出ればとりあえずOK

ここでOKが出てもこの先でエラーが出ることはあります。
OKが出たからと言って、完全には信用せずに、エラーが出た際はログなどを読んだりしてください。
ゾーンファイルを何度も見返すのも大事です。

ブートファイルの設定

BINDが起動するとき、最初に読み込む 設定の起点ファイル です。
ここで「どのゾーンを管理するか」「どのACLを使うか」「どの設定ファイルを読み込むか」などを定義します。

/etc/named.conf
      ~(略)~
11行   listen-on port 53 { any; };
12行   listen-onv6 port 53 { any; };
      ~(略)~
19行   allow-query { any; };
      ~(略)~
33行   dnssec-validation no;
      ~(略)~
追記   include "/etc/named.int.zones";
行数 説明
11-12 どのインターフェースで受け付けるか制限
19 受け付ける相手を制限します(例 192.168.0.0/24,localhost)
33 dnssecを使用するかを設定します(今回は勉強用なので使用しません)
追記 これから書くゾーンの設定情報をかいたファイルを読み込めるようにします

ゾーンファイルを読み込む他雨の設定ファイルを作ります

ファイル名は、ブートファイルの追記で指定したファイル名になります。

/etc/named.int.conf
zone "example.com" {
    type master;
    file "example.com.zone";
    allow-transfer { any; }
};
zone "0.168.192.in-addr.arpa." {
    type master;
    file "example.com.rev.zone";
    allow-transfer { any; }
};
項目 説明
type マスターサーバを宣言します
file ファイル名
allow-transfer ゾーンの転送設定

【ここでも文法チェック】

bash
named-checkconf /etc/named.conf

※エラーがない場合は出力がなく、プロンプトが返ってくるのみです。

リゾルバの設定

リゾルバとは、DNSサーバに問い合わせをする機能になります。
もし自サーバのゾーンファイルに、問い合わせされたものが書いていなかった際に上位のDNSサーバに問い合わせる際に使用します。

bash
#ドメインの設定
$ nmcli connection modify ens160 ipv4.dns-search example.com 
#DNSサーバ設定
$ nmcli connection modify ens160 ipv4.dns "192.168.0.100 192.168.0.200"

検索スイッチファイルの設定

名前解決を行う際の優先順位を決めるための設定です。

/etc/nsswitch.conf
(略)
hosts: dns files myhostname
(略)

最後にサービスの起動

bash
$ systemctl start named

確認

確認のためほかのホストからnslookdigを使用して名前解決を行ってみてください。

1
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
1
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?