/etc/hosts ファイル
/etc/hosts
ファイルはIPアドレスとホスト(ドメイン)名の対応を設定するためのファイルです。
ドメイン名からIPアドレスを求めるための変換、あるいはその逆の変換を行う機能はは本来 DNS が行う機能です。DNS が用意されていればこの /etc/hosts
は使わなくてもよいですが、小規模な検証環境などでいちいち DNS を用意するのが面倒な場合や難しい場合には /etc/hosts
ファイルにIPアドレスとドメイン名の対応を定義すると便利に使えます。
ping コマンドでドメイン名の対応するIPアドレスを確認
ping
コマンドを使用することで、指定したドメイン名をIPアドレスに変換を確認します。例えば example.com
のIPアドレスを確認してみます。
$ ping -4 example.com
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=46 time=171 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=46 time=169 ms
^C
--- example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 169.767/170.705/171.644/1.025 ms
-4
で IPv4 でネットワーク情報を表示できます。ここでは example.com
が 93.184.216.34
に対応していることがわかります。
次に /etc/hosts
で example.com
の対応を独自に定義してみます。
/etc/hosts ファイルにドメイン名とIPアドレスの対応を定義する
/etc/hosts
ファイルの末尾に、以下の1行を追加して保存します。
127.0.0.1 example.com
定義後、もう一度 ping
コマンドを実行してみます。
$ ping -4 example.com
PING example.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=128 time=0.136 ms
^C
--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.136/0.136/0.136/0.000 ms
/etc/hosts
で定義した 127.0.0.1
に対して ping していることがわかります。
このように /etc/hosts
にドメイン名とIPアドレスの対応を定義することで、DNSによる名前解決よりも優先した設定が可能です。
一部コマンドでは hosts ファイルの設定が効かない
host
コマンドはドメイン名(ホスト名)をIPアドレスに変換するコマンドですが、/etc/hosts
の設定内容が効かないようです。このように一部コマンドでは /etc/hosts
の設定内容が効かないものがあります。
# ping だと 127.0.0.1 になる
$ ping -4 example.com
PING example.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=128 time=0.132 ms
^C
--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.132/0.132/0.132/0.000 ms
# host コマンドだと 127.0.0.1 にならない
$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .
curl で /etc/hosts ファイルに設定したドメイン名でHTTPアクセスする
curl
コマンドは /etc/hosts
が効くのでローカルでWebサーバーを立ててホスト名で動作確認はできます。
コメントを書く