
Ubuntu日本語フォーラム

ログインしていません。
いつもお世話になっております。
この度、古いサーバー(FC5)からDNSサーバーをUbuntu9.10に引越ししたいと思いまして、いろいろ設定をして概ね成功しているのですが、ディレクトリの設定で何度やってもわからない点がありましたので質問します。
named.confのoptionsステートメントでdirectoryの設定をしますが、そこでzoneファイルの場所を指定してbind9を起動させるときちんと動くのですが、各zoneファイルをカテゴリーごと(内部ネットワーク向けとか外部向けとか)にわけてディレクトリに仕分けして設定したところ、syslogでPermission Denidということになってzoneファイルを読み込んでくれませんでした。syslogでは以下のようなエラーです。
Dec 6 10:10:13 localhost named[14598]: zone example.com/IN/external: loading from master file /etc/bind/zone/db.example.com failed: permission denied
現在テスト段階でしてchrootとかはまだ何もやっていないので、directory "/etc/bind"に設定し、zoneファイルは/etc/bind/db.localのような形で格納しています。named.conf内のzoneステートメントでは、ディレクトリを設定しているので、
zone "localhost" {
type master;
file "db.local"; ←こんな風に、
};
設定しています。このような形では正常に動くのですが、zoneというディレクトリを作成して、
zone "localhost" {
type master;
file "zone/db.local"; ←zoneディレクトリ内に格納する
};
と、上記のようにパーミッションで拒否されます。
ディレクトリのパーミッションは644で、オーナーとグループはroot:bindという風にしています。最終的にはパーミッション777にしてみたのですが、それでも拒否されてしまったのでいよいよわからなくなってしまった次第です。
間違ったパスを設定するとfile not foundになるので、パスの設定は合っていて一応zoneファイルを読み込もうとしているみたいなのですが、たぶん間違いなくディレクトリの設定がおかしい…のだと思いますが如何なものでしょうか?
ものすごいたくさんのzoneファイルがあるわけじゃないので全く問題はないのですが、bindの勉強上気になりまして質問してみました。よろしくお願いします。
オフライン
以前に検索した経験からみて
*パスは、フルパスで記入した記憶がある。
(違ったら、apparmorの制限があるのかも? 設定は->/etc/apparmor.d/usr.sbin.named)
*chrootする場合は、apparmorは、切らないと動かないらしい。
オフライン
si さん による投稿:
(違ったら、apparmorの制限があるのかも? 設定は->/etc/apparmor.d/usr.sbin.named)
si さんを受けて、ウチの (8.10 Server) を見てみました。
ウチは、何も考えずにそのまま zone file を置いているので気にもしていなかったのですが、/etc/apparmor.d/usr.sbin.named に以下の記述があります。
/etc/bind/** r,
ここで、例えば
/etc/bind/** r, /etc/bind/zone/** r,
とかしてみると如何でしょうか?
今、見ているのが稼動環境なので試していませんが...
オフライン
返信遅れてすみません。。。
/etc/bind/zone** r,はダメでした。siさんのいうとおり制限があるのかもしれません。
当初、その新たにmkdirした"zone"というディレクトリのオーナーとグループがroot:rootになっていたことに気がついて、「これだ!」と思ったのですが、それもダメでした。そもそもパーミッション777でお断りされる…というのがちょっとわかりませんでした。
この設定の関連で、ちょっと気がついたことがあるんですが、permission deniedでゾーンファイルが読み込めないというが、ファイルの種類が関連しているのかな…と思った瞬間がありました。というのは、端末で操作している時は全く気がつかなかったのですがGUIのウィンドウから一覧表示で見てみるとnamed.confのファイルの種類がCソースコードになっていてdb.localなどのゾーンファイルは、平文テキストドキュメントになっていました。設定ファイルの類(named.conf.localとか…)はすべてCソースコードになっていました。新規で作成してnamed.confにインクルードさせている設定ファイルが平文テキストドキュメントになっていたのでCソースコードになるように書き換えました。しかし、結果は同様にディレクトリ("zone")以下のゾーンファイルを読み込んでくれなかったのですが、ここら辺りは関連しているのでしょうか?named.confの文法をチェックしてみましたが特にエラーは出ませんでした。
話がやや逸れてしまいました。すみません。
もしや、ここら辺りに詳しい方がいらしたら、またはヒントなどもらえたらありがたいです。
オフライン
ubuntu 9.10 server edition (x64) で試してみました
結果、何の不具合も生じません
apparmor に関しても何も弄ることをせず、/etc/bind/named.options、/etc/bind/named.local、/etc/bind/named.default-zones の三つのファイルを編集しただけです
具体的には以下の環境を作って確認しました
$ sudo mkdir /etc/bind/zone
$ sudo cp /etc/bind/db.local /etc/bind/zone
$ sudo vi /etc/bind/named.options
:
$ sudo vi /etc/bind/named.local
:
$ sudo vi /etc/bind/named.default-zones
:
$ cat named.conf.options
options {
// directory "/var/cache/bind";
directory "/etc/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
$ cat named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "localhost" {
type master;
file "zone/db.local";
};
$ cat /etc/bind/named.conf.default-zones
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
//zone "localhost" {
// type master;
// file "/etc/bind/db.local";
//};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
$オフライン
appArmorにひっかかっている場合、messagesかsyslogになにか出ませんでしたっけ?
もし出ているなら、そこに、ひっかかったprofileの名前も出ていたかと思いますので、そこで確認してはいかがでしょうか。
もし、全く出ていないようなら、appArmorとは違う理由かもしれませんし。
# いっそ、bind9が動作しているuserに化けて(sudo su hogehoge)、cdとcatで試してみるとか(意味があるかは不明)
オフライン
ryさん、weykさんありがとうございます。
皆様のお話を聞いていて、やっぱり僕のbind9自体がなんかおかしな感じがしてきたので、removeして再インストールしたところ、ずべて正常に動きました。ディレクトリの関係は通常の読み込みできちんとzoneファイルを読むようになりました。
ログ関係にはエラーの類が全く出ていなくて、見掛け上は全く正常に動いているのです。ただ一つのディレクトリ(/etc/bind)以下にすべてのzoneファイルが正引き逆引き共に大量に並べる…というのが整理整頓できなくて困ってしまいまいた。
残念ながら原因を突き止めることができませんでした。
面目ない結果でしたが、様々な情報ありがとうございます。
オフライン