「サイトが表示されない」「社内サーバーにつながらない」——原因の切り分けで、最初に疑うべきものがあります。

名前解決(DNS)です。

次のようなエラーは、いずれも名前解決の失敗を示しています。

  • DNS_PROBE_FINISHED_NXDOMAIN(ブラウザ)
  • Name or service not known(Linux)
  • Could not resolve host(curl・Git)
  • getaddrinfo failed(各種プログラム)

これらは「サーバーが落ちている」のではなく「サーバーの住所が分からない」状態です。原因も対処もまったく違います。

この記事では、名前解決がどの順番で行われるかと、企業ネットワークで起きやすいトラブルの切り分けを整理します。

名前解決に登場する3者

DNSの用語は、RFC 9499「DNS Terminology」で定義されています。実務で押さえるべきは3つです。

役割 定義(RFC 9499) 実体
スタブリゾルバ 「A resolver that cannot perform all resolution itself.」(自力ではすべての解決を行えないリゾルバ) あなたのPC
再帰リゾルバ 「a recursive resolver is expected to cache the answers it receives」(受け取った答えをキャッシュすることが期待される) 社内DNSサーバー/プロバイダのDNS
権威サーバー 「A server that knows the content of a DNS zone from local knowledge」(自身の知識でゾーンの内容を知っているサーバー) ドメイン管理者が用意したサーバー

流れはこうです。

  1. PC(スタブリゾルバ)は自分では調べられないので、DNSサーバーに聞く
  2. 再帰リゾルバが代わりに調べる。ただし答えを持っていればキャッシュから返す
  3. 持っていなければ権威サーバーに問い合わせる

「自分では調べない」「途中でキャッシュが挟まる」——この2点が、トラブルの原因のほとんどを説明します。

名前解決には順番がある

PCが名前を調べるとき、いきなりDNSサーバーに聞くわけではありません。先に見る場所があります。

順 参照先 特徴
1 hostsファイル DNSより優先される。書いてあればDNSは見に行かない
2 OSのDNSキャッシュ 過去に調べた結果を一定時間保持している
3 DNSサーバー(再帰リゾルバ) ここでもキャッシュが効く
4 権威サーバー 本来の答え

※この優先順位はOSの設定(Windowsのレジストリ、Linuxの nsswitch.conf など)に依存します。RFCで規定されているものではありません。

hostsファイルという伏兵

hostsファイルはDNSより優先されます。そのため、次のような事故が起きます。

  • テスト用にhostsへ書いた設定を消し忘れたまま本番を見ていた
  • サーバー移転でIPが変わったのに、hostsに古いIPが残っていた
  • 自分だけつながらない/自分だけ古い画面が見えている

「自分の環境だけおかしい」ときは、まずhostsファイルを疑ってください。

OS 場所
Windows C:\Windows\System32\drivers\etc\hosts
macOS / Linux /etc/hosts

キャッシュが古い情報を返す

DNSの答えにはTTL(有効期間)が設定されており、その間はキャッシュが使われます。

そのためサーバー移転やDNS設定の変更後、すぐには反映されません。「切り替えたのに古いサーバーに繋がる」のは、たいていこれです。この性質は、ブルーグリーンデプロイでDNSを使って環境を切り替える場合にも影響します。

手元のキャッシュはコマンドで消せます。

ipconfig /flushdns          (Windows)

ただし消せるのは自分のPCのキャッシュだけです。社内DNSサーバーやプロバイダ側のキャッシュは、TTLが切れるまで残ります。

企業ネットワーク特有の問題

内部DNSと外部DNS

多くの企業では、社内向けの名前(fileserver.example.local など)を解決するために社内にDNSサーバーを置いています。

ここで問題になるのが、PCがどちらのDNSを見ているかです。

状況 起きること
社内DNSを見ている 社内・社外とも解決できる(通常)
外部DNSを見ている 社内サーバーの名前だけ引けない
VPN接続時にDNSが切り替わらない VPNは繋がったのに社内サーバーが見えない

「VPNは接続できているのに社内システムにアクセスできない」は、DNSが原因であることが非常に多いトラブルです。

同じ名前が内と外で違うIPを指す

社内から見たときと社外から見たときで、同じホスト名が別のIPアドレスを返す構成もあります(スプリットDNS)。

この構成では、「どこから引いたか」で答えが変わります。切り分けのときは、必ずどのネットワークから実行したかを記録してください。

プロキシ環境では、そもそもPCが名前を引かない

見落とされやすい点です。プロキシ経由の通信では、名前解決をプロキシサーバー側が行うことがあります。

この場合、手元で nslookup が失敗しても、ブラウザでは表示できます(プロキシが解決しているため)。逆に、手元で引けてもプロキシ側で引けなければ繋がりません。

どの通信がプロキシを経由するかは、PACファイルで決まっている場合があります(PACファイルとは?企業ネットワークにおけるプロキシ自動設定の仕組み)。

切り分けの手順

「つながらない」と言われたとき、次の順で確認すると原因が絞れます。

順 確認すること 分かること
1 エラーメッセージを読む 名前解決の失敗か、接続の失敗か
2 nslookup ホスト名 を実行 名前が引けるか、どのDNSに聞いているか
3 hostsファイルを確認 手動設定が残っていないか
4 IPアドレスで直接アクセス 繋がればDNSだけの問題
5 別の端末・別の回線で試す 自分の環境だけの問題か

エラーメッセージの読み分け

エラー 意味
Could not resolve host
Name or service not known
名前解決の失敗。住所が分からない
Connection refused 名前は引けた。相手が接続を拒否(サービス停止・ポート閉鎖)
Connection timed out 名前は引けた。応答がない(ファイアウォール等)
SSL certificate problem 接続はできている。証明書の問題(証明書チェーンとは?)

「つながらない」の一言で片づけず、エラーメッセージを最後まで読む——これだけで切り分けの半分は終わります。

DNSはセキュリティにも関わる

名前解決は「どこに接続するか」を決める仕組みです。ここが書き換えられれば、正しいURLを入力しても偽サイトに誘導されます。

企業ネットワークでは、DNSの応答を偽装する攻撃への対策として、信頼できるDNSサーバーのみを使わせる設定が行われることがあります。

また当サイトで扱ったとおり、WPAD(プロキシ設定の自動検出)はDNSを使う方式があり、名前の衝突がセキュリティ上の問題になりえます(PACファイルの記事)。

「社内ネットワークだから安全」という前提を置かない考え方は ゼロトラストとは?VPNとの違いと中小企業での現実解 をご覧ください。

よくある質問

Q. nslookup で引けるのにブラウザで開けません

名前解決は成功しているため、原因は別です。プロキシ設定、ファイアウォール、証明書、サービス停止などを順に確認してください。

逆にnslookupで引けないのにブラウザで開ける場合は、プロキシが名前解決を代行している可能性が高くなります。

Q. DNSサーバーを変更してもよいですか?

企業のPCでは、勝手に変更しないでください。社内の名前が引けなくなり、業務システムにアクセスできなくなります。

公開DNSサービスに変更する案内を見かけますが、それは社内DNSを持たない環境の話です。

Q. 反映まで時間がかかると言われました

TTLの影響です。設定変更の前にTTLを短くしておくのが定石ですが、変更後にできることは多くありません。

手元のキャッシュを消しても、経路上の他のキャッシュは残ります。

Q. 社内サーバーの名前だけ引けません

参照しているDNSサーバーを確認してください。外部のDNSを見ている場合、社内の名前は解決できません。

VPN接続時に起きるなら、VPN接続後にDNS設定が社内向けに切り替わっているかを確認します。

Q. hostsファイルを書き換えれば解決しますか?

一時的な回避にはなりますが、恒久的な対処にはしないでください。

IPアドレスが変わったときに追従できず、その端末だけ繋がらないという状態を作ります。しかも原因究明が難しくなります。

参考にした主な調査・資料

※RFCの引用は原文(英語)からの抜粋で、和訳は本記事によるものです。名前解決の優先順位や設定方法はOS・環境によって異なります。企業のPCで設定を変更する際は、情報システム部門にご確認ください。

まとめ

  • 「つながらない」の多くは名前解決の失敗。サーバーが落ちているのとは別
  • PCはスタブリゾルバ——RFC 9499が「自力ではすべての解決を行えない」と定義
  • 間に入る再帰リゾルバはキャッシュを持つ。だから変更がすぐ反映されない
  • hostsファイルはDNSより優先される。「自分だけおかしい」ときの筆頭容疑者
  • VPNは繋がるのに社内システムが見えないのは、DNSが切り替わっていない可能性
  • プロキシ環境では、名前解決をプロキシが行うことがある
  • 切り分けは①エラーを読む ②nslookup ③hosts ④IP直打ち ⑤別端末の順
  • 「Could not resolve」と「Connection refused」は別物。読み分ければ原因が絞れる

名前解決は、普段まったく意識しない仕組みです。しかし止まったときに最初に疑うべき場所でもあります。

エラーメッセージを最後まで読む——それだけで、問い合わせる相手が変わります。