リンクローカルアドレス
コンピュータネットワークにおいて、リンクローカルアドレス(英語: link-local address)とは、ホストが接続されているネットワークセグメント(リンク)またはブロードキャストドメイン内の通信に対してのみ有効なネットワークのアドレスである。
リンクローカルアドレスは、ネットワークセグメントを超えてユニークであることが保証されていない。そのため、ルーターはリンクローカルアドレスを使用したパケットを転送しない。
リンクローカルアドレスのみを持つプロトコル(イーサネットなど)では、ベンダーIDとシリアルIDで構成されたハードウェアアドレスがネットワーク機器の製造元によって割り当てられており、これはユニークである。
IPv4のリンクローカルアドレスは、アドレスブロック 169.254.0.0/16(CIDR表記)で定義されている。 IPv6では、ブロック fe80::/10 として定義され、プリフィックス fe80::/64 が割り当てられている[1]。
アドレス割当
[編集]リンクローカルアドレスは、管理者によって手動で割り当てられるほか、自動的に割り当てる方法もある。IPネットワークでは、ステートレスアドレス自動設定を使用して割り当てるのが一般的である。 IPv4では[2]、DHCPなどのアドレス構成の外部のステートフルなメカニズムが存在しない場合、または別のプライマリな設定が失敗した場合にのみ、IPアドレスをネットワークインタフェースに割り当てるためリンクローカルアドレスが使用される。IPv6では[3]、リンクローカルアドレスは必須であり、さまざまなプロトコル要素の内部機能で必要となる。
IPv4におけるリンクローカルアドレスの自動アドレス設定は、ほとんどの場合非決定論的であり、生成されるアドレスが予測できない。IPv6では通常、MACアドレスから一定に規則に基づいて自動的に生成される。
IPv4
[編集]RFC 3927 に基づき、Internet Engineering Task Force(IETF)はアドレスブロック 169.254.0.0/16 を予約している。このブロックのうち、169.254.1.0 - 169.254.254.255 をIPv4のリンクローカルアドレスに使用することができる。リンクローカルアドレスは、他のアドレス割り当てが利用できない時に、ホスト内部のステートレスなアドレス自動設定によってインターフェイスに割り当てられる[2]。
RFC 3927では、同じインタフェース上で異なるスコープのIPv4アドレス(例えばグローバルにルーティング可能なアドレスとリンクローカルアドレス)を同時に使用しないよう警告している[4]。そのため、ホストは、リンクローカルアドレスを割り当てる前に、ネットワーク上のDHCPサーバーを検索する。
アドレス自動設定処理では、ネットワークホストは予約された範囲内から候補アドレスをランダムに選択し、アドレス解決プロトコル(ARP)によってそのアドレスがネットワーク上で使用されていないことを確認する。ARPが応答を受信した場合、候補IPアドレスがすでに使用中なので新しい候補IPアドレスが作成され、処理が繰り返される。この処理は、ARPへの応答がなく、候補IPアドレスが利用可能であることが示されたときに終了する。
リンクローカルアドレスが割り当てられた後にグローバルにルーティング可能なアドレスまたはプライベートアドレスが使用可能になったら、新しい接続に使用するアドレスは、一般に新しいアドレスがリンクローカルアドレスよりも優先されるべきだが、リンクローカルアドレスによる通信は引き続き可能である[5]。
マイクロソフトは、このアドレス自動設定の方法を Automatic Private IP Addressing (APIPA)と呼んでいる[6]。これは、auto-IPと呼ばれることもある。
IPv6
[編集]IPv6では、アドレスブロック fe80::/10 がリンクローカルユニキャストアドレス用に予約されている[3]。サブネット上の標準の/64アドレッシングに準拠するため、実際のリンクローカルアドレスにはプレフィックス fe80::/64 が割り当てられる[7]。最上位の10ビットの後の54ビットはゼロでなければならない。
IPv4と異なり、IPv6ではIPv6プロトコルが有効になっている全てのネットワークインターフェイスに、ルーティング可能なアドレスが割り当てられていても、リンクローカルアドレスが必要である[8]。そのため、通常、IPv6ホストは、IPv6対応の各ネットワークインターフェイスに複数のIPv6アドレスが割り当てられる。リンクローカルアドレスは、近隣探索プロトコル(NDP)のIPv6サブレイヤ操作や、その他のIPv6ベースのプロトコル(DHCPv6など)に必要となる。
IPv6リンクローカルアドレスを使用してホストに接続するときは、正しいインターフェイスでパケットを送信できるように、ゾーンインデックスをアドレスに追加する必要がある。
IPv6では、アドレスは、自動(ステートレス)またはステートフル(手動)メカニズムによって割り当てられる。ステートレスアドレス自動設定は、RFC 4862 で規定されている近隣探索プロトコル(NDP)の一部として実行される[9]。アドレスは、ルーティングプレフィックスとインターフェイスのMACアドレスから生成される。
ルーターまたはサーバホストは、NDPルーティングプレフィックス広告によって、全てのリンク接続インタフェースに対し設定情報を通知し、ローカルまたはグローバルルーティングために受信インタフェースに追加のIPアドレスを割り当てる。このプロセスは、プレフィックスサーバがホストへの個々の割り当てを受信したりログに記録したりしないため、ステートレスと見なされる場合もある。アドレスの選択方法によって、アドレスの一意性が自動的に保証される。それは、RFC 4862 に基づいたMACアドレスでも、RFC 4941 に従ってランダム化されていても良い。自動重複アドレス検出アルゴリズムは、割り当てエラーを防止する。
MACアドレス
[編集]ローカルブロードキャストネットワーク(イーサネットなど)で使用されるMACアドレスは、リンクローカルアドレスである。そのようなデバイスは、製造業者によってハードウェア内のアドレスで設定される。ただし、ifconfigなどのOSのユーティリティを使用して、これらのアドレスを割り当てたり変更したりすることができる。これは、OSが仮想マシン環境で実行されている場合に不可欠である。
関連項目
[編集]- Zeroconf
- プライベートネットワーク
- ユニークローカルアドレス
- 媒体アクセス制御 (Media Access Control)
出典
[編集]- ^ https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.6
- ^ a b RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses, S. Cheshire, B. Aboba, E. Guttman, The Internet Society (May 2005)
- ^ a b RFC 4291,IP Version 6 Addressing Architecture, R. Hinden, S. Deering, The Internet Society (February 2006)
- ^ RFC 3927 section 1.9
- ^ RFC 3927 section 2.6.1
- ^ “APIPA”. Microsoft. 2010年8月2日閲覧。
- ^ RFC 4291, section 2.5.6. Link-Local IPv6 Unicast Addresses
- ^ RFC 4291, section 2.8. A Node's Required Addresses
- ^ RFC 4862, IPv6 Stateless Address Autoconfiguration, S. Thompson, T. Narten, T. Jinmei (September 2007)