BIND起動エラーの原因と対策|namedが起動しない時の確認ポイントを解説

目次
BIND起動エラーの原因と対策
BINDによるDNSサーバ構築を行っていると、多くの管理者が一度は経験するのが「namedが起動しない」というトラブルです。
DNSサーバは設定ファイルやゾーンファイルの記述ミスに厳しく、わずかな構文エラーでも起動に失敗します。
また、SELinuxやファイル権限、ゾーン転送設定なども原因になることがあります。
本記事では、BINDが起動しない場合に確認するべきポイントと、実際によく発生するエラー事例について解説します。
まず確認すること
最初にサービス状態を確認します。
# systemctl status named
正常な場合は以下のように表示されます。
active (running)起動失敗している場合は詳細ログを確認します。
ログ確認の基本
# journalctl -xeu namedまずはこのコマンドを実行するのが基本です。
多くの場合、エラーメッセージに原因が表示されています。
最も多い原因は構文エラー
BIND運用で最も多いのが設定ファイルの記述ミスです。
例えば次のような例です。
allow-query { any }
セミコロンがありません。
正しくは次のようになります。
allow-query { any; };named-checkconfを使う
設定ファイル確認には次を利用します。
# named-checkconf
正常なら何も表示されませんエラーがある場合は行番号付きで表示されます。
括弧の対応ミス
非常によくあるミスです。
options {
recursion no;
閉じ括弧がありません。
ログには次のようなエラーが表示されます。
unexpected end of inputゾーンファイルの記述ミス
named.confは正常でも、ゾーンファイルが原因で起動失敗することがあります。
例です。
www IN A
IPアドレスがありません。ゾーンファイル確認方法
# named-checkzone example.com /var/named/example.com.zoneゾーンごとに確認できます。
末尾ドット忘れ
BIND初心者が最も遭遇するミスです。
誤りです。
ns1.example.com
正しくは以下です。
ns1.example.com.意図しないFQDNが生成されることがあります。
ゾーンファイルが存在しない
named.confで指定したファイルが存在しないケースです。
file "example.com.zone";
実際のファイルが無い場合です。
/var/named/example.com.zone権限エラー
ファイルは存在していても読み込み権限が無い場合があります。
確認します。
# ls -l /var/namedBINDが参照可能か確認します。
所有者確認
一般的な例です。
-rw-r----- root namednamedユーザーが読める必要があります。
SELinuxによる制限
Rocky Linuxでは頻繁に発生します。
確認します。
# getenforceEnforcingの場合はSELinuxが有効です。
SELinuxログ確認
# ausearch -m avcアクセス拒否が記録されている場合があります。
restoreconで修復
コンテキスト異常の場合です。
# restorecon -Rv /var/named多くの問題が解決します。
ポート競合
53番ポートが既に利用されている場合です。
# ss -ltnup | grep :53別サービスが使用していないか確認します。
IPv6設定エラー
IPv6関連の警告が発生する場合があります。
listen-on-v6 { any; };環境によっては無効化することもあります。
ゾーン重複定義
同じゾーンを複数回定義しているケースです。
zone "example.com" {
};
zone "example.com" {
};
BINDは起動できません。
includeファイルの問題
include先の設定ファイルにエラーがある場合です。
include "/etc/named.rfc1912.zones";読み込み先も確認する必要があります。
chroot環境特有の問題
bind-chroot利用時によくあります。
設定ファイルやゾーンファイルの配置場所を誤るケースです。
/var/named/chroot
配下の構成を確認します。ゾーン転送設定ミス
セカンダリーDNS構築時に発生します。
ログ例です。
transfer deniedallow-transfer設定を確認します。
DNSSEC設定ミス
DNSSEC導入環境では署名ファイルの不整合が原因になることがあります。
※DNSSECの詳細は後続記事で解説予定です。
設定変更後の確認手順
実務では次の順番で確認します。
named-checkconf
↓
named-checkzone
↓
systemctl restart named
↓
systemctl status named
この流れを習慣化すると障害を減らせます。
よくあるエラーメッセージ
| エラー | 原因 |
|---|---|
| missing ';' | セミコロン忘れ |
| unexpected token | 構文エラー |
| file not found | ゾーンファイル不存在 |
| permission denied | 権限不足 |
| zone not loaded | ゾーンエラー |
実務でよくある原因ランキング
- ゾーンファイル記述ミス
- named.conf構文エラー
- セミコロン忘れ
- シリアル番号ミス
- SELinux制限
- 権限エラー
- ゾーンファイル配置ミス
実務で覚えておきたいポイント
- まずjournalctlを見る
- named-checkconfを実行する
- named-checkzoneを実行する
- SELinuxを確認する
- 権限と所有者を確認する
- セミコロン忘れを疑う
まとめ
BIND起動エラーの多くは設定ファイルやゾーンファイルの記述ミスによって発生します。
特にnamed-checkconfとnamed-checkzoneは必須の確認コマンドであり、設定変更後は必ず実行するべきです。
また、SELinuxやファイル権限、chroot環境なども原因になるため、ログを確認しながら順序立てて調査することが重要です。
実務では「まずログを見る」という習慣を身につけることで、多くのBIND障害を短時間で解決できるようになります。





