Webの開発していて同一ネットワークからiPadで開発サーバーにアクセスしたいと思ったときに、0.0.0.0
と127.0.0.1
とlocalhostの違いで詰まったのでそのメモ。
全てIPアドレスなので何かしらの住所を表していることは大前提。
0.0.0.0
0.0.0.0
にはいくつかの用途がある。今回は3のbindアドレスの話。
1. 未指定のアドレス
まだ、自身に有効なIPアドレスが割り振られていない時に使用
詳細
- DHCPで動的にIPアドレスを割り当てる。DHCPクライアントはIPアドレスを要求する際に送信元のアドレスに
0.0.0.0/32
を使用する。
Catalyst スイッチまたは企業ネットワークにおける DHCP の説明とトラブルシューティング - Cisco Community
2. (ルーティングテーブル上で使用)デフォルトルート
ルーティングテーブル上のデフォルトルート。
詳細
ルーティングテーブル上にエントリ(転送先の情報)が存在しない場合のパケットの転送先として
0.0.0.0/0
と指定される(通常はインターネットの出口を指す)。※
0.0.0.0/0
はどんなアドレスとも合致する → 中継先不明を避けるデフォルト経路になる。
3. (サーバーの)bindアドレス
0.0.0.0
をバインドすると、システム上のすべてのネットワークインターフェースに対してListen状態になる。
※ bindとは
ApacheなどのHTTPサーバー起動時に、自身がListenするポートとIPアドレスを設定すること。bindによって、自身の特定のポートやポートとアドレスから入ってくるリクエストを受け付けられるようになる。
バインド - Apache HTTP サーバ バージョン 2.5
詳細(詳細は後でも説明)
- 特定のインターフェース(例:
127.0.0.1
や実際のIPアドレス)をバインドすると、そのインターフェース経由のみでアクセスが可能になる。 0.0.0.0
をバインドするとすべてのインターフェースに対してListen状態になり、127.0.0.1
や実際のIPアドレス(例:198.162.0.5
)無線や有線からアクセス可能になる。
127.0.0.1(ループバックアドレス)
特別なIPアドレス:ローカルループバックアドレス(Local Loopback Address)について | IT情報メディア「LIVRA」
IPアドレス空間のうち、127.xxx.xxx.xxx/8
は自分自身を表す特別なIPアドレスとして予約されている。
そのうち、127.0.0.0/8
はダイレクトブロードキャストのためのIPアドレス、127.255.255.255/8
はローカルブロードキャストのためのIPアドレスなので使えない。
結論、127.0.0.1/8
~ 127.255.255.244/8
の範囲ならどのIPアドレスもループバックアドレスに使用できる。
その中でも通常は127.0.0.1
をデフォルトに使用する。
自分自身とは?
開発するノートPCでサーバーを立てた(pnpm run dev
とか)時、そのノートPCのブラウザでアクセスする。その時はアクセスしたいWebサーバーは自分自身になる。この時にループバックアドレスが使われる。
localhost
これはループバックアドレスのエイリアス(別名)。
/etc/hosts
を見ると
127.0.0.1 localhost
と書かれている。
hostsファイルはOSの設定ファイルの一つで、ホスト名とIPアドレスの対応を管理するファイル。
hostsファイルの設定について | ブログ | 多言語翻訳と制作のアイ・ディー・エー株式会社
localhostは127.0.0.1
、すなわち自分自身を表している。
まとめ
0.0.0.0
と127.0.0.1
がよく分かった。この知識をもとにWebの開発していて同一ネットワークからIpadで開発サーバーにアクセスしよう!
次回へ続く…