お金をかけずにサーバーの勉強をしよう

127.0.0.1 と 0.0.0.0 の話

2022年7月30日

メニューへ戻る

OSをインストールした後、ミドルウェアのお勉強であれ開発の練習であれ、何かとサーバープログラムをインストールすることになると思います。

それはデータベースであったり WEBサーバーであったりするのですが、1つのOS内で全て賄っている場合に学習する機会を失っているのが、0.0.0.0という特殊なIPアドレスのこと。

これからサーバーアプリをインストールする時や、サーバープログラムを立ち上げる時に関係する話なので、事前に押さえておきましょう。


0.0.0.0 というIPアドレスですが、定義は複数ありまして、そのうちサーバープログラムの設定で 0.0.0.0を使う場合IP全部ってことなんですが、ネットワークをやる前の人にはピンとこないと思いますので、以下書きます。

パソコンでお勉強するに、皆さんの環境はこういうハードウェア構成なのが一般的だと思います。
図 1
※192.168.1.100はサブロウ家での例です。

※以下、分かり易いよう、ネットワークIF=IPアドレスのような書き方をしますが、そうじゃないだろうという人はそもそもここで引っ掛からないと思います。
ご容赦下さい。

この図からすると、この世の中には、192.168.1.100というIPアドレスしかない、と見えますが、実は必ずもう一つあります。

それが 127.0.0.1 という特殊なIPアドレスです。

これはループバックインターフェイスと呼ばれるもので、無線LANや有線LANのような実際に存在するハードウェアではなく、OS内にソフトウェアで作られているものです。

こんな感じ。
図 2

それでですね、サーバープログラムっていうのは立ち上げ時に複数ある IPのうちどの IPで公開する?ってのを決めるお作法があります。

HTTPは80番って事を知ってる人は多いのですが、どのIPで?ってことは修めてない人が意外と多いです。

このお作法なんですけど、多分セキュリティのためと思うのですが、サーバープログラムのデフォルトが 127.0.0.1 になってるものが結構あります。

WEBサーバープログラムを例にするとこんな感じなんですよ。
図 3

この設定で何が起きるのかと言うと、こんな感じ。
図 4

PCの中だけで作業をしている時は良いんですが、図のようにスマホからも見たいとか、他のOSのブラウザからもテストしたい、そんな時に問題になってしまいます。

ネットワーク上のクライアントからアクセスされるのが仕事のサーバープログラムがこれでは困りますから、127.0.0.1ってのはあくまでデフォルト値で、当然この設定は変えることができるようになっています。

その設定はどこにあるかはソフトごとに違うので特定はできませんが、英語なら「bind address」とかその辺りです。

設定ファイルがどれか分かるなら、127.0.0.1 で検索してみても良いと思います。

「よ〜し、パパ 192.168.1.100 に設定しちゃうぞ!」ということで、こんな感じになります。
図 5

これでとりあえず事足りはするんですが、DHCPで割り当てられているIPが変わってしまった場合はまた設定し直しです。

そこで 0.0.0.0 の登場となります。
これで持っているIP(v4)のアドレス全部ってことになりますので、こうなります。
図 6

0.0.0.0を使うと更にはこんな構成でも繋がります。
(お勉強でこういうのをやるかどうかは別として、サーバーでは時としてこういう設計もあります。)
図 7

以上です。

これだけの話なんですが、サーバープログラムの IPアドレスを設定するってのはこういうことで、マニュアルの設定例に登場してくる 127.0.0.1 と 0.0.0.0 ってこういう意味ですよというお話でした。

なお、localhostは 127.0.0.1 を指しているのが普通なので覚えておきましょう。

ここは意外と盲点でして、プログラマ出身の人が家で構築したときと同じ手順でクラウドに構築したのに繋がらない…というケースではこれが原因なこともあります。

それでは、いつでも繋げる楽しいサーバーライフを!