2026年5月24日
2026年5月24日
内部DNSと外部DNSの混在トラブル|社内だけサイトが開けない・時々名前が引けない原因と対処
社内DNSと外部のDNS(プロバイダやパブリックDNS)が混在する環境では、「社内からだけ自社サイトが開けない」「社内システムの名前が時々引けなくなる」といった、再現しにくいトラブルが起きます。原因の多くは、端末が問い合わせるDNSサーバーが混ざっていることか、同じドメインを社内と社外で別々に管理していて内容がずれていることです。この記事では、症状から原因を絞り込む手順と、原因ごとの直し方を説明します。
よくある症状
- 社外からは自社の WordPress サイトが開けるのに、社内のネットワークからだけ開けない、または古いサーバーのサイトが表示される
- 社内のファイルサーバーや業務システムの名前が、引ける日と引けない日がある
- VPN に接続すると、社内システムには入れるがインターネットのサイトが開けない(またはその逆)
- 社内サーバー上の WordPress で、サイトヘルスの「ループバックリクエスト」や REST API のテストが失敗する
どれも「どのDNSサーバーに聞いたか」で答えが変わることが共通点です。
まず、端末がどのDNSサーバーを使っているかを確認する
切り分けは、問題の端末が実際に問い合わせているDNSサーバーを確認するところから始めます。
# Windows:接続ごとのDNSサーバー
Get-DnsClientServerAddress -AddressFamily IPv4
# Windows:VPNなどが設定した、ドメインごとの問い合わせ先
Get-DnsClientNrptPolicy
# Linux(systemd-resolved):リンクごとのDNSサーバーと担当ドメイン
resolvectl status
# Mac:ドメインごとの問い合わせ先を含む設定一覧
scutil --dns
次に、同じ名前を社内DNSと外部DNSにそれぞれ問い合わせて、答えを比べます。
# 社内DNS(192.0.2.53 は例)に聞く
nslookup www.example.com 192.0.2.53
# 外部のDNSに聞く
nslookup www.example.com 8.8.8.8
答えが違う、または片方だけ「見つからない(NXDOMAIN)」になるなら、以下のどれかに当てはまります。原因として多い順に説明します。
原因1:社内DNSと外部DNSを混ぜて設定している
最も多いのが、端末のDNS設定で「優先DNSは社内DNS、代替DNSは 8.8.8.8」のように、社内と外部を組み合わせているケースです。冗長化のつもりで設定されていることがあります。
代替DNSは「優先DNSが答えなかったとき」に使われるもので、優先DNSが「その名前は存在しない」と答えた場合には代わりに聞いてくれません。逆に、社内DNSが一時的に応答しなかったとき、OSは代替DNSに切り替え、しばらくそちらを使い続けることがあります。その間は社内の名前がすべて引けなくなり、時間がたつと元に戻るため、「時々引けない」症状になります。Linux の /etc/resolv.conf に複数の nameserver を書いた場合や、systemd-resolved でも、問い合わせ先が切り替わって同じことが起こります。
対処:端末に設定するDNSサーバーは社内DNSだけにし、冗長化は社内DNSを2台用意して行います。インターネットの名前は、社内DNSから外部のDNSへ転送(フォワーダー)させます。DHCPで配っている設定に外部DNSが含まれていないかも確認します。
原因2:社内DNSで自社ドメインのゾーンを持っていて、内容が古い
Active Directory などの都合で、社内DNSに公開ドメインと同じ名前のゾーン(例:example.com)を作っている場合、社内DNSはそのドメインの答えを自分のゾーンだけで返します。外部の権威DNSで www のIPアドレスを変えたり、新しいサブドメインやメール認証用のTXTレコードを追加したりしても、社内のゾーンに同じ変更をしない限り、社内からは古い答えか「存在しない」が返ります。
サーバー移転のあと社内からだけ旧サーバーが表示される場合は、まずこれを疑います。社内DNSに問い合わせた結果が古く、外部DNSの結果が新しければ当てはまります。
対処:短期的には、外部で変更したレコードを社内のゾーンにも反映します。変更のたびに両方を直す運用になるため、変更手順書に「社内ゾーンも更新する」と明記しておきます。長期的には、社内用の名前を corp.example.com のような公開ドメインのサブドメインに分け、公開ドメイン自体は社内で持たない構成にすると、ずれが起きにくくなります。
原因3:同じ名前を社内と社外で別のIPアドレスにしている(スプリットDNS)
社内に置いた WordPress サーバーを公開している場合、社内からは社内のIPアドレス、社外からはグローバルIPアドレスを返すように、意図的に答えを分けることがあります。これをスプリットDNS(スプリットホライズン)と呼びます。ルーターが「社内から自社のグローバルIPアドレスへ折り返す通信(NATループバック、ヘアピンNAT)」に対応していないと、社内からグローバルIPアドレスで接続できないため、この構成が使われます。
うまく動いていれば問題ありませんが、社内の答えを用意し忘れた名前があると、その名前だけ社内から開けなくなります。サイトの画像を別のサブドメインから配信している場合なども、すべての名前が対象になります。
対処:社外向けに公開しているレコードの一覧と社内向けのレコードを照らし合わせ、抜けがないかを確認します。ルーターがNATループバックに対応しているなら、それを有効にしてスプリットDNSをやめるのも選択肢です。
WordPress サーバー自身が自分の名前を引けない場合
WordPress は、WP-Cron の実行やサイトヘルスの確認のために、サーバー自身から自分のURLへHTTPリクエストを送ります。サーバーが自分のドメインをグローバルIPアドレスに解決し、そのアドレスに社内側から到達できないと、予約投稿が実行されない、サイトヘルスでループバックリクエストの失敗が表示される、といった症状になります。サーバーの /etc/hosts に自分のドメインと社内のIPアドレスを書くか、サーバーが使うDNSにスプリットDNSの社内向けの答えを用意して解決します。
原因4:VPN のDNS設定が想定と違う
VPN には、すべての名前を社内DNSで引く方式と、社内のドメインだけを社内DNSに聞く方式(スプリットDNS)があります。後者で担当ドメインの指定が漏れていると、その名前だけ外部DNSに問い合わせてしまいます。前者で社内DNSが外部の名前を転送できないと、VPN 接続中にインターネットのサイトが開けなくなります。
対処:Windows では Get-DnsClientNrptPolicy、Linux では resolvectl status、Mac では scutil --dns で、VPN 接続中にどのドメインがどのDNSサーバーに向いているかを確認し、VPN の設定(クライアントへ配るDNSとドメインの一覧)を直します。設定方法は VPN製品ごとに異なるため、製品のドキュメントを確認してください。
社内用ドメイン名の選び方
これから社内DNSを設計するなら、名前の選び方で混在トラブルの多くを避けられます。
- 公開ドメインのサブドメインを使う:
corp.example.comのように、自社が登録しているドメインの下に社内用の名前を置く方法が一般的です - **
.localは避ける**:.localは Mac などが使うマルチキャストDNS(mDNS)用の名前で、社内DNSで使うと名前解決が遅れたり失敗したりする原因になります - 勝手な名前を使わない:存在しないつもりのトップレベルドメインが後から実際に登録されると、外部の名前と衝突します。ICANN は私的な利用のために
.internalを予約する決定をしていますが、扱いは今後の動向も含めて確認してください(2026年10月現在)
まとめ
- 内部DNSと外部DNSの混在トラブルは、「どのDNSサーバーに聞いたか」で答えが変わることが原因
- まず端末が使っているDNSサーバーを確認し、社内DNSと外部DNSの答えを比べる
- 端末に社内DNSと外部DNSを混ぜて設定しない。外部の名前は社内DNSから転送する
- 社内で公開ドメインのゾーンを持つなら、外部の変更を社内にも反映する。社内用はサブドメインに分けるとずれにくい
- 社内で WordPress を公開している場合は、サーバー自身が自分の名前を引けるかも確認する