【BIND】zoneファイルの更新メモ(TTL変更例)

zoneファイルの更新でいくつかハマった。 二度とないようにメモっておく。

やったこと

TTLの更新。例えばドメインやIP変更前にわざと短くして配布しておき、本変更をすぐに世界のDNSキャッシュに反映させるあれ。

zoneファイルの置き場

zoneファイルの置き場について。

場所は設定ファイルに記述されているんだけど、俗にいうchrootして設定ファイルの場所が変わっている場合がある。

chrootしているかどうかを見るには、bindの起動コマンドに-tオプションが付与されているかを見る。

ps aux | grep named

結果

named 643 0.0 0.9 30268 2336 ? S Jan05 0:07 /usr/sbin/named -u named -t /var/named/chroot

named.confの見方

見方といっても、変更に最低限必要なものだけ。

全体設定ファイルnamed.confは、デフォルトでは/etc/named.confに配置されている。 chrootしている場合、頭のパスにchrootしたパスをつけたものになる。

less /var/named/chroot/etc/named.conf

見るところは以下の通り。

directoryオプション

設定ファイル内に相対パスで記述したときに基準となるファイルパス。例によってchrootの影響を受ける。

options {
  ...
  directory "/var/named";
  ...
};

zoneオプション

ゾーン情報の設定。 ドメインとゾーンファイルが指定。ゾーンファイルパスは例によってdirectoryオプションとchrootの影響を受ける。

ちなみに、type slave;が記述されている場合、プライマリDNSから設定がtransferされるようになっているはずなのでゾーンファイル変更不要。

options {
   ...
   zone "hoo.var.com" {
     type master;
     file "hoo.var.com.zone";
   }
   ...
};

zoneファイルの変更

以下を変更。

1) TTLを短くする。以下、例。

$TTL  8H

;$TTL  8H
$TTL  600 ; 10 minutes

2) serialをあげる

一般的には、変更日のYYYYMMDD + 連番2桁 として管理を楽にする。

 2015112801

 2017022601

serialが新しくないと、reloadしても設定を読み込んでくれない。 戻し作業で再変更する場合は、連番を上げたバージョンを用意する。

 2017022602

3) minimumの変更

仮にDNSサーバーが落ちて解決不能となったときに、落ちてるから問い合わせても無駄だよ期間を指定する Negative-TTL の値。 別にTTLの2倍程度だったら問題ないんだけど、それ以上だと復旧しているのにキャッシュに残ったせいで復旧が遅れることがあるらしいので、変更しておく。

あと、いつの時代の基準化わからねど、普通はTTLと同じにするそうだ。(大手サービスでDNSサーバーに余力のあるところは数秒とかに設定しているとこも多いそう。)

8H  ; minimum

600  ; minimum

設定ファイルの上書きとリロード

rootじゃないと操作できないから気を付けてね。

設定ファイルを上書きする

設定ファイルを上書きする。

  • ファイルパスの完全一致
  • 権限の完全一致
  • ファイルのタイムスタンプが前設定ファイルより新しい(重要)

※言うまでもなくだけど、cp -ipでちゃんとバックアップとってね

ゾーンファイルの確認

named-checkzone "hoo.var.com" /var/named/chroot/var/named/hoo.var.com.zone

OKが出力されたらエラーなし。

named-confの確認

chrootしているときは -t オプションを使う。

以下、chrootしながら/var/named/chroot/etc/named.conf をチェックする例。

named-checkconf -t /var/named/chroot /etc/named.conf

何も出力されなかったらエラーなし。 これはnamed.confのチェックしかしないので注意。

-z オプションでゾーンファイルのチェックもできるけど、正常メッセージでもわっと出たときに初見びびるかも。

リロード

rndc reload

確認

自分に向けてdig。SOAレコードと正引きの2つともテストする。

dig @127.0.0.1 hoo.var.com

色々いっぱい出るけど、 ;;AUTHORITY SECTION: にserialとminimumが載ってればOK。

dig @127.0.0.1 www.hoo.var.com

こちらは、 ;; ANSWER SECTION:TTLつきで正引きの結果が表示される。

以上

メモおわり。

chrootと、zoneファイルのタイムスタンプが罠だった。 bind以外のDNSサーバーだとどうなのかな。