自宅環境で導入しているBINDで、zoneファイルの書き換えを行なって念のためサービスの再起動を行ったところ以下の様なエラーメッセージが。
現象
% /etc/init.d/named restart
Stopping named: [ OK ]
Starting named:
Error in named configuration:
zone localhost/IN: loaded serial 2012070601
zone 0.0.127.in-addr.arpa/IN: loaded serial 2012070601
dns_rdata_fromtext: zones/1.168.192.rev:20: near 'centos_proxy.hoge.local.': bad name (check-names)
zone 1.168.192.in-addr.arpa/IN: loading from master file zones/1.168.192.rev failed: bad name (check-names)
zone 1.168.192.in-addr.arpa/IN: not loaded due to errors.
internal/1.168.192.in-addr.arpa/IN: bad name (check-names)
zones/hoge.local.db:19: centos_proxy.hoge.local: bad owner name (check-names)
zone hoge.local/IN: loading from master file zones/hoge.local.db failed: bad owner name (check-names)
zone hoge.local/IN: not loaded due to errors.
internal/hoge.local/IN: bad owner name (check-names)
とりあえず記述しているレコード名が拙そうなのは分かったのですが、イマイチよく分からなかったので調べてみると、どうやらホスト名に”_(アンダースコア)”を使用しているのがマズイらしい。
どういう問題?
BIND9.3.1以降はRFC952に書かれている通りというか、ホスト名に「_」(アンダーバー)が使えない・・・がデフォルトになっているようです。
http://1x4x9.net/2008/08/bind-2.html
RFCに記載があるみたいですね・・・。とりあえず設定の追加でチェック自体を緩くすることも可能のようですが、特に緩くすることを容認する理由もないので、ホスト名の変更で調整しました。
1. A “name” (Net, Host, Gateway, or Domain name) is a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-), and period (.). Note that periods are only allowed when they serve to delimit components of “domain style names”.
http://tools.ietf.org/html/rfc952
やはりネットワーク周りに触れる場合にはRFCなどを読むようにしないといけないですね・・・
また一つ勉強になりました。
参考Webサイト:
BIND / ~fumi/ChangeLog
Bind で bad owner name (check-names)
サブドメインにアンダーバー(_)等の禁止される文字を使っている場合に、 named: ...: bad owner name (check-names) と/var/log/messagesにログが残され、名前解決ができないようです。 Aレ...