ちょっとしたミスで地獄行きになるところだったので、自戒を込めてメモを記します。
何をやらかそうになったか?
「DNSの設定変更中、Aレコードとシリアル番号を間違えて登録するところだった」
なお、LinuxのDNS、BINDを用いての作業です。
なぜこれが危険なのか?
DNSレコードの設定は、インターネット上の住所録を書き換えるような作業です。一歩間違えると、メールが届かない、ウェブサイトが見られない、あるいは悪意のある第三者に通信を乗っ取られるといった甚大な被害に直結します。
というか、やらかしかけました。
なぜこれほどまでに慎重さが求められるか? 改めて、「自分に言い聞かせるレベルで」メモをします。
DNS設定ミスが引き起こす主なリスク
DNSは「一度間違えると修正が反映されるまで時間がかかる」という特性があるため、ミスが致命傷になりがちです。
サービス全停止(可用性の喪失)
AレコードやCNAMEの記述ミスにより、全世界からサイトやAPIへの接続が断たれます。
メールの不達・消失(機会損失・信用リスク・レピュテーションリスク)
MXレコードの設定ミスは、ビジネス連絡の遮断を意味します。また、SPF/DKIM/DMARCなどの送信ドメイン認証に不備があると、正当なメールが「迷惑メール」として破棄されます。
サブドメイン乗っ取り(Subdomain Takeover)
これがある意味の恐怖です。不要になった外部サービス(SaaS等)へのCNAMEを残し続けると、そのドメインを第三者に取得され、せっかくのブランド名で偽サイトを運営されるリスクがあります。
キャッシュによる影響の長期化
後述するTTLの設定により、間違った設定が世界中のキャッシュサーバーに残り続け、即座に修正しても数時間は復旧しないことがあります。
BINDにおける「シリアル番号」とテキスト管理の罠
BIND(Berkeley Internet Name Domain)のようなテキストベースの管理では、私のようなエンジニアの「うっかり」が原因で同期不全が起きることがよくあります。
シリアル番号(Serial Number)の更新忘れ
BINDのゾーンファイルには、SOA (Start of Authority) レコード内にシリアル番号が存在します。
- 仕組み:
- セカンダリサーバーは、プライマリサーバーのシリアル番号が「現在より大きい数字」になった時だけ、新しい設定を同期(ゾーン転送)します。
- リスク:
- レコードの内容を書き換えても、シリアル番号を増やし忘れると、セカンダリサーバーには古い設定が残り続けます。 これにより、場所によって新旧の設定が混在する不安定な状態になります。
構文ミスとドット(.)の有無
BINDでは、FQDN(完全修飾ドメイン名)の末尾にドットを付け忘れると、オリジンのドメイン名が自動的に付加されてしまいます。
- 例:
-example.comと書くべきところをexample.com.(末尾ドットあり)としなかった場合、example.com.example.com.という意図しないレコードとして解釈されます。
ミスを防ぐための4つの鉄則
これに関してはAIと壁打ちしながら設定しました。
1. TTL(Time To Live)を事前に短縮する
作業の数日前から、対象レコードのTTLを短く(例:300秒など)設定しておきます。
- 理由:
- 万が一ミスをしても、キャッシュが早く切れるため、被害を最小限に抑えられます。作業完了後に元の値に戻すのを忘れないようにしましょう。
2. BINDの構文チェックコマンドを活用
ファイルを保存した後、サービスを再起動(reload)する前に必ずチェックコマンドを叩く習慣をつけます。
named-checkzone [ドメイン名] [ゾーンファイル名]
`
ゾーンファイルの整合性確認(シリアル番号の形式ミスなども検知できます)
3. シリアル番号の運用ルール化
シリアル番号は YYYYMMDDNN(日付+その日の更新回数)の形式で運用するのが一般的です。
例: 2026年4月16日の1回目の修正 →
2026041601
この、第三者が見ても分かる増分をやりましょう。極端な話
- Friends
- Romans
- Countrymen
のような「ローマ的増分」は分かっているのが自分であっても混乱の元です。
4. 変更後の浸透確認(digコマンド等)
設定を反映したら、自分のPCのブラウザで確認するだけでなく、外部から正しく引けるかを確認します。
- Google Public DNSで確認
dig @8.8.8.8 example.com A
- 同期設定をしたセカンダリDNSで確認
dig @[セカンダリDNSのIP] example.com A
まとめ
DNS設定は、「間違えた瞬間に世界中にそのミスが拡散し、しかもすぐには消せない」という怖さがあります。
特にBINDなどの手動管理では、「シリアル番号のカウントアップ」と「末尾のドット」を指差し確認するだけでも、トラブルの多くを回避できます。作業前のTTL短縮と、作業後の多角的な検証をセットで行うようにしましょう。
「かんばん」を掲げる意味
拙稿にて、ドメインを掲げる意味として
- Web上の住所
- ブランドの顔
- 信頼の証
の3つを挙げています。また、池波正太郎の
「人間、落ちるところへ落ちてしまっても、なにかこう、この胸の中に、たよるものがほしいのだねえ」
「たよるもの、ねえ…」
「いえば看板みたいなものさ」
「かんばん、かね…?」
「人間、だれしも看板をかけていまさあね。旦那のお店にもかけてござんしょう」
――『にっぽん怪盗伝』
にも感銘を受けています。「ちょっとしたミスによって看板に泥を塗る」事態が起きかけたという話でした。
コメントを残す