どこぞで BIND アップデートが盛り上がっていたので、自分も便乗。
Rev.2016/11/25:querylog 周辺の追記と、手順一部見直し。
■アップデータの確認
# yum check-update bind\*
→これでバージョン確認。基本的にRHEL 系は、ベースバージョン変わらないはず。
■ダウングレードパッケージの確認
# rpm -qa bind\*
→これらをインストールパッケージ、ちゃんと持っているよね?
切り戻しありきで構えておかないと危険。
■Configのバックアップ
# cp -piav /etc/named.conf /etc/named.conf.YYYYMMDD
→過去に何度かRedHatが「Configを上書きする」というバグやらかしてるので。
■保持しているゾーンの数確認
# rndc status
→number of zones を確認する。アップデート後に増えたらびっくりだ。
※特にメジャーバージョンアップしたときに、automatic empty zone が増えることがある。
この辺は、ちゃんとリリースノートを読みましょう。
■Config の確認
# named-checkconf -z
→-z 引数で、保持しているゾーンのチェックもしてくれる。
ついでに読まれるゾーン数もココで控えておく。
■アップデート前後での dnsperf を使った Response codes 割合確認
# dnsperf -s localhost6 -d /tmp/00_queryperf_data.txt -t 15 -q 1
→これは自分のツールで querylog から問い合わせの履歴をランダムに5000個取り出したものを
dnsperf に食わせている。
Response codes の割合を見ることで、BIND の名前解決の動きに差異がないことを確認。
もし何か機能変わったりしたら、結果ががらりと変わる筈。はず。たぶん。きっと。
■BIND の停止
# service named stop
→ EL7 で chroot してる場合、named-chroot を停止する。
■BIND のバージョンアップ
# yum update bind\*
■Config 差分確認
# diff /etc/named.conf.YYYYMMDD /etc/named.conf
■Config の確認
# named-checkconf -z
→バージョンアップ前の出力と差分がないこと。
■BIND の起動
# service named start
→ EL7 で chroot してる場合、named-chroot を起動する。
■保持しているゾーンの数確認
# rndc status
→バージョンアップ前とnumber of zones に差分がないこと。
■起動ログ確認
# grep named /var/log/messages
→automatic empty zone の内容や、その他エラーが出てないか確認。
■アップデート前後での dnsperf を使った Response codes 割合確認
# dnsperf -s localhost6 -d /tmp/00_queryperf_data.txt -t 15 -q 1
→バージョンアップ前と同じリストで試験。
SERVFAIL が大量に増えてなきゃ基本的に大丈夫なはず。たぶん。
■その他動作確認用ゾーンの確認
・ローカルで持っている物
・再起問合せの確認
・逆引きの確認
・他。
■次回に向けて BIND パッケージの確保
※2016/1/24 時点の最新Verの場合。
# mkdir /usr/local/src/bind-9.8.2-0.37.rc1.el6_7.5
# cd /usr/local/src/bind-9.8.2-0.37.rc1.el6_7.5/
# yumdownloader \*9.8.2-0.37.rc1.el6_7.5\*
# ls -la ./
→必要そうなパッケージが全部あることを確認。
【2016/11/25 追記】
■querylog 周辺について
●named.conf に
・【category queries】が定義されている場合、named 起動時にクエリログ取得はONになっている。
・【category queries】が定義されていない場合、named 起動時にクエリログ取得はOFFになっている。
●rndc querylog でクエリログ取得のON/OFFをした際
・【category queries】が定義されている場合、その定義されたログファイルに出力される。
・【category queries】が定義されていない場合、【category default】のファイルに出力される。
・【category queries】と【category default】が定義されていない場合、syslog の info レベルに出力される。
★querylog の取得を開始する場合
# rndc status
→ query logging is OFF である場合、次のコマンドを入れてログ取得を開始。
ON の場合、取得されている。
# rndc querylog
# rndc status
→ query logging is ON であることを確認
★querylog の取得を停止する場合
# rndc status
→ query logging is ON である場合、次のコマンドを入れてログ取得を開始。
OFF の場合、取得されていない。
# rndc querylog
# rndc status
→ query logging is OFF であることを確認