1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DNSキャッシュの罠。TTLが切れているのに名前解決が変わらないLinux/Windowsの闇とFlush自動化

1
Posted at

はじめに:DNSを切り替えたはずなのに、なぜか旧サーバーにアクセスされる?

LAN内サーバーの移行やIPアドレス変更を行った際、インフラエンジニアが最も頻繁に遭遇するトラブルが 「DNSキャッシュの亡霊」 です。

  • 「DNSレコードのAレコードを新IPに書き換えた」
  • 「TTLも5分(300秒)に短縮しておいた」
  • 「5分経過したから大丈夫だろうと旧サーバーを停止した」

その瞬間、LAN内チャットに悲鳴が響き渡ります。
「〇〇システムに繋がりません!」「画面がエラーになりました!」

調査してみると、一部の端末がいまだに旧IPアドレスに接続を試みています。
「DNSのTTLが切れているのになぜ?」と頭を抱えますが、実は現代のOS環境には 「何重もの隠れDNSキャッシュ」 が存在しているためです。

本記事では、LinuxとWindowsに潜む多重DNSキャッシュの仕組みと、切り替え時に一撃でキャッシュを全消去(Flush)するトラブルシュート手法を解説します。


1. Windows環境:DNSキャッシュクリアの決定版

Windowsの場合、コマンドプロンプトの ipconfig /flushdns だけでは不十分なケースがあります。
特にブラウザ(ChromeやEdge)はOSのキャッシュとは別に 「独自のブラウザ内DNSキャッシュ」 を持っています。

② ブラウザ内DNSキャッシュのクリア

  • Chrome / Edge: アドレスバーに chrome://net-internals/#dns と入力し、「Clear host cache」 をクリック。
  • これを行わないと、ブラウザを開いたままのユーザーはいつまでも旧IPにアクセスし続けます。

2. Linux環境:ディストリビューション別のキャッシュクリア

現代のUbuntuなどのLinuxでは、systemd-resolved がローカルでDNSキャッシュを保持しています。

① systemd-resolved のキャッシュクリアと統計確認

# (要点抜粋)
# (Source: https://github.com/ojisantech/)
# キャッシュのフラッシュ
sudo resolvectl flush-caches

# キャッシュ統計の確認 (Current Cache Size が 0 になったか検証)
resolvectl statistics

② 旧来の nscd や bind9 が動いている場合

# (要点抜粋)
# (Source: https://github.com/ojisantech/)
# nscd のホストキャッシュを無効化
sudo nscd -i hosts
# またはサービス再起動
sudo systemctl restart systemd-resolved

3. 切り替え作業前に仕込むべき「TTL短縮スクリプト」

トラブルの根本原因は、「切り替え当日にTTLを短くしても手遅れ」という点にあります。
必ず 切り替え作業の48時間前 に、TTLを300秒(5分)以下に下げておく必要があります。

💻 コア実装・設定スニペット(抜粋)

# (要点抜粋)
# DNSクライアントキャッシュの消去
Clear-DnsClientCache
# NetBIOS 名解決キャッシュの消去
nbtstat -R

まとめ:DNS切り替えは「キャッシュ階層」を意識せよ

DNSのトラブルは、ネットワーク機器ではなく「クライアント端末の中」で起きていることがほとんどです。

  • OSのDNSキャッシュだけでなく、ブラウザ独自のキャッシュを忘れない
  • Linuxは resolvectl flush-caches を使う
  • 作業の数日前からTTLを意図的に落としておく

この3原則をチェックリストに入れておくだけで、月曜の朝に全LAN内から問い合わせが殺到する恐怖のDNSトラブルを100%回避できます!


📚 さらに詳しいアーキテクチャ設計・パラメータ表・トラブルシューティング

最後までお読みいただきありがとうございます!
本記事が少しでも「役に立った」「あとで試したい」と感じていただけましたら、ぜひQiitaの 「いいね(♡)」 と 「ストック」、および アカウントのフォロー をいただけると今後の検証・執筆の大きな励みになります!

また、本記事のさらに踏み込んだ 「深層アーキテクチャ解説」「主要パラメータの技術的根拠」「現場アンチパターン・トラブルシューティング対応表」 は、以下のGitHub技術リファレンスにて公開しています。

👉 【第31弾 詳細技術リファレンス (QIITA_ARTICLE_DETAIL_31.md)】

⭐ 全14層・200パターンの自立型インフラ&オンプレAIリファレンス集(おじさんの武器庫)を順次公開中です。ぜひGitHubリポジトリへの Star (★) と X (@OjisanTechnical) のフォローもお願いいたします!
👉 GitHub リポジトリ: ojisantech/ojisan-arsenal

💡 【検証環境・個人研究(PoC)に関する注記】
本記事は、筆者個人の自宅検証環境(ホームラボ/仮想環境)において、公開情報およびOSS(オープンソースソフトウェア)を用いて独自に構築・検証した個人研究(PoC)の記録です。特定の企業・団体の実環境や業務上の非公開情報とは一切関係ありません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?