🐥
Proxmox上のDNSサーバー(BIND9)を安全にアップデートする手順
概要
DNSサーバーはネットワークの基盤であり、脆弱性が見つかった際は迅速な対応が求められますよね。
本記事では、 Proxmox上で稼働している内部権威DNS(BIND9) を、安全にアップデート・検証するための手順を紹介しています!(筆者はubuntu環境)
対象読者
- Proxmox環境で複数VMを管理している方
- BIND9を内部DNSとして運用している方
1. メンテナンスの目的と背景
- BIND9の脆弱性対応がしたい(例:DoS脆弱性、キャッシュポイズニング対策など)
- 内部DNSとしてLAN内ドメインを管理したい(外部フォワーダーなし)
- ns1 → ns2 の順で個別アップデートし、サービス停止を避けたい
ns1およびns2は、サービスの可用性を確保するために冗長構成されたBIND9サーバーで、ns1をプライマリ(マスター)、ns2をセカンダリ(スレーブ)として運用しています。
2. 作業前準備(バックアップと確認)
Proxmoxでスナップショットを取得しておこう!
1. Proxmox管理画面で対象VMを選択します
2. 「Snapshots」→「Create」をクリック
3. 名前を (例)pre-bind-update-ns1-YYYYMMDD などに設定します
3. 現在の状態確認
# 現在のホスト名(サーバー名)を確認
hostname
# BIND9 のバージョンを表示
named -v
# BIND9 サービスの起動状態を確認
systemctl status bind9
ログを残す場合は
# 以降のターミナル操作内容をログとして記録開始
# (実行結果・入力コマンドをすべて ~/bind_update_日付.log に保存)
script ~/bind_update_$(date +%Y%m%d).log
# 記録を終了
exit
4. BINDのアップデート
# パッケージ情報を更新
sudo apt update
BIND9 関連パッケージを最新バージョンにアップグレード
# BIND9 関連パッケージを最新バージョンにアップグレード
sudo apt install --only-upgrade bind9 bind9-utils bind9-host
「is already the newest version」 と表示された場合は、
現時点でリポジトリにある最新版がすでに適用済みです!
念のため、以下のコマンドでバージョンを確認してみましょう。
apt list --installed bind9
5. サービス再起動と動作確認
# BIND9 サービスを再起動
sudo systemctl restart bind9
# サービスが正常に稼働しているか確認
sudo systemctl status bind9
6. 設定整合性チェック
# BIND9 の設定ファイルの構文チェック
sudo named-checkconf
# 管理しているゾーンファイルの整合性チェック(ゾーン名は自分の環境に合わせて変更)
sudo named-checkzone example.local /etc/bind/db.example.local
再起動前に設定の整合性を確認し、起動時エラーを防ぐためのチェックです。
“OK” が表示されればゾーン設定は問題ないです。
7. ns2のアップデート
上記と同様にアップデートしましょう。
8. 両サーバーの更新完了後に既存の連携システムを確認
BIND9 のアップデート後は、他のサービスやスクリプトとの連携が正常に動作しているかを確認します。
DNS サーバーは他システムと密接に関係するため、更新後の確認を怠ると意図しない影響が出ることがあリます。
# 自動的にゾーンを更新するcronジョブやスクリプトが存在しないかを確認します
sudo grep -R "zone" /etc/cron* /usr/local /opt 2>/dev/null
# BIND設定内で自動更新が有効になっていないか確認します
sudo grep -R "allow-update" /etc/bind
sudo grep -R "dnssec" /etc/bind
※環境によって方法は千差万別なので、あくまでも具体例です。
チェック内容
- 自動ゾーン更新スクリプトやcronジョブの有無
- allow-update や dnssec による動的更新設定の有無
- 他の内部サービス(DHCP, Web, Mailなど)がDNS更新依存していないか
これらに問題がなければ、BIND9は静的構成で運用されており、外部連携への影響はないです。
Discussion