ループバックアドレス: 127.0.0.0/8 の解説
127.0.0.0/8 ループバックアドレスレンジを解説。127.0.0.1 が localhost である理由と、/8 ブロック全体がループバック用に予約されている仕組みを理解しましょう。
127.0.0.0/8IPv4詳細な説明
ループバックアドレス: 127.0.0.0/8
127.0.0.0/8 アドレスブロックはループバック用に予約されており、トラフィックがローカルマシンから出ることはありません。このレンジで最も有名なアドレスは 127.0.0.1 で、localhost として広く知られています。
主要な情報
- レンジ: 127.0.0.0 から 127.255.255.255
- サブネットマスク: 255.0.0.0 (/8)
- アドレス総数: 16,777,216
- 最も一般的: 127.0.0.1 (localhost)
- ネットワーク上でルーティング可能: いいえ -- パケットはホストから出ない
ループバックの仕組み
プログラムが 127.0.0.0/8 内の任意のアドレスにパケットを送信すると:
- オペレーティングシステムのネットワークスタックがパケットをインターセプトする
- パケットは送信元マシンにルートバックされる
- 物理ネットワークインターフェースには到達しない
- ネットワーク上には一切現れない
これにより、常に利用可能な仮想ネットワークインターフェース (Linuxでは通常 lo、macOSでは lo0 と呼ばれる) が作成されます。
なぜ /8 全体が予約されているのか
127.0.0.1 が誰もが使うアドレスですが、/8 ブロック全体 (1,670万アドレス) が予約されています。これは無駄に思えるかもしれませんが:
- この予約は 1981年 (RFC 790) に遡り、当時はアドレス空間が無限に思えた
- 一部のアプリケーションはレンジ内の他のアドレスを使用する (例: 複数サービスのテスト用に 127.0.0.2)
- この空間を再利用する現代の提案も存在するが、互換性の懸念がある
一般的な用途
1. ローカル開発: 開発者が 127.0.0.1:3000 でWebサーバーを起動し、ネットワークに公開せずにアプリケーションをテストします。
2. サービス間通信: 同一マシン上の複数サービスが異なるループバックアドレス (127.0.0.1、127.0.0.2 など) を介して通信します。
3. ヘルスチェック: アプリケーションがヘルスチェックエンドポイントをlocalhostにバインドし、ローカルからのみアクセス可能にします。
4. DNS解決: Linuxの systemd-resolved が使用するシステムリゾルバ (127.0.0.53)。
セキュリティ
サービスを 0.0.0.0 ではなく 127.0.0.1 にバインドすることで、ローカルマシンからの接続のみを受け付けるようになり、基本的なアクセス制御の層を提供します。
IPv6 での相当アドレス
IPv6のループバックアドレスは ::1/128 で、ブロック全体ではなく単一のアドレスです。これはIPv6のより効率的なアドレス割り当て哲学を反映しています。
ユースケース
開発者が開発中にローカルAPIサーバーを 127.0.0.1:8080 で起動し、サービスが自分のマシンからのみアクセス可能で、ネットワークからはアクセスできないようにします。