ループバックインタフェース
特定の物理ポートから独立して装置内に作る論理インタフェースである。装置の識別や通信の送信元・宛先に使うIPアドレスを設定し、物理的な接続が変わっても同じアドレスを使い続けるために利用する。
イマシルちゃんの解説
ルータには複数の物理ポートがあるけれど、管理や通信で指定するIPアドレスは固定しておきたいことがあるよ。
そこで使うのが、装置内に作る論理インタフェースのループバックインタフェースなんだ。
特定の物理ポートに結び付かないので、ケーブルが1本切れても、そのアドレス自体は残るよ。
ただし、相手がそこまで届く通信経路は必要なんだ。
残った経路へ切り替えられれば、通信相手の設定を変えずに同じ装置へ接続できる。
「通る道」と「相手を指定するアドレス」を分けておけるのが便利だね。
この解説はわかりやすかったですか?
より深い解説
物理ポートから独立したアドレスを持つ
ネットワーク装置のインタフェースは、パケットの送受信やIPアドレスの設定を行う接点である。Ethernetの物理ポートに対応するもののほか、ソフトウェア上で作る論理インタフェースがある。ループバックインタフェースは後者の一種であり、特定の物理ポートのリンク状態に依存せずに利用できる。
例えば、ルータRのループバックインタフェースに10.255.0.1/32を設定する。このように設定したアドレスはループバックIPアドレスとも呼ばれる。/32は一つのIPv4アドレスを表すプレフィックス長であり、このアドレスだけを宛先とする経路をホストルートという。装置を個別に指定する用途では、このようにIPv4アドレスを/32で設定することが多い。
ループバックインタフェース自体にケーブルを接続する口はない。外部からそのIPアドレスへ送ったパケットは物理ポートを通って届き、受信した装置が自分宛てのパケットとして処理する。物理ポートのリンクダウンと切り離せる一方、装置の停止やインタフェースの管理上の無効化によって利用できなくなる場合はある。
迂回して同じ宛先へ届ける
送信側SからルータRの10.255.0.1へ、中継ルータA経由とB経由の2本の経路があるとする。図はOSPFで経路情報を交換し、通常はA経由を優先する構成の例である。矢印はSからRへの転送を示し、RからSへ返す経路も用意されているものとする。
Sのルーティングテーブルには、10.255.0.1へ向かうパケットをどのルータへ転送するかという情報が必要である。Rにアドレスを設定する作業と、他のルータに到達経路を知らせる作業は別である。 OSPFなどの動的ルーティングでは、ループバック宛ての経路が周囲へ伝わるように経路広告の対象へ含める。管理者が経路を手動で登録する静的ルーティングも使えるが、その場合も障害時に経路を切り替える条件を設計する必要がある。
AとRの間が断線し、障害の検出と経路の再計算を経てSのルーティングテーブルが更新されると、パケットはB経由でRへ届く。このとき宛先は10.255.0.1のままでよく、Rのループバックに設定したアドレスを変更する必要はない。経路情報の更新が行き渡り、安定した状態へ移ることを収束という。切替中にパケットが失われる場合もあるため、アドレスを維持できることと通信が無停止で続くことは区別する。
両方の経路を失った場合は、ループバックインタフェースが装置内で有効でも外部からは到達できない。冗長な経路とループバックを組み合わせる利点は、特定のポートやリンクの障害に影響されにくい宛先を持てることである。
識別に使う値と通信に使うアドレス
ループバックに設定したIPアドレスは、複数の用途で使える。ただし、同じ値を使っていても、その役割と必要な設定は異なる。
ルータIDは、OSPFなどがルータを区別するための32ビットの識別子である。IPv4アドレスと同じ表記を使い、ループバックのIPアドレスと同じ値を採用することがある。識別子へ値を設定するだけでは、その値を宛先とするIP経路は作られない。値は明示的にも設定でき、自動選択の規則や変更の反映時点は製品・プロトコルに依存する。物理ポートが切れるたびに直ちに変更されるとは限らず、OSPFでは変更の反映にプロセスの再起動が必要になる実装もある。
これに対し、同じAS内でBGPの経路情報を交換するiBGPの接続元として使う場合は、実際にそのIPアドレスでTCP接続を行う。両端で相手のループバックへ到達でき、送信元IPアドレスが相手の接続先設定と一致する必要がある。例えばJunos OSではlocal-addressで接続元のアドレスを指定する。物理経路が変わっても接続の両端のIPアドレスを維持できるが、経路切替に時間がかかるなどしてセッションが終了する場合はある。
VXLANでは、フレームをカプセル化・復元するトンネル終端であるVTEPのIPアドレスに利用する。送信側は自分の終端アドレスを外側IPヘッダーの送信元に使い、相手の終端アドレスを宛先にする。下位のIPネットワークであるアンダーレイに到達経路があれば、通る物理ポートが変わっても同じ終端アドレスを使える。Junos OSではvtep-source-interfaceでループバックを指定する。
このように、識別子の指定、BGPの接続元の指定、VXLANの終端の指定はそれぞれ目的が異なる。ループバックを作っただけで全ての用途に自動的に選ばれるとは限らず、各機能の設定と到達経路を確認する必要がある。
装置内だけで使うアドレスとの違い
OSやアプリケーションが自分自身と通信するときに使う127.0.0.1は、ホスト内で処理するためのループバックアドレスである。IPv4では127.0.0.0/8がこの用途に予約されており、ホストの外へ送るパケットのアドレスには使わない。
ルータに設定した10.255.0.1/32は、この予約範囲とは異なる。装置内に作ったインタフェースのアドレスとして設定し、IP経路を用意すれば他の装置から到達させられる。インタフェースの機能と、ホスト内だけで使う予約済みのアドレスは区別する。
例えば管理端末でpingを使って127.0.0.1へ確認の通信を送ると、通信先は管理端末自身になる。ルータRへの到達性を調べる場合は、Rの10.255.0.1を宛先にする。ただし応答がない原因には経路の障害やICMPを拒否するフィルタもあるため、無応答だけでRの停止と断定しない。監視結果の読み方は死活監視と合わせて理解するとよい。
参考資料
- Juniper Networks:Loopback Interfaces
- Cisco:Configuring Virtual Interfaces
- Juniper Networks:Configuring OSPF Areas
- Juniper Networks:local-address
- Juniper Networks:vtep-source-interface
- RFC 2328:OSPF Version 2(1.2節・付録C.1)
- RFC 1122:Requirements for Internet Hosts(3.2.1.3節)
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午後Ⅱ