[Linux] /etc/hosts でIPとホスト名を対応させる

[Linux] /etc/hosts でIPとホスト名を対応させる

/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.com93.184.216.34 に対応していることがわかります。

次に /etc/hostsexample.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サーバーを立ててホスト名で動作確認はできます。

参考URL

Linuxカテゴリの最新記事