DNS

Macで/etc/hostsの変更が効かない

/etc/hostsファイルは、このMacの中だけで名前をIPアドレスに対応付けます。mDNSResponderはこのファイルを読みますが、アプリや設定によってはこれを迂回します。

対象:現在のすべてのmacOS。確認日:2026年10月29日

症状

  • /etc/hostsに行を追加したのに、ブラウザが古いサイトを開きます。
  • ターミナルではエントリが効くのに、特定のアプリでは効きません。
  • example.comは効くのに、www.example.comは効きません。

考えられる原因

  • 行の書式の誤り。各行はIPアドレスで始め、そのあとにホスト名を書きます。#以降はコメントになります。
  • 名前の抜け。このファイルは名前を完全一致で対応付けます。example.comだけでなくwww.example.comのように、必要な名前をそれぞれ追加してください。
  • キャッシュされた応答。macOSやブラウザが古いアドレスをしばらく保存していることがあります。
  • プロキシやアプリ独自のDNS。プロキシを使う場合は、プロキシサーバが名前を検索します。独自のDNS設定を持つアプリもあります。

確認方法

  1. ファイルを表示します。

    cat /etc/hosts
  2. macOSのリゾルバで名前を検索します。ファイルに書いたアドレスが表示されるはずです。

    dscacheutil -q host -a name example.com
  3. システムのプロキシ設定を表示します。プロキシは自分で名前を検索します。

    scutil --proxy

解決方法

  1. 管理者としてテキストエディタでファイルを開きます。

    sudo nano /etc/hosts

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

  2. 名前ごとに1行を追加します。先頭にIPアドレスを書き、そのあとに1つ以上の名前を書きます。

    127.0.0.1   example.com www.example.com
  3. ファイルを保存します。nanoでは、Control+O、Return、Control+Xの順に押します。

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

    sudo killall -HUP mDNSResponder

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

  5. ブラウザを終了して開き直します。

  6. アプリがプロキシを使っている場合は、プロキシなしでテストするか、プロキシサーバにエントリを追加します。

よくある質問

Macを再起動する必要はありますか?

いいえ。ファイルを保存し、DNSキャッシュを消去してから、アプリを開き直します。

*.example.comのようなワイルドカードは使えますか?

いいえ。hostsファイルの書式は、アドレス、正式なホスト名、エイリアスで構成されます。必要な名前をそれぞれ行に追加してください。

出典

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