APIPA(Automatic Private IP Addressing)とは
APIPA(Automatic Private IP Addressing)とは、ネットワーク機器が手動設定やDHCPサーバーに頼らず、自身で
IPアドレスを自動的に割り当てる技術です。特に、小規模なネットワークや、専門知識を持たないユーザーが利用する環境で役立ちます。この技術は、リンクローカルアドレスと呼ばれる、特定のネットワーク内でのみ有効な
IPアドレスを利用します。
リンクローカルアドレス
リンクローカルアドレスは、ローカルネットワーク内でのみ使用される
IPアドレスです。ルーターはリンクローカルアドレスを持つパケットを転送しないため、インターネットなどの外部ネットワークとは通信できません。主に、ネットワーク機器が自身の
IPアドレスを自動設定する際に使用されます。
リンクローカルアドレスの割り当てには、管理者が手動で設定する方法と、オペレーティングシステムが自動で設定する方法があります。ほとんどの場合、ステートレスアドレス自動設定という仕組みが使われます。これは、DHCPサーバーなどのアドレス割り当て機構がない場合や、何らかの理由で失敗した場合に利用されます。
IPv4では、リンクローカルアドレスとして、`169.254.0.0/16`のアドレスブロックが予約されています。具体的には、`169.254.1.0`から`169.254.254.255`までのアドレスが使用されます。
APIPAによる自動アドレス設定の仕組みは以下の通りです。
1. 機器は予約されたアドレス範囲からランダムに候補
IPアドレスを選択します。
2. 選択した
IPアドレスがネットワーク内で使用されていないかを確認するため、ARP (
Address Resolution Protocol) 要求を
ブロードキャストします。
3. もし、他の機器が同じ
IPアドレスを使用していれば、ARP応答が返ってきます。その場合、別の候補
IPアドレスをランダムに選択し、同じ手順を繰り返します。
4. ARP応答がない場合、その
IPアドレスは使用可能と判断され、機器に割り当てられます。
APIPAによってリンクローカルアドレスが割り当てられた後でも、グローバル
IPアドレスやプライベート
IPアドレスが利用可能になれば、そちらが優先的に使用されます。しかし、リンクローカルアドレスによる通信が突然途絶えるわけではありません。
マイクロソフトは、この自動アドレス設定技術をAPIPAと呼んでいます。AutoIPと呼ばれることもあります。
IPv6では、`fe80::/10`のアドレスブロックがリンクローカルアドレス用に予約されています。実際に使用されるのは、`fe80::/64`のプレフィックスを持つアドレスです。
IPv6では、
ネットワークインタフェースに必ずリンクローカルアドレスが必要であり、他のアドレスが割り当てられていても、リンクローカルアドレスは必須です。これは、
近隣探索プロトコルや
DHCPv6などの
IPv6ベースのプロトコルで必要とされるためです。
IPv6でのリンクローカルアドレスの自動設定は、ステートレスアドレス自動設定が利用されます。この際、インタフェースの
MACアドレスとルーティングプレフィックスからアドレスが構成されます。
IPv6では、ルーターや専用サーバーがネットワークに接続された機器に設定情報を通知し、それぞれの機器で
IPアドレスが設定されます。この時、各機器の設定をサーバーが管理・記録する必要がないため、ステートレスな運用が可能です。
重複アドレスの検出は、重複アドレス検出(DAD)アルゴリズムによって自動的に行われます。
APIPAの注意点
APIPAは便利な技術ですが、注意点もあります。例えば、
IPv4では、DHCPサーバーが存在する場合、APIPAが使用される前にDHCPでのアドレス取得が試みられます。このため、起動に時間がかかる場合があります。
また、リンクローカルアドレスとグローバルアドレスを同一ホストに同時に設定することは、異なるスコープでの複数アドレスの同時使用となり、推奨されていません。そのため、ホストはリンクローカルアドレスを割り当てる前に、DHCPサーバーの有無を確認します。
まとめ
APIPAは、ネットワークの設定を自動化する便利な技術です。特に、小規模ネットワークや、専門知識がないユーザーが利用する環境で有効です。
IPv4と
IPv6では、リンクローカルアドレスの仕組みに違いがありますが、どちらもネットワーク機器が自動で
IPアドレスを設定できるという点は共通しています。
関連項目
Zeroconf
プライベートネットワーク