Macでhostsファイルを書き換える

エンジニアの方などは開発中に、Macでhostsファイルを書き換え・編集したい場合があるかと思います。
ただそんなに頻繁にはないので、設定するときに「あれ?hostsの場所どこだっけ?」となる事はないでしょうか。
今回はMacでhostsファイルを書き換える・編集する方法と、設定したあとで変更が反映されない場合にはどうすればいいかという点をご紹介していきます。
hostsファイルって何?
まずはそもそもhostsファイルって何?というところから解説していきます。
例えば「https://aprico-media.com/」など通常URLをブラウザに入れるとそのドメイン(ここではaprico-media.com)に紐づくIPアドレスを有しているサーバーにリクエストが送られます。
DNSサーバーでの名前解決

②で結果が返ってきて、無事にIPアドレスが分かったため③でアクセスを試みます。
hostsファイルでの名前解決


要するにドメインとIPアドレスの紐づけの管理はDNSサーバーが管理していますが、自身のMacのhostsファイルにドメインとIPアドレスの紐づけを設定しておくと、DNSサーバーの設定よりもローカルのMacのhostsファイルの紐づけが優先されます。
hostsファイルはDNSサーバーと同じくドメインとIPアドレスの紐づけを行いますが、ローカル環境限定でIPアドレスとドメインの紐付けを上書きする役割を持ちます。
Macでhostsファイルを書き換える方法
それではMacでhostsファイルの設定を書き換える方法をご紹介していきます。
hostsファイルがある場所はどこ?
まずhostsファイルの場所を確認しておきましょう。hostsファイルの場所はMacの環境では「/etc/hosts」となります。

Unix系のOSの場合は「/etc/hosts」がhostsファイルの場所となります。あとはこの場所にあるファイルを書き換えればOKという話になります。
ちなみにhostsファイルを開くと下記のようになっているはずです。このファイルの中身を書き換えていきます。
※少し編集するのが怖いという方はファイルのコピーをしてバックアップをとっておきましょう。
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost
ターミナルを使って書き換える
ターミナルを使ってhostsファイルを設定する方法を解説していきます。viを使っての書き換えの方法となりますので、viの操作が苦手という方は次のパートのテキストエディットやアプリを使った書き換え方法を参照下さい。
ターミナルの立ち上げ
ではまずはMacのターミナルを立ち上げましょう。

ターミナルLaunchpadを開き、その他からターミナルを選択して起動させましょう。
viでhostsファイルを編集
ターミナルが立ち上がったら以下のコマンドを入力してviでhostsファイルを開きましょう。
hostsファイルはrootユーザーにしか書き込み権限がないために、sudoをつけてviを起動しています。sudoをつけてますので、パスワードを聞かれますのでご注意下さい。
sudo vi /etc/hosts

あとはviの操作でIPアドレスとドメインの情報をセットで入力して、最後に保存してviを終了しましょう。
以上でターミナルを使ってのhostsファイルの設定は完了です。
ターミナルを使ってhostsファイルを書き換え
- ターミナルを起動する
- sudo vi /etc/hosts
- hostsファイルの内容を書き換えて上書き保存
またhostsファイルを度々書き換えるので、毎回sudoでパスワードを打つのが面倒という方は下記の記事を参考に設定をすると、パスワードなしでsudoが実行できます。
ぜひ参考にしてみて下さい。
テキストエディットを使って書き換える
viやターミナル上の操作が苦手だという方はテキストエディットなどのテキスト編集のアプリケーションを使ってのhostsファイルの設定がおすすめです。

Finderを立ち上げ「Command + Shift + G」で「フォルダの場所を入力」の機能を立ち上げましょう。
そこで/etc/hostsを入力して、移動しましょう。
するとhostsファイルが保存されているetcフォルダが開き、hostsファイルが見つかると思います。
hostsファイルを編集

権限の問題で直接編集できませんので、一度ダウンロードフォルダやデスクトップにそのファイルのコピーを作成しましょう。

コピーしたhostsファイルを右クリックでテキストエディットで開きましょう。

テキストエディットで追加するIPアドレスとドメインのセットを記述し、保存をしましょう。
hostsファイルを反映
あとはオリジナルのhostsファイルがあるetcフォルダに対して、コピー&編集したhostsファイルを貼り付けます。

上書きする際にユーザー名とパスワードの入力が求められます。正しい情報を入力すれば、無事にhostsファイルが上書きされます。
テキストエディットを使ってhostsファイルを上書きする
- Finderでhostsファイルのある場所まで移動(etcフォルダ)
- hostsファイルを別の場所にコピー
- コピーしたhostsファイルをテキストエディットで編集
- コピー&編集したhostsファイルで元のetcフォルダのhostsファイルを上書きする
Macのテキストエディットの基本的な使い方が分からないという方は以下の記事を参考にしてみて下さい。
アプリを使って書き換える

最後にアプリを使ってhostsファイルを書き換える方法をご紹介します。今回は「Hosts.prefpane」というアプリをご紹介します。
ダウンロード
Hosts.prefpaneはhostsファイルをアプリケーション内で追加&削除、有効・無効を切り替えられるアプリです。
ダウンロードは下記のリンクから行えます。
アプリを使う

インストールが完了すると、システム環境設定にHostsというアイコンが増えるかと思います。
こちらのアイコンをクリックして、Hosts.prefpaneを立ち上げましょう。

テキストエディットなどでテキスト編集しなくてもアプリを使って管理ができるので、テキスト編集に慣れていない方にもおすすめの方法です。
アプリを使ってhostsファイルを書き換え
- Hosts.prefpaneをインストール
- システム環境設定にアイコンが追加される
- アプリケーション内でIPアドレスとドメインの紐づけを設定できる
hostsファイルの設定が反映されない場合
hostsファイルを編集しても中々設定が上書きされていないことがあります。その場合は以下を注意して見てみましょう。
hostsの設定情報があっているか

hostsファイルに設定した情報が本当にあっているか、またアプリを使っている場合はあまり意識することがないところかと思いますが、改行コードなどはutf-8のLFになっているかなど文法の問題をチェックしてみましょう。
DNSのキャッシュをクリアしてみる
以下のコマンドでDNSのキャッシュをクリアできます。反映されない場合はターミナル上で一度試してみましょう。
sudo killall -HUP mDNSResponder
そもそもどうやって反映されているか試しているのか

hostsファイルが効いているかどうかをどうやって試しているかも関係してきます。というのもコマンドによってはhostsファイルを参照しないものがあります。
例えばコマンドのdigやnslookupはhostsファイルを参照せずに、DNSサーバーの情報を見に行きますので、hostsファイルの内容は無視されます。
pingやブラウザでドメインをたたいてみて、hostsファイルの情報が適用されているか試してみましょう。
まとめ
いかがでしたでしょうか。Macでhostsファイルを設定する方法をまとめました。またhostsファイルが反映されない場合の対処や見るべきポイントについてもあわせてまとめています。
hostsファイルはあまり編集する機会がないかもしれませんが、だからこそ、どうやってやるのか毎回調べる事が多い設定なのかと個人的には思っています。
今回の情報が少しでも役立てば幸いです。