gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

CentOS7にBIND 9、のナレッジ

お引越しでインストールした&案外とあちこち躓いたので、めも。
…いやまぁそもそも「そろそろBINDやめようよ」とか思わないわけでもないのですが、一応。


インストールは、大体こんな感じ、がベース。

yum -y install bind bind-chroot
firewall-cmd --add-service=dns
firewall-cmd --add-service=dns --permanent
firewall-cmd --list-services
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
# すげぇ念の為
systemctl stop named
systemctl disable named


で、設定を終えた後で

systemctl start named-chroot
systemctl enable named-chroot

でOK。


……なんだけど、設定ファイルの記述ミスその他で大量に躓いたので。
おいちゃんの脳内フラッシュメモリから(ある意味奇跡的に)こぼれていない情報を、整理もせずに羅列。


情報としては

journalctl -xe

で出てくる……って言われるんだけど、色々と「もうちょっと情報よこせ」って感じの事が多々。
日付抜くの面倒なんで日付入りで晒すと、/var/log/messagesに

Aug 11 17:51:49 localhost named[4886]: ----------------------------------------------------
Aug 11 17:51:49 localhost named[4886]: BIND 9 is maintained by Internet Systems Consortium,
Aug 11 17:51:49 localhost named[4886]: Inc. (ISC), a non-profit 501(c)(3) public-benefit
Aug 11 17:51:49 localhost named[4886]: corporation. Support and training for BIND 9 are
Aug 11 17:51:49 localhost named[4886]: available at https://www.isc.org/support
Aug 11 17:51:49 localhost named[4886]: ----------------------------------------------------
Aug 11 17:51:49 localhost named[4886]: adjusted limit on open files from 4096 to 1048576
Aug 11 17:51:49 localhost named[4886]: found 2 CPUs, using 2 worker threads
Aug 11 17:51:49 localhost named[4886]: using 2 UDP listeners per interface
Aug 11 17:51:49 localhost named[4886]: using up to 4096 sockets
Aug 11 17:51:49 localhost systemd: named-chroot.service: control process exited, code=exited status=1
Aug 11 17:51:49 localhost systemd: Failed to start Berkeley Internet Name Domain (DNS).
Aug 11 17:51:49 localhost systemd: Unit named-chroot.service entered failed state.
Aug 11 17:51:49 localhost systemd: named-chroot.service failed.
Aug 11 17:51:49 localhost systemd: Stopping Set-up/destroy chroot environment for named (DNS)...
Aug 11 17:51:49 localhost systemd: Stopped Set-up/destroy chroot environment for named (DNS).

こんな感じで出てくるのを、ヘッジした時の諸々。


とりあえず前提として
・外向けの権威サーバ立ててる
・プライマリもセカンダリも自前
chrootは「とりあえず念の為やっとく」


大本の設定ファイルは、 /etc/named.conf 。
実際には /var/named/chroot/etc/named.conf を見ているはずなんだけど、これは systemctl start named-chroot とか systemctl restart named-chroot とかすると、/etc/named.conf から持ってきてくれるぽいので。
修正などは、 /etc/named.conf にそのままぶちかます
ちなみに、restartとかしないと反映されないので、修正されたらretartしよう。


大体同じニュアンスで。

directory "/var/named";

を前提に、zoneファイルは /var/named に置いておく。
これも実際にはchrootで以下略。
ちなみに、restart以下略。


ファイルをmvだったかcpだったかしようとしたら「same file云々」とかいうエラーメッセージが出たので、多分「内部的には完全に同一」だと思われ。
chrootのギミックなんだろうけど、一端ここは深堀せず。
そのうち余裕があったら。


んで、書式で結構色々と躓いたので、引っかかったところを列挙。
・named.confとzoneファイルで書式が違う。具体的にはコメントが。named.confは//と /**/が使えて、zoneは;がコメント。zoneで/**/は多分使えない
・named.confは後ろに ; がないとエラーになる
・zoneファイルのパーミッションに注意。上述の起動の仕方だと named ユーザ起動になるんだけど。zoneファイルのパーミッション的に「読めない」と、エラーにはならないのに情報が見れないwww
・named.conf、allow-queryを「localhost;(たしか、デフォがこれ)」にすると「外部から見れない」ので注意。anyが正解
・同じくnamed.conf、「recursion no;」は忘れずに!! たしかデフォがyesなのだよねぇ……。「外向き」にするんなら必須なんじゃなかろうか?
・named.conf。「allow-transfer { none; };」「allow-update { none; };」「allow-query-cache { none; };」も必須。デフォだった気もするんだが、明示して悪いもんでもなかろうもん
・「version "unknown";」気分w
・プライマリには「notify yes;」「also-notify { 11.22.33.44; };」。セカンダリ散らかさないんなら、optionsん中でよいと思う
・セカンダリ、zoneの中に「type slave;」「masters { 1.2.3.4; };」で、親からとってくる感じ。「同名ファイルがあるとNG」「ディレクトパーミッションに気をつけろ」ってあたりがポイント? ここ、すんなり通ったからナレッジが今一つ……
・zoneファイルのほう。おいちゃんCNAME好きなんだけど「CNAMEで宣言するドメインはMXとかに使えない」ので注意。……はまりました orz
・あ。TXT書かなきゃ(まだ書いてない……メールサービス組む時でよいかし……)


ちな、試験は

dig ドメイン名 @localhost
dig ドメイン名 @[鯖のIPアドレス]
dig よそ様のドメイン名 @[鯖のIPアドレス] # エラーになる事

で実験。


さて引き続きいくつか実験君がまっているので……この三連休はその辺でつぶれそうな予感……