hostsファイルとは何か、なぜ編集するのか
hostsは、WindowsのリゾルバーがDNSサーバーに問い合わせる前に必ず確認するプレーンテキストファイルだ。ホスト名がそこに記載されていれば、その行のIPが優先され、DNSには一切問い合わせが行かない。ファイルの由来はDNSが存在するより前の時代までさかのぼり、Windowsは今もそれを一番先に見る ―― まさにこの立場がファイルを有用にしている。エントリは1行に1つ。IPアドレス、スペースかタブ、そしてホスト名。#より後ろはすべてコメントだ。
今日のhostsは4つの仕事で生計を立てている。開発用の名前を自分のマシンへ向けること、ドメインを無効なアドレスへ送ってシステム全体でブロックすること、DNS切り替え前に新しいサーバーでサイトを試すこと、そしてDNSが落ちているのにIPを知っているときに自力で救われること。コミュニティが管理するブロックリストは、2番目の仕事を数千の広告・テレメトリドメインへ一挙に拡張してくれる。ただし、どれも雑な編集には耐えられない ―― だからこそ「何を」より「どう」が問題なのだ。
- ローカル開発 ―― 127.0.0.1 myapp.test は名前を自分のマシンにマッピングする
- システム全体のブロック ―― 0.0.0.0 ads.example.com はドメインを虚空へ送る
- 移行テスト ―― 本番のDNS切替前に example.com を新しいサーバーのIPへ向ける
- 緊急アクセス ―― DNSが落ちていてもアドレスが分かればホストに届く
- リストブロック ―― コミュニティのhostsリストを貼れば数千の広告ドメインを一気に遮断
hostsを正しく編集する手順
スタートメニューを開いて「メモ帳」と入力し、検索結果を右クリックして「管理者として実行」を選ぶ ―― UACのプロンプトは承認する。メモ帳で ファイル → 開く と進み、アドレスバーに C:\Windows\System32\drivers\etc\hosts を貼り付け、ファイルの種類のフィルターを「テキスト文書 (*.txt)」から「すべてのファイル (*.*)」へ変更する。この変更をしないと hosts が見えないままだ。既存の内容の後ろに行を追加し、既定のコメントブロックはそのまま残し、ファイル → 保存。ファイル名は拡張子なしの hosts のままでなければならない。
動く編集と謎の現象を分けるのは1つの習慣だ。リゾルバーキャッシュのフラッシュ。Windowsは名前解決をキャッシュするので、古い回答が変更後もしばらく勝ち続けることがある。ターミナル (管理者) を開く ―― あるいは Win+R で cmd ―― し、ipconfig /flushdns を実行する。「Successfully flushed the DNS Resolver Cache」と返ってくれば、新しい問い合わせはあなたの行に従う。ping example.com で確認しよう。書いたIPから応答があれば、hostsは仕事を果たしている。
hostsが無視されるように見えるとき ―― と、リセット方法
「編集が効かない」という報告のほぼすべては、3つの犯人で説明がつく。1つ目はDNSキャッシュ ―― 上のフラッシュで直る。2つ目はブラウザだ。ChromeとEdgeは独自のセキュアDNS (DNS over HTTPS) で名前解決でき、オペレーティングシステムを完全に迂回する。だからブロックしたドメインがまだ開けてしまう。ブラウザのプライバシー設定でセキュアDNSをオフにすれば hosts ルールが復活する。3つ目はセキュリティソフト。一部のウイルス対策は hosts を監視して変更を黙って元に戻し、Windowsセキュリティの「フォルダーへのアクセスの制御」はメモ帳の保存をブロックできる ―― Windowsが壊れたと決めつける前に、その通知や「保護の履歴」を確認すること。
hostsを出荷状態に戻すのは簡単だ。既定のファイルにはコメントしか入っていない ―― localhostの行は#でコメントアウトされている。自分の行を削除し(あるいはファイル全体を既定のコメントブロックと置き換え)、管理者として保存してもう一度フラッシュする。容量に見合う2つの警告。hostsに自分が書いた覚えのないエントリ、特に銀行やSNSを奇妙なアドレスへ向けるものがあれば、マルウェアの兆候として扱いマシンをスキャンすること。また昇格したメモ帳でもアクセス拒否が続くなら、hosts を右クリック → プロパティ → セキュリティで Administrators にフルコントロールを与える ―― 一部のロックダウンツールは意図的にこの権限を締めているのだ。
よくある質問
hostsファイルの保存でアクセスが拒否されるのはなぜ?
メモ帳が管理者権限なしで開かれているため ―― hosts は保護されたシステムファイルだ。閉じて、スタートメニューから「管理者として実行」で開き直し、再度保存する。それでも失敗するなら、Windowsセキュリティの「フォルダーへのアクセスの制御」とファイルの「セキュリティ」タブを確認する。
hostsファイルでウェブサイトをブロックするには?
0.0.0.0 example.com と 0.0.0.0 www.example.com の2行を追加し、保存して ipconfig /flushdns を実行。ドメインは、Windowsの名前解決を使うすべてのアプリで無効なアドレスへ解決される。
hostsのエントリがChromeやEdgeで効かないのはなぜ?
ブラウザのセキュアDNS (DNS over HTTPS) が内部で名前解決し、hostsファイルをバイパスするためだ。ブラウザのプライバシー設定でセキュアDNSをオフに。あるいは先にターミナルの ping でエントリを確認し、hosts自体が機能していることを確かめるとよい。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]