📝 この記事は forge.workstyle.tech に掲載した記事の転載です。
DNS管理画面で、NS移行済みドメインではなく隣の稼働中ドメインを選びました。NS以外のDNSレコード13件を削除してしまいました。直前の一覧と削除直後の権威DNS情報が復旧の手がかりになりました。
先に結論
DNSレコードを誤削除した場合、直前の一覧と権威DNS(そのドメインの正式なDNS情報を返すサーバー)から取れた値が復旧の手がかりになります。今回はAXFRが拒否されましたが、名前を列挙してdigし、公開DNSキャッシュとも照合して13件を約11分で手動復旧しました。
削除前のDNS一覧はどこに残っていたか
消えたのは13件で、内訳はAが11件、CNAMEが1件、MXが1件です。復旧の材料になったのは、別の作業者が直前に管理画面からコピーしていた全件一覧でした。その人は別のAIセッションで作業していました。
削除後に元の値を一つずつ思い出すのは難しくなります。今回は一覧が残っていたため、13件を手で再登録する材料を確保できていました。
ただし、一覧だけでは権威DNS上の状態を確かめられません。削除申請を送った直後は権威DNSへの反映が遅れており、digを実行すると削除前のレコードをまだ全件取得できました。
AXFRが拒否されたあと、どうやって全件を確認したか
DNSゾーン全件を転送するAXFRは拒否されました。そこで名前を列挙してdigし、直前にコピーされた一覧と権威DNSからの取得結果を使える形で確認しました。
さらに、公開DNSのキャッシュ(一時的に保存されたDNS情報)とも照らし合わせました。8.8.8.8と1.1.1.1の結果を使って二重に確認し、権威DNSから取得した一覧だけで進めず、別のキャッシュから見える状態も確かめました。
手で戻す根拠になったのは、残っていた一覧、削除直後に取れた権威DNSの全件、公開DNSキャッシュの結果の三つです。
TTLとSOA serialから復旧時間を確かめる
AレコードのTTL(DNS情報をキャッシュに保持する時間)は3600秒、否定キャッシュ(存在しないという応答のキャッシュ)は300秒でした。SOA serial(ゾーンの更新番号)を確認すると、ゾーンが空になったのは10:06、再登録して戻ったのは10:17です。記録上、復旧まで約11分でした。
復旧を支えたのはTTLの数字だけではありません。削除後でも権威DNSから全件を取得でき、直前の一覧や公開DNSキャッシュの結果とも照らして、手で登録する内容を確認できました。
管理画面の削除操作を取り消したのではなく、確認に使える情報を集めてレコードを手で再登録しました。元の値が残っていたため、作業を進められました。
DNSレコードの誤削除を防ぐには
今回の誤操作は、似た名前のドメインを同じ画面で扱っていたときに起きました。不要なドメインを消すつもりで、隣の稼働中のドメインを選んでいました。似た名前のドメインは同じ画面で操作せず、削除前にゾーン全体を書き出しておくのが今回の教訓です。
AXFRを使ってゾーン全件を取得しようとしても、拒否されることがあります。今回は拒否されたため、名前を列挙してdigしました。削除を実行する前に一覧を手元に残せば、削除後に値を探すところから始めずに済みます。
11分で戻せたのは、特別な復元機能を見つけたからではありません。直前にコピーされた一覧があり、権威DNSへの反映が遅れている間にdigで全件を取得でき、公開DNSキャッシュとも照らし合わせられたからです。
まとめ
- 管理画面に残る削除前の一覧を確認する。
- 権威DNSへの反映が遅れていれば、名前を列挙して
digし、全件を取得できるか確かめる。 - 8.8.8.8と1.1.1.1の公開DNSキャッシュとも照合する。
- 確認した値を手で再登録し、SOA serialで時刻を確認する。
- 次の削除前に対象ドメインを見分け、ゾーン全体を書き出しておく。