rndcコマンドによるDNS管理|BIND運用で必須の管理コマンドを理解する

rndcコマンド

rndcコマンドによるDNS管理

BINDを運用していると、設定変更後の再読み込みやゾーン情報の更新、キャッシュ削除などを行う機会が頻繁にあります。

初心者のうちは設定変更のたびにnamedサービスを再起動することが多いかもしれません。

しかし実務ではDNSサービスを停止させずに設定反映を行うことが重要です。

そのために利用されるのがrndc(Remote Name Daemon Control)です。

rndcはBIND専用の管理コマンドであり、サービス停止なしに様々な管理操作を実行できます。

本記事ではrndcの仕組みや主要コマンド、実務でよく利用する操作について解説します。

rndcとは

rndcはBINDを管理するための専用コマンドです。

正式名称は次の通りです。


Remote Name Daemon Control

BINDサーバへ管理命令を送信するために利用されます。

なぜrndcが必要なのか

DNSサーバ運用中に設定変更が発生することは珍しくありません。

例えばゾーンファイルへレコードを追加した場合です。

www IN A 192.168.60.20
ftp IN A 192.168.60.30

変更内容をBINDへ反映する必要があります。

その際にrndcを利用します。

service restartとの違い

初心者がよく行う方法です。

# systemctl restart named

この方法でも反映できます。

しかしDNSサービスが一瞬停止します。

実務では次の方法が一般的です。

# rndc reload

サービス停止なしに反映できます。

rndcの通信方式

rndcはBINDと認証付きで通信します。


rndc
↓
TCP 953
↓
named

DNSの53番ポートではありません。

953番ポートが利用されます。

設定ファイル

通常は以下の設定ファイルを利用します。


/etc/rndc.conf

ただしRocky Linuxでは自動生成されていることがほとんどです。

接続確認

まずは状態確認を行います。

# rndc status

正常な例です。
version: BIND 9.18
number of zones: 25
debug level: 0
xfers running: 0

BINDの状態を確認できます。

最も利用するreload

設定変更後に最も利用するコマンドです。

# rndc reload

named.confやゾーンファイルを再読み込みします。

サービス停止は発生しません。

ゾーン単位のreload

特定ゾーンだけ再読み込みすることも可能です。

# rndc reload example.com

大規模環境ではよく利用されます。

reconfigとは

named.confを再読み込みします。

# rndc reconfig

新しいゾーン定義を認識させる際によく利用されます。

reloadとreconfigの違い

コマンド役割
reload設定とゾーン再読込
reconfignamed.conf再読込

実務ではreloadの利用頻度が高くなります。

flushによるキャッシュ削除

キャッシュDNS運用時によく利用します。

# rndc flush

DNSキャッシュを全削除します。

flushnameとは

特定ホストだけ削除できます。

# rndc flushname www.example.com

全削除したくない場合に便利です。

zonestatusコマンド

ゾーン状態を確認します。

# rndc zonestatus example.com

出力例です。
name: example.com
type: primary
serial: 2026060901

シリアル番号も確認できます。

freezeコマンド

ゾーン更新を停止します。

# rndc freeze example.com

動的更新利用時に使用されます。

thawコマンド

freezeを解除します。

# rndc thaw example.com

更新可能状態へ戻します。

syncコマンド

メモリ上のゾーン情報をディスクへ保存します。

# rndc sync

動的更新利用時に重要です。

querylogの有効化

DNS問い合わせログを有効化できます。

# rndc querylog

再実行で無効化されます。

トラブル調査時によく利用します。

問い合わせログ確認

ログを確認します。

# journalctl -u named

問い合わせ内容を確認できます。

stopコマンド

BINDを停止します。

# rndc stop

systemctl stop namedと同様です。

haltコマンド

即時停止します。

# rndc halt

通常は利用機会は少なめです。

notifyコマンド

セカンダリーDNSへ通知します。

# rndc notify example.com

ゾーン変更を即時反映したい場合に利用します。

セカンダリーDNSとの連携

ゾーン変更後の流れです。


ゾーン編集
↓
シリアル更新
↓
rndc reload
↓
NOTIFY送信
↓
セカンダリー同期

実務で非常によく使う流れです。

よく利用するコマンド一覧

コマンド用途
rndc status状態確認
rndc reload再読み込み
rndc reconfig設定再読込
rndc flushキャッシュ削除
rndc zonestatusゾーン確認
rndc notifyゾーン通知

よくあるトラブル

rndc connection refused

namedが起動していない場合があります。

認証エラー

rndc設定ファイルに問題がある場合があります。

reloadしても反映されない

シリアル番号更新漏れの可能性があります。

ゾーンファイル構文エラー

named-checkzoneで確認します。

実務で覚えておきたいポイント

  • rndcはBIND専用管理コマンド
  • TCP953番ポートを利用する
  • reloadは最も利用頻度が高い
  • flushでキャッシュ削除できる
  • zonestatusでシリアル確認できる
  • notifyでセカンダリーDNSへ即時通知できる

まとめ

rndcはBIND運用に欠かせない管理コマンドです。

設定変更後のreload、キャッシュ削除、ゾーン状態確認など、多くの運用作業をサービス停止なしに実行できます。

特にreload、status、flush、zonestatusは実務でも頻繁に利用されるコマンドです。

BINDを運用する場合は、systemctlだけでなくrndcを使いこなせるようになることで、より効率的なDNS管理が可能になります。