til//how-dns-works-and-fails
how-dns-works-and-fails.mdupdated 2026-08-012,185 chars

ドメインが​IPに​変わる​仕組みと、​サイトが​突然開かなくなる​理由

DNS​(Domain Name System=インターネットの​共有電話帳)は、​人が​読める​ドメイン名を​数値の​IPアドレスに​変換する​仕組みである。​レコード・キャッシュ・権威サーバーの​各層を​理解する​ことが、​障害の​素早い​特定に​つながる。

DNS(Domain Name System)は、​世界共有の​「電話帳」であり、​ドメイン名​(例:example.com)を​IPアドレス​(例:203.0.113.10)に​変換する。​人間は​名前で​覚え、​コンピュータは​数字で​通信する​ため、​DNSは​その​橋渡し役である。

DNSレコードの​基礎

レコード種別意味
Aレコードドメイン名 → IPv4アドレス​(例:203.0.113.10)​への​1行の​対応
AAAAレコードドメイン名 → IPv6アドレスへの​対応​(Aレコードの​4倍長い​版)
CNAMEレコードある​ドメインを​別の​ドメイン名へ​転送する​エイリアス​(別名)​定義

Apexドメインと​サブドメイン

  • Apex​(ルートドメイン)example.comそのもの。​管理画面では​「@」と​表記される​ことが​多い。
  • サブドメインwww.example.comapi.example.comのように​前に​名前が​付いた​もの。

障害の​一種に​「wwwは​生きているのに、​Apexであるexample.comその​ものの​Aレコードだけが​消えている」と​いう​ものが​ある。​Apexと​wwwの​レコードは​独立している​ため、​片方だけが​消える​ことがある。

登場人物:レジストラと​DNSホスト

  • レジストラ=ドメイン名を​登録・管理する​会社。​「この​ドメインの​所有者は​誰か」を​把握している。
  • DNSホスト=Aレコードなどを​実際に​管理・配信する​サービス​(​多くは​CDN事業者や​専用の​DNSサービス)。

ドメインの​有効期限は​切れていないのに、​DNSホスト側で​レコードだけが​削除・上​書きされて​障害が​起きる​こともある。

権威ネームサーバーへの​直接問い​合わせ

権威ネームサーバー=​その​ドメインに​ついて​最終的な​正解を​持つサーバー。

# dig コマンドで権威ネームサーバに直接問い合わせる例
dig @ns1.example-dns.net example.com A

キャッシュを​経由しないため、​「キャッシュの​せいで​古い​情報が​出ているのか、​レコードが​本当に​消えたのか」を​切り分けられる。​応答に​何も​返らなければ、​レコードは​本当に​削除されている。

DNSキャッシュと​問題の​切り分け方

  • DNSキャッシュ=OSや​ブラウザが​一度​調べた​結果を​一時的に​保存する​仕組み。​TTL​(Time To Live=有効期限の​秒数)が​切れるまで​古い情報を​使い続ける。

Windowsで​キャッシュを​強制的に​クリアする​コマンド。

ipconfig /flushdns

これでも​つながらない​場合は、​キャッシュの​問題ではなく、​レコード自体が​消えている。

hostsファイル:PC内だけの​プライベートな​住所録

hostsファイル=OSが​ローカルに​持つ名前解決の​対応表。​DNSより​優先して​読まれる。

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux:/etc/hosts
# 書式: IPアドレス  ドメイン名
203.0.113.10  example.com

DNSが​壊れていても、​ここに​1行書く​ことで、​自分の​PCだけは​特定の​ドメインを​任意の​IPに​向けられる​(一時的な​回避策と​して​便利)。​編集には​管理者権限が​必要である。​使い​終えたら​必ず行を​削除する。

DoH:ブラウザが​自前で​調べる​DNS

DoH(DNS over HTTPS)=ブラウザが​独自の​暗号化された​経路で​DNSを​調べる​方式。​OSの​DNSキャッシュとは​独立して​動く​ため、ipconfig /flushdnsを​実行した​後も​ブラウザ内部の​キャッシュは​残る​ことがある。​Chromeや​Firefoxの​設定で​DoHを​無効に​するか、​ブラウザ側の​DNSキャッシュも​別途クリアする​必要が​ある。

TLSと​SNI:サーバー自体の​生存確認

TLS(Transport Layer Security)=HTTPS通信の​暗号化プロトコル。SNI(Server Name Indication)=TLSハンドシェイク​(=暗号化通信を​始める​際の​事前の​手続き)の​際に​「この​リクエストが​どの​ドメイン宛てか」を​サーバーに​伝える​仕組み。

DNSが​解決できなくても、​IPアドレスさえ​分かれば​curlで​直接アクセスできる。

curl -v --resolve example.com:443:203.0.113.10 https://example.com/

有効な​証明書付きで​応答が​返れば、​「サーバー自体は​正常で、​DNSだけの​問題である」と​確認できる。

まとめ:​「電話帳の​1行だけが​消えた」​障害の​見分け方

  1. 権威ネームサーバーに​直接問い​合わせる​ → レコードが​消えているか​確認する。
  2. ipconfig /flushdnsで​キャッシュを​クリアしても​失敗するか​確認する。
  3. SNI付きで​IPに​直接接続する​ → サーバーが​応答するか​確認する。

「ドメインは​有効、​サーバーは​生きている、​証明書も​有効なのに、​つながらない」​場合、​原因は​DNSレコードの​欠落である。​レジストラまたは​DNSホストの​管理画面で​Aレコードを​1行追加するだけで​復旧する。

148 notestil