DNS

MacでDNSの名前解決ができない

DNSが失敗すると、Macはapple.comなどの名前をIPアドレスに変換できません。接続は生きていても、名前で開くサイトはすべて失敗します。

対象:「システム設定」の手順はmacOS 13 Ventura以降。ターミナルのコマンドは現在のすべてのmacOSバージョンで使えます。確認日:2026年10月29日

症状

  • 多くのサイトで、ブラウザに「サーバが見つかりません」などのエラーが表示される。
  • ターミナルのツールに「Could not resolve host」や「nodename nor servname provided」と表示される。
  • IPアドレスを使うアプリは動くのに、名前では動かない。
  • ネットワークを切り替えたり、VPNに接続したり、カスタムDNSサーバを設定したりしたあとに問題が起き始めた。

考えられる原因

  • 接続がない。Macにインターネットへの正常な経路がないので、DNSの問い合わせが出ていけません。
  • DNSサーバが間違っている、または到達できない。手動で入力したDNSサーバが動かなくなったり、このネットワークでブロックされていたりすることがあります。
  • ルーターのDNSが失敗している。多くのネットワークでは、DNSはルーターに送られます。ルーターが応答しなくなると、すべてのデバイスで名前が解決できなくなります。
  • VPN、プロファイル、フィルタがDNSを変更している。VPN、暗号化DNSのプロファイル、コンテンツフィルタは、問い合わせを別のサーバに送ることがあります。
  • キャッシュに古い応答がある。Macは応答をしばらく保持します。サイトが移転したあとは、古い応答のせいで失敗することがあります。

確認方法

  1. 接続が正常か確認します。DNSを使わないように、IPアドレスにpingを送ります。

    ping -c 3 1.1.1.1
  2. 名前にpingを送ります。IPアドレスでは成功し、名前では失敗するなら、問題はDNSです。

    ping -c 3 apple.com
  3. macOSのリゾルバに名前を問い合わせます。ほとんどのアプリと同じ経路を使います。

    dscacheutil -q host -a name apple.com

    出力ip_addressとipv6_addressの行。行がなければ、検索は失敗しています。

  4. macOSが今使っているDNS構成を表示します。最初のリゾルバがデフォルトです。

    scutil --dns
  5. Wi-Fiサービスに手動で設定したDNSサーバを表示します。

    networksetup -getdnsservers Wi-Fi

    出力IPアドレスの一覧、またはDNSサーバが設定されていないというメッセージ。後者の場合は、ネットワークがサーバを提供しています。

解決方法

  1. 手動で入力したDNSサーバを削除します。アップルメニュー>「システム設定」>「ネットワーク」を選択します。

  2. ネットワークサービスをクリックし、「詳細」をクリックしてから「DNS」をクリックします。追加したサーバを1つずつ選択し、削除ボタンをクリックします。

  3. ターミナルで消去することもできます。サーバのアドレスの代わりにemptyという語を使います。

    networksetup -setdnsservers Wi-Fi empty

    管理者パスワードが必要です。

  4. DNSキャッシュを消去します。MacでDNSキャッシュを消去するを参照してください。

    sudo killall -HUP mDNSResponder

    管理者パスワードが必要です。

  5. ルーターから新しいアドレスと新しいDNSサーバを取得します。MacでDHCPリースを更新するを参照してください。

  6. テストのため、VPNを切断します。それで名前が解決できるようになったら、VPNのDNS設定を確認します。MacでDNSの問い合わせがVPNの外に出てしまうを参照してください。

  7. すべてのデバイスでDNSが失敗する場合は、ルーターを再起動します。

Kilobatを使う場合

  1. Kilobatは、DNSの検索を1回計測し、使われているリゾルバを一覧表示します。dnsMilliseconds、dnsServers、captivePortalを確認します。

    kilobat diagnose --json
  2. 1つのサイトやAPIについて、失敗しているレイヤーを見つけます。接続の前にDNSを確認します。

    kilobat why api.example.com
  3. CLIは無料です。アプリでは、「ヘルス」タブにDNSサーバと検索時間が表示されます。1つのサイトやAPIに接続できない原因を見つけるを参照してください。

よくある質問

1.1.1.1へのpingは成功するのにサイトが開けないのはなぜですか?

IPアドレスへのpingはDNSを使いません。pingが成功して名前が失敗するなら、問題は接続ではなくDNSです。

アプリは失敗するのにdigは成功するのはなぜですか?

digは/etc/resolv.confにあるサーバに問い合わせます。アプリはmacOSのリゾルバを使い、リゾルバはVPNやドメインごとのルールも使えます。

ルーターはまたDNSサーバを提供してくれますか?

はい。ネットワーク設定のDNSリストが空なら、macOSはネットワークがDHCPで提供するサーバを使います。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。