BINDによるDNSサーバ構築入門|DNSサーバの仕組みと基本設定を理解する

目次
BINDによるDNSサーバ構築入門
LinuxでDNSサーバを構築する場合、最も代表的なソフトウェアがBIND(Berkeley Internet Name Domain)です。
BINDは長い歴史を持つDNSサーバソフトウェアであり、現在でも多くの企業や組織で利用されています。
クラウドDNSサービスが普及した現在でも、社内DNSや検証環境、教育環境ではBINDを利用する機会が少なくありません。
本記事では、BINDの基本的な仕組みからインストール、設定ファイルの構成、DNSサーバ構築の流れまでを解説します。
BINDとは
BINDはDNSサーバソフトウェアの一つです。
正式名称は以下の通りです。
Berkeley Internet Name Domain
カリフォルニア大学バークレー校で開発され、現在はISC(Internet Systems Consortium)によって開発が継続されています。
LinuxでDNSサーバを構築する際の事実上の標準ソフトウェアと言えます。
BINDでできること
BINDは様々な役割のDNSサーバとして動作できます。
- 権威DNSサーバ
- キャッシュDNSサーバ
- フォワーダDNSサーバ
- セカンダリーDNSサーバ
1つのソフトウェアで複数の役割を実現できます。
DNSサーバ構築の全体像
権威DNSサーバを構築する場合、基本的な流れは次のようになります。
BINDインストール
↓
named.conf設定
↓
ゾーンファイル作成
↓
設定確認
↓
サービス起動
↓
動作確認DNSサーバ構築はこの流れを繰り返しながら行います。
BINDの主要コンポーネント
BINDにはいくつかの重要なプログラムがあります。
| コマンド | 役割 |
|---|---|
| named | DNSサーバ本体 |
| rndc | 管理コマンド |
| dig | 問い合わせ確認 |
| named-checkconf | 設定確認 |
| named-checkzone | ゾーン確認 |
Rocky Linuxへのインストール
Rocky Linuxではdnfコマンドを利用します。
# dnf install bind bind-utilsbind-utilsにはdigなどの確認コマンドが含まれています。
インストール確認
インストール後はバージョンを確認できます。
# named -v
出力例です。
BIND 9.18.xサービス管理
BINDのサービス名はnamedです。
起動します。
# systemctl start named
自動起動設定です。
# systemctl enable named
状態確認です。
# systemctl status namednamed.confとは
BINDのメイン設定ファイルです。
/etc/named.confApacheでいうhttpd.confに相当します。
DNSサーバ全体の設定を管理します。
named.confの構成
基本的な構成です。
options {
};
zone "example.com" {
};
logging {
};主にoptionsとzoneを利用します。
optionsセクション
DNSサーバ全体の設定を記述します。
options {
directory "/var/named";
};ゾーンファイル保存場所などを指定します。
listen-on設定
待ち受けIPアドレスを指定します。
listen-on port 53 {
any;
};すべてのIPアドレスで待ち受けます。
allow-query設定
問い合わせを許可する範囲です。
allow-query {
any;
};学習環境ではよく利用されます。
実運用では制限する場合があります。
ゾーン設定とは
ドメインごとの管理情報を定義します。
例です。
zone "example.com" IN {
type master;
file "example.com.zone";
};example.comの権威DNSサーバになります。
type masterとは
ゾーン情報の原本を持つDNSサーバを意味します。
type master;現在はPrimaryという表現も利用されます。
ゾーンファイルとは
DNSレコードを保存するファイルです。
例えば次のファイルです。
/var/named/example.com.zoneWebサーバでいうコンテンツに相当します。
最小構成のゾーンファイル
$TTL 3600
@ IN SOA ns1.example.com. root.example.com. (
2026060801
28800
14400
3600000
86400
)
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.10
www IN A 192.168.1.20これで基本的な名前解決が可能になります。
設定確認
設定ミスを防ぐため確認します。
named.confの確認です。
# named-checkconf正常なら何も表示されません。
ゾーンファイル確認
# named-checkzone example.com /var/named/example.com.zone
[OK]ファイアウォール設定
DNSは53番ポートを利用します。
# firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload忘れやすいポイントです。
SELinuxについて
Rocky LinuxではSELinuxも考慮する必要があります。
通常のディレクトリを利用する場合はコンテキスト設定が必要になる場合があります。
学習段階では標準ディレクトリを利用するのが安全です。
動作確認
digコマンドで確認します。
# dig @127.0.0.1 www.example.com
応答例です。
www.example.com. 3600 IN A 192.168.1.20
IPアドレスが返れば成功ですログ確認
トラブル時はログを確認します。
# journalctl -u named起動エラーや設定ミスを確認できます。
よくある構築ミス
SOAレコード不足
ゾーンファイルにSOAレコードが無い場合は起動できません。
末尾ドット忘れ
ns1.example.com.最後のドット忘れは非常によくあるミスです。
シリアル番号未更新
セカンダリーDNSへ反映されなくなります。
ファイアウォール未設定
外部から問い合わせできません。
実務で覚えておきたいポイント
- BINDは代表的なDNSサーバソフトウェア
- named.confが中心設定ファイル
- ゾーンファイルにDNSレコードを記述する
- named-checkconfで設定確認する
- digで動作確認する
- ファイアウォール設定を忘れない
まとめ
BINDは現在でも広く利用されているDNSサーバソフトウェアです。
DNSサーバ構築では、named.confによるゾーン定義とゾーンファイルによるレコード管理が基本となります。
また、named-checkconfやnamed-checkzoneを利用することで設定ミスを事前に発見できます。
DNSは多くのシステムの基盤となる重要なサービスです。
まずはBINDの基本構成を理解し、実際に構築しながら学習を進めることがDNS技術習得への近道と言えるでしょう。





