漫画の地球儀

Macでhostsファイルを書き換え、編集する方法!【反映されない原因、対処法、テキストエディット】

スポンサーリンク

f:id:rick1208:20200618162701p:plain


エンジニアの方などは開発中に、Macでhostsファイルを書き換え・編集したい場合があるかと思います。

ただそんなに頻繁にはないので、設定するときに「あれ?hostsの場所どこだっけ?」となる事はないと思いますか。

ここではMacでhostsファイルを書き換える・編集する方法と、設定したあとで変更が反映されない場合にはどうすればいいかという点をご説明していきます。

hostsファイル

f:id:rick1208:20200618025009p:plain
まず最初はそもそもhostsファイルって何?というところから説明していきます。

例えば「https:、、aprico-media、com、」など通常URLをブラウザに入れるとそのドメイン(ここではaprico-media、com)に紐づくIPアドレスを有しているサーバーにリクエストが送られます。

DNSサーバーでの名前解決

図にするとこのような形となります。はじめに①でDNSサーバーに対してドメイン情報のIPアドレスを問い合わせします。

②で結果が返ってきて、無事にIPアドレスが分かったため③でアクセスを試みます。

hostsファイルでの名前解決

一方でパソコン内部にあるhostsファイルを使用すると、DNSに問い合わせるする前に、パソコンのhostsファイルに①で問い合わせをし、結果が②で返るためDNSサーバーへの問い合わせがありません。

要するにドメインIPアドレスの紐づけの管理はDNSサーバーが管理していますが、自身のMacのhostsファイルにドメインIPアドレスの紐づけを設定しておくと、DNSサーバーの設定よりもローカルのMacのhostsファイルの紐づけが優先されます。

hostsファイルはDNSサーバーと同じくドメインIPアドレスの紐づけを行いますが、ローカル環境限定でIPアドレスドメインの紐付けを上書きする役割を持ちます。

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

f:id:rick1208:20200618023147p:plain

それではMacでhostsファイルの設定を書き換える方法をご説明していきます。

hostsファイルがある場所

f:id:rick1208:20200617125603p:plain
まず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

ターミナルを使用して書き換える

f:id:rick1208:20200617120440p:plain
ターミナルを使用してhostsファイルを設定する方法を説明していきます。viを使用しての書き換えの方法となりますので、viの操作が苦手という人は次のパートのテキストエディットやアプリを使った書き換え方法を参照下さい。

ではまず最初はMacのターミナルを立ち上げましょう。

ターミナルLaunchpadを開き、その他からターミナルを選びて起動させましょう。
f:id:rick1208:20200618164854p:plain

ターミナルが立ち上がったら以下のコマンドを記入してviでhostsファイルを開きましょう。

hostsファイルはrootユーザーにしか書き込み権限がないために、sudoをつけてviを起動しています。sudoをつけてますので、パスワードを聞かれますのでご注意下さい。

sudo vi /etc/hosts


あとはviの操作でIPアドレスドメインの情報をセットで記入して、最後に保存してviを終了しましょう。

以上でターミナルを使用してのhostsファイルの設定は終了です。
f:id:rick1208:20200618164929p:plain

テキストエディットを使用して書き換える

f:id:rick1208:20200617120418p:plain
viやターミナル上の操作が苦手だという人はテキストエディットなどのテキスト編集のアプリケーションを使用してのhostsファイルの設定がおススメです。

Finderを立ち上げ「Command + Shift + G」で「フォルダの場所を記入」の機能を立ち上げましょう。

そこで/etc/hostsを記入して、移動しましょう。
f:id:rick1208:20200618165026p:plain
するとhostsファイルが保存されているetcフォルダが開き、hostsファイルが見つかると思います。

hostsファイルを編集

権限の問題で直接編集可能でせんので、1回ダウンロードフォルダやデスクトップにそのファイルのコピーを作成しましょう。
f:id:rick1208:20200618165101p:plain
コピーしたhostsファイルを右クリックでテキストエディットで開きましょう。
f:id:rick1208:20200618165107p:plain
テキストエディットで追加するIPアドレスドメインのセットを記述し、保存をしましょう。
f:id:rick1208:20200618165115p:plain

hostsファイルを反映

あとはオリジナルのhostsファイルがあるetcフォルダに対して、コピー&編集したhostsファイルをペーストます。

上書きするときにユーザー名とパスワードの記入が求められます。正しい情報を記入すれば、無事にhostsファイルが上書きされます。
f:id:rick1208:20200618165128p:plain

アプリを使用して書き換える

最後にアプリを使用してhostsファイルを書き換える方法をご解説します。ここでは「Hosts、prefpane」というアプリをご解説します。
f:id:rick1208:20200618165156p:plain

ダウンロード

Hosts、prefpaneはhostsファイルをアプリケーション内で追加&消去、有効・無効を切り替えられるアプリです。

ダウンロードは下記のリンクから行えます。
PermanentMarkers

アプリを使う

インストールが終了すると、システム環境設定にHostsというアイコンが増えるかと思います。

こちらのアイコンを押して、Hosts、prefpaneを立ち上げましょう。
f:id:rick1208:20200618165249p:plain
テキストエディットなどでテキスト編集しなくてもアプリを使用して管理が可能なので、テキスト編集に慣れていない方にもおススメの方法です。
f:id:rick1208:20200618165253p:plain

hostsファイルの設定が反映されない場合

f:id:rick1208:20200617120015p:plain
hostsファイルを編集しても中々設定が上書きされていないことがあります。その場合は以下を気を付けて見てみましょう。

hostsの設定情報があっているか

hostsファイルに設定した情報が本当にあっているか、またアプリを使用している場合はあまり意識することがないところかと思いますが、改行コードなどはutf-8のLFになっているかなど文法の問題をチェックしてみましょう。

DNSのキャッシュをクリアしてみる

f:id:rick1208:20200617101750p:plain
以下のコマンドでDNSのキャッシュをクリア可能です。反映されない場合はターミナル上で1回試してみましょう。

sudo killall -HUP mDNSResponder

そもそもどうやって反映されているか試しているのか

f:id:rick1208:20200617101659p:plain
hostsファイルが効いているかどうかをどうやって試しているかも関係してきます。というのもコマンドによってはhostsファイルを参照しないものがあります。

例えばコマンドのdigやnslookupはhostsファイルを参照せずに、DNSサーバーの情報を見に行きますので、hostsファイルの内容は無視されます。

pingやブラウザでドメインをたたいてみて、hostsファイルの情報が適用されているか試してみましょう。

まとめ

f:id:rick1208:20200617045437p:plain
Macでhostsファイルを設定する方法をまとめました。またhostsファイルが反映されない場合の対処や見るべきポイントについてもあわせてまとめています。

hostsファイルはあまり編集する機会がないかもしれませんが、だからこそ、どうやってやるのか毎回調べる事が多い設定なのかと個人的には思っています。

今回の情報がちょっとでも役立てば幸いです。