Logo
x logo

SLAAC

IPv6 Stateless Address Autoconfiguration (SLAAC)

1. 概要

1.1 プロトコルの正式名称(略称)と発案された背景

正式名称:IPv6 Stateless Address Autoconfiguration 略称:SLAAC

発案された背景:IPv4のアドレス枯渇問題と、より柔軟で自動化されたネットワーク設定の必要性に対応するため、IPv6ではホストが自身でアドレスを構成するメカニズムが導入されました。SLAACはその主要な要素の一つであり、DHCPv6などのステートフルな設定メカニズムと対比されます。

1.2 主な用途、目的、解決する課題

用途:

  • IPv6ネットワークにおけるホストの自動アドレス設定
  • ネットワーク設定の手間を削減し、プラグアンドプレイ環境を実現
  • グローバルユニキャストアドレスとリンクローカルアドレスの自動構成
  • ルーターの存在と設定パラメータの自動検出

目的:

  • ホストがネットワーク管理者の介入なしに、自身のアドレスを設定できるようにする
  • アドレス設定に必要な情報をルーターから自動的に取得する
  • ネットワーク構成の変更に対して、柔軟に対応できるようにする
  • アドレスの重複を検出し、回避する

解決する課題:

  • 手動によるアドレス設定の手間を削減
  • IPアドレスの重複によるネットワーク障害を防止
  • 大規模ネットワークにおけるアドレス管理の複雑さを軽減
  • モバイルデバイスやIoTデバイスの接続を容易にする

1.3 OSI参照モデルでの位置づけと他のプロトコルとの関係

SLAACはOSI参照モデルの**ネットワーク層(第3層)**に位置します。

関係するプロトコル:

  • ICMPv6 (Internet Control Message Protocol Version 6): SLAACの主要なメッセージ(ルーター要請/ルーター広告)はICMPv6で伝送されます。
  • IPv6 (Internet Protocol Version 6): SLAACはIPv6アドレスの自動設定をサポートします。
  • Neighbor Discovery Protocol (NDP): SLAACはNDPの一部として機能し、アドレス重複検出やルーターの検出に使用されます。
  • DHCPv6 (Dynamic Host Configuration Protocol for IPv6): SLAACはDHCPv6と組み合わせて使用される場合があります。SLAACのみでは設定できないパラメータをDHCPv6で取得できます。
  • MACアドレス: SLAACはEUI-64形式のインターフェースIDを生成する際に使用されます。

1.4 主要な特徴と利点

特徴:

  • ステートレス: サーバー側でアドレス割り当て状態を管理する必要がないため、管理が容易
  • 自動構成: ホストはネットワークに接続するだけで自動的にアドレスを設定できる
  • プラグアンドプレイ: ホストは特別な設定なしにネットワークに接続できる
  • 柔軟性: ネットワーク構成の変化に動的に対応できる
  • 拡張性: 大規模ネットワークにも対応可能
  • 重複検出: 同じアドレスが複数ホストに割り当てられることを防ぐ

利点:

  • ネットワーク管理者の負担軽減
  • 設定ミスによるネットワーク障害の防止
  • ネットワーク展開の迅速化
  • 大規模ネットワークにおける運用コストの削減
  • IoTデバイスなど、管理者がいない環境での運用を容易にする

1.5 一般的な使用シナリオ

  • 家庭内ネットワークにおけるデバイスのアドレス自動設定
  • オフィスネットワークにおける従業員PCやプリンターのアドレス自動設定
  • IoTデバイスが接続されたネットワーク
  • モバイルネットワークにおけるデバイスのアドレス自動設定
  • クラウド環境における仮想マシンのアドレス自動設定
  • 一時的なネットワーク環境でのアドレス自動設定

2. プロトコルフロー

A) 基本パターン

シーケンス図
sequenceDiagram
    participant Host
    participant Router
    Host->>Router: Router Solicitation (RS) (Option)
    Router->>Host: Router Advertisement (RA)
    Host->>Host: Generate Interface ID (EUI-64 or other)
    Host->>Host: Construct IPv6 Address (Prefix from RA + Interface ID)
    Host->>Host: Duplicate Address Detection (DAD)
    Host->>Host: Address Configuration Complete
詳細な説明
  1. ルーター要請 (Router Solicitation, RS):

    • ホストはネットワークに接続した際、最初にルーターを探すために、リンクローカルマルチキャストアドレス ff02::2 宛にRSメッセージを送信します(オプション)。RSメッセージは必ずしも送信する必要はなく、RAメッセージが定期的にブロードキャストされるため、それを受信することでアドレス設定を行うことも可能です。
    • 目的: ルーターにRAメッセージを即時送信させることを要求。
    • 内容: ICMPv6 Type 133のメッセージ。送信元アドレスはリンクローカルアドレス、宛先アドレスはAll-Routers multicast address ff02::2
  2. ルーター広告 (Router Advertisement, RA):

    • ルーターは定期的に、またはRSメッセージを受信した場合、リンクローカルマルチキャストアドレス ff02::1 宛にRAメッセージを送信します。
    • 目的: ネットワークのプレフィックス、MTU、ホップリミット、その他SLAACに必要な情報をホストに通知。
    • 内容: ICMPv6 Type 134のメッセージ。送信元アドレスはルーターのリンクローカルアドレス、宛先アドレスはAll-Nodes multicast address ff02::1
      • 重要な情報:
        • Prefix Option: アドレスのプレフィックス情報 (例: 2001:db8:1::/64)。ホストはこれを使ってアドレスを生成。
        • Flags: アドレスの自動設定の可否(Managed address configurationフラグやOther configurationフラグなど)を設定。
        • MTU Option: ネットワークの最大転送単位。
        • Lifetime: アドレスの有効期間と優先期間。
        • Default router information: デフォルトルーターのアドレス。
  3. インターフェースIDの生成:

    • ホストは、自身のネットワークインターフェースのMACアドレスを基に、EUI-64形式またはその他の形式でインターフェースIDを生成します。
    • EUI-64: MACアドレス(48bit)の中央にFFFEを挿入し、7bit目を反転させて64bitのインターフェースIDを生成。プライバシー拡張のために、ランダムに生成されたインターフェースIDを使用することもできます。
  4. IPv6アドレスの構成:

    • ホストは、RAメッセージに含まれるプレフィックスと生成したインターフェースIDを組み合わせて、グローバルユニキャストアドレスを構成します。
    • リンクローカルアドレス (fe80::/10) は、インターフェースIDに基づいて自動的に生成されます。
  5. 重複アドレス検出 (DAD):

    • ホストは、生成したアドレスがネットワーク内で重複していないかを確認するために、DADを実行します。
    • DADは、マルチキャストアドレス ff02::1:ffXX:XXXX 宛に Neighbor Solicitation (NS) メッセージを送信することで行われます。
    • もし別ホストが同じアドレスを使用している場合、そのホストからNeighbor Advertisement (NA) メッセージが返信されることでアドレスの重複が検出されます。重複が検出された場合、アドレスの設定を中止するか別のIDを選択して再試行します。
  6. アドレス構成完了:

    • DADの結果、アドレスが重複していないことが確認されれば、ホストはそのアドレスを使用可能になります。
タイミング要件
  • RSメッセージの送信: ホストの起動直後またはネットワークに接続された直後。必須ではない。
  • RAメッセージの送信: ルーターは一定時間間隔で定期的に送信。RSメッセージを受信した場合には、即時に送信。
  • DAD: アドレスを設定する前に行う。アドレスが設定されるまでの間、DADを実行しているアドレスは「テンタティブ」な状態。

B) エラーハンドリングパターン

SLAACには、明示的なエラー応答や再送メカニズムはありません。ホストはRAメッセージを待機し、一定時間経過してもRAメッセージを受信できない場合は、DHCPv6など他のアドレス設定手段を試みる場合があります。エラーが発生した場合の対応は、OSの実装に依存します。

  • タイムアウト: ホストがRSを送信した後、一定時間RAメッセージを受信できない場合、RSの再送やDHCPv6など他の手段を試行します。
  • 重複アドレス検出: 重複アドレスが検出された場合、ホストはそのアドレスの使用を中止し、新しいアドレスを生成するか、手動でのアドレス設定を試みます。
  • RAの破棄: ホストは、RAメッセージの内容が矛盾していたり、期限切れになっている場合は、RAメッセージを破棄します。

C) 認証・認可パターン

SLAACには認証・認可のメカニズムは含まれていません。SLAACは、IPv6アドレスを自動設定するためのメカニズムにすぎないため、認証や認可はIPsecなどの上位レイヤーのプロトコルに委ねられます。

D) 特殊パターン

SLAACには、初期化/終了シーケンス、キープアライブメカニズム、バルク転送、マルチパーティ通信などの特別なパターンはありません。SLAACはステートレスなプロトコルであるため、これらの機能は上位レイヤーのプロトコルによって処理されます。

3. メッセージフォーマット

SLAACはICMPv6メッセージを使用して通信を行います。主なメッセージは、Router Solicitation (RS) と Router Advertisement (RA) です。

A) 制御メッセージ

1. Router Solicitation (RS)
フィールド名 サイズ(bit) 説明 条件
Type 8 ICMPv6 Type値 (133) 必須
Code 8 0 必須
Checksum 16 ICMPv6チェックサム 必須
Reserved 32 予約済、0に設定 必須
Option (Optional) 可変長 オプション。例えば、ソースリンク層アドレスなど。複数のオプションを追加することが可能。 オプション
2. Router Advertisement (RA)
フィールド名 サイズ(bit) 説明 条件
Type 8 ICMPv6 Type値 (134) 必須
Code 8 0 必須
Checksum 16 ICMPv6チェックサム 必須
Hop Limit 8 デフォルトホップリミット 必須
Flags 8 フラグ。Managed address configuration (M), Other configuration (O) フラグなど。 必須
Router Lifetime 16 ルーターの有効期間 必須
Reachable Time 32 隣接到達可能時間。NDPで使用。 必須
Retrans Timer 32 隣接再送タイマー。NDPで使用。 必須
Option (Optional) 可変長 オプション。例えば、Prefix Information、MTU、ソースリンク層アドレスなど。複数のオプションを追加することが可能。 オプション
  • Prefix Information Option

    フィールド名 サイズ(bit) 説明 条件
    Type 8 オプションタイプ(3) 必須
    Length 8 オプション長(8 octet単位) 必須
    Prefix Length 8 プレフィックスの長さ。例えば、/64。 必須
    Flags 8 フラグ。On-link (L), Autonomous address-configuration (A) など 必須
    Valid Lifetime 32 アドレスの有効期間 必須
    Preferred Lifetime 32 アドレスの優先期間 必須
    Reserved 32 予約済、0に設定 必須
    Prefix 128 IPv6プレフィックス 必須
  • MTU Option

    フィールド名 サイズ(bit) 説明 条件
    Type 8 オプションタイプ(5) 必須
    Length 8 オプション長(8 octet単位) 必須
    Reserved 16 予約済、0に設定 必須
    MTU 32 MTU値 必須
3. Neighbor Solicitation (NS)
フィールド名 サイズ(bit) 説明 条件
Type 8 ICMPv6 Type値 (135) 必須
Code 8 0 必須
Checksum 16 ICMPv6チェックサム 必須
Reserved 32 予約済、0に設定 必須
Target Address 128 検証対象のアドレス 必須
Option (Optional) 可変長 オプション。例えば、ソースリンク層アドレスなど。複数のオプションを追加することが可能。 オプション
4. Neighbor Advertisement (NA)
フィールド名 サイズ(bit) 説明 条件
Type 8 ICMPv6 Type値 (136) 必須
Code 8 0 必須
Checksum 16 ICMPv6チェックサム 必須
Flags 32 フラグ (R、S、O)。 必須
Target Address 128 ターゲットアドレス 必須
Option (Optional) 可変長 オプション。例えば、ターゲットリンク層アドレスなど。複数のオプションを追加することが可能。 オプション

B) データメッセージ

SLAACはデータメッセージを直接送受信しません。データの転送は、IPv6自体が行います。

C) 状態管理メッセージ

SLAACはステートレスであるため、明示的な状態管理メッセージはありません。ルーターはRAメッセージを定期的にブロードキャストすることで、アドレスプレフィックスや各種パラメータをホストに通知します。ホストはこれらの情報を元に自身の状態を管理します。

特記事項
  • 必須/オプションフィールド: 各メッセージのフィールドは、表に示した条件によって必須またはオプションとなります。
  • フィールド間の依存関係: フィールド間の依存関係は、ICMPv6の仕様に従います。
  • 値の制約条件: ICMPv6の仕様およびRFCで定義された制約に従います。
  • 拡張可能な部分の説明: オプションフィールドによって、将来の拡張に対応できるように設計されています。

4. 状態遷移

SLAACはステートレスなプロトコルであるため、明確な状態遷移図はありません。しかし、ホストがIPv6アドレスを取得して使用可能になるまでの概念的な状態遷移は以下のようになります。

  1. 初期状態:

    • ホストがネットワークに接続された直後の状態。
    • まだIPv6アドレスを持っていない。
    • リンクローカルアドレスのみ利用可能。
  2. ルーター探索状態:

    • ホストはRSメッセージを送信し、RAメッセージを待機する状態。
    • RAを受信するまで、RSを再送することがある。
  3. アドレス構成状態:

    • ホストはRAメッセージからプレフィックスを受け取り、インターフェースIDを生成する状態。
    • 一時アドレスやプライベートアドレスなど、複数のアドレスを作成する場合もある。
  4. 重複アドレス検出(DAD)状態:

    • ホストが生成したIPv6アドレスが重複していないかを検証する状態。
    • DADが成功するまで、そのアドレスはテンタティブな状態となる。
  5. アドレス有効状態:

    • DADに成功し、重複がないことが確認できた状態。
    • ホストは、設定したアドレスで通信を開始できる。
    • RAのLifetimeに従い、アドレスが期限切れになった場合には、再度アドレス構成が必要となる。
各状態での動作
  • 初期状態:
    • RSメッセージを送信する(オプション)。
    • RAメッセージの受信を待機する。
  • ルーター探索状態:
    • RAメッセージを受信した場合、アドレス構成状態に遷移する。
    • タイムアウトした場合、RSメッセージを再送または他のアドレス設定手段を試みる。
  • アドレス構成状態:
    • Prefix OptionなどRAに含まれる情報をもとにグローバルユニキャストアドレスを生成する。
    • 生成されたアドレスを用いてDADを開始する。
  • 重複アドレス検出(DAD)状態:
    • 重複が検出されなかった場合、アドレス有効状態に遷移する。
    • 重複が検出された場合、アドレス構成状態に戻り、別のアドレスを構成する。
  • アドレス有効状態:
    • ネットワークとの通信が可能になる。
    • RAメッセージを定期的に監視し、プレフィックスなどの変更に対応する。
    • 有効期限が切れそうなアドレスを更新する。

5. パケットの種類と用途

SLAACで使用されるパケットは、ICMPv6メッセージとして定義されています。

A) コントロールパケット

  1. Router Solicitation (RS)

    • 目的: ルーターにRAメッセージを即時送信させる。
    • 使用シナリオ: ホストがネットワークに接続した際、最初にルーターを探す場合。
    • 特殊な処理要件: 特になし。
  2. Router Advertisement (RA)

    • 目的: ネットワークのプレフィックス、MTU、その他の設定情報をホストに通知する。
    • 使用シナリオ: ルーターが定期的に、またはRSメッセージに応答して送信する。
    • 特殊な処理要件: Prefix OptionやMTU Optionなどを含む場合がある。
  3. Neighbor Solicitation (NS)

    • 目的: アドレスの重複検出(DAD)や、隣接ノードのアドレス解決に使用。
    • 使用シナリオ: DADを実行する場合や、宛先MACアドレスを知りたい場合。
    • 特殊な処理要件: ターゲットアドレスが自身の場合、NAメッセージで応答する必要がある。
  4. Neighbor Advertisement (NA)

    • 目的: NSメッセージへの応答、または自ノードの情報提供に使用。
    • 使用シナリオ: NSメッセージへの応答や、ルーターの起動時や設定変更時に自身の情報をマルチキャストで告知する。
    • 特殊な処理要件: NAメッセージには、ターゲットのリンクレイヤーアドレスを含む場合がある。

B) データパケット

SLAACはデータパケットを直接使用しません。データパケットの転送は、IPv6によって行われます。

C) 管理パケット

SLAACには、監視や設定、デバッグ用の特別な管理パケットは定義されていません。SLAACはステートレスプロトコルであるため、これらの機能は上位レイヤーのプロトコルによって処理されます。

エラーコード

SLAACに関連するエラーコードは、ICMPv6のエラーメッセージに含まれる場合があります。

エラーコード(ICMPv6) 説明 対応策
1 Destination Unreachable ネットワークの接続性を確認。ルーティング設定やネットワーク機器の設定を確認。
2 Packet Too Big MTU設定を見直す。パスMTU検出メカニズムが正常に動作しているか確認。
3 Time Exceeded TTLの設定を見直す。ネットワークのループがないかを確認。
4 Parameter Problem IPv6パケットヘッダや拡張ヘッダの設定を確認。
128 Echo Request(Ping) Pingによる疎通確認に使用されるメッセージ。
129 Echo Reply(Ping response) Pingの応答に使用されるメッセージ。

6. プロトコルバリエーション

6.1 バージョンによる違い

SLAACはIPv6の一部であり、基本的には特定のバージョンによる違いはありません。ただし、RFC(Request for Comments)の改訂によって、一部の仕様や推奨事項が変更されることがあります。

  • RFC 4861 (Neighbor Discovery for IP version 6): NDPの基本仕様を規定。SLAACの根幹となるRouter AdvertisementやNeighbor Solicitation/Advertisementについて規定。
  • RFC 4862 (IPv6 Stateless Address Autoconfiguration): SLAACの詳細な仕様を規定。アドレス自動構成プロセスについて規定。
  • RFC 8981 (Temporary Address Extensions for Stateless Address Autoconfiguration): 一時アドレスの生成に関する仕様を規定。プライバシーを保護するための拡張機能。

6.2 実装環境による違い

  • オペレーティングシステム (OS): OSによって、SLAACの実装方法や設定オプションが異なる場合があります。
    • 例: Linuxでは、sysctlコマンドでカーネルパラメータを調整可能。Windowsでは、ネットワークアダプタの設定からSLAAC関連のオプションを調整。
  • 組み込みシステム: リソース制約のある組み込みシステムでは、SLAACを簡略化して実装する場合があります。
  • 仮想化環境: 仮想化環境では、仮想ネットワークインターフェースの設定によってSLAACの動作が影響を受ける場合があります。

6.3 セキュリティレベルによる違い

SLAAC自体は認証や暗号化の機能を提供していませんが、実装レベルで以下のセキュリティ対策を施すことがあります。

  • RAガード: 悪意のあるルーターからの不正なRAメッセージをフィルタリングする機能。
  • IPsec: SLAACで設定されたアドレスを用いてIPsecなどの上位レイヤーのプロトコルを利用し通信経路を暗号化する。
  • DADの強化: DADの強度を増し、重複アドレスを検出する可能性を高める。

6.4 最適化オプションによる違い

  • アドレス生成方法: EUI-64、ランダム生成、一時アドレスなど、アドレス生成方法によってプライバシーやセキュリティに影響を与える。
  • RA送信頻度: ルーターのRA送信頻度を調整することで、ネットワーク負荷とアドレス更新の速さのバランスを取る。
  • DADのタイムアウト: DADのタイムアウト時間を調整することで、アドレス設定時間とアドレス衝突の可能性のバランスを取る。

7. セキュリティ考慮事項

7.1 認証メカニズムの詳細

SLAACは認証機能を持たないため、基本的には認証メカニズムの実装は、上位レイヤーのプロトコルに委ねられます。 しかし、SLAACのメッセージを保護するための方法として、IPsecなどのセキュリティプロトコルと組み合わせて使用することが推奨されます。

7.2 暗号化要件と推奨アルゴリズム

SLAAC自体のメッセージは暗号化されません。暗号化は、上位レイヤーのプロトコルで実装する必要があります。

推奨される暗号化アルゴリズム:

  • IPsec (Internet Protocol Security): IPレベルで通信を暗号化し、認証やデータの完全性を保証。
  • TLS/SSL (Transport Layer Security/Secure Sockets Layer): アプリケーションレベルで通信を暗号化。

7.3 完全性保護の方法

ICMPv6は、メッセージのチェックサムによってパケットの完全性を保証します。 SLAACのメッセージもICMPv6で伝送されるため、ICMPv6のチェックサムで完全性が保護されます。

7.4 既知の攻撃手法と対策

  • 不正なRAメッセージ: 悪意のあるルーターが偽のRAメッセージを送信し、ホストを誤ったネットワーク構成に誘導する攻撃。
    • 対策: RAガードを実装し、信頼できるルーターからのRAメッセージのみを受け付ける。
  • DoS攻撃: 大量のRSメッセージを送信し、ルーターの負荷を増大させる攻撃。
    • 対策: RSメッセージのレート制限を実施し、異常なトラフィックをフィルタリングする。
  • DAD攻撃: 重複アドレスを検出し、正当なホストのネットワーク接続を妨害する攻撃。
    • 対策: DADの試行回数やタイムアウト時間を調整し、過剰な重複検出を避ける。
  • 中間者攻撃: ネットワーク上でパケットを傍受・改ざんする攻撃。
    • 対策: IPsecなどの暗号化プロトコルを使用し、通信経路を保護する。

7.5 セキュリティ監査の要件

  • ルーターの設定監査: 信頼できるルーターの設定が正しく行われているかを確認する。
  • RAガードの有効性監査: RAガードが正しく動作し、不正なRAメッセージをブロックしているかを確認する。
  • ネットワーク監視: 異常なトラフィックやセキュリティイベントを検出し、適切な対応を行う。

7.6 セッション管理の方法

SLAACはステートレスプロトコルであるため、セッション管理のメカニズムは持っていません。 セッション管理が必要な場合は、上位レイヤーのプロトコルで行う必要があります。

7.7 鍵管理に関する考慮事項

SLAAC自体は鍵管理を必要としません。ただし、IPsecを使用する場合には、IPsecの鍵管理メカニズムを実装する必要があります。

8. 標準化と仕様

8.1 関連するRFC番号と概要

  • RFC 4861: Neighbor Discovery for IP version 6
    • NDPの基本仕様を規定。ルーター広告や隣接探索のプロセスを定義。
  • RFC 4862: IPv6 Stateless Address Autoconfiguration
    • SLAACの基本仕様を規定。アドレス自動構成のメカニズムを定義。
  • RFC 8981: Temporary Address Extensions for Stateless Address Autoconfiguration
    • 一時アドレス(プライバシー拡張)に関する仕様を規定。プライバシー保護のためのメカニズムを追加。

8.2 標準化団体と策定プロセス

  • IETF (Internet Engineering Task Force): インターネット技術の標準化を行う組織。SLAACの仕様はIETFによって策定されました。
  • 策定プロセス: RFCとして文書化され、インターネット標準として公開。

8.3 仕様書の構成と主要な章の説明

RFC 4861およびRFC 4862の主要な構成:

  1. Introduction: プロトコルの概要と背景。
  2. Terminology: プロトコルで使用される用語の定義。
  3. Overview: プロトコルの全体的な動作の説明。
  4. Message Formats: メッセージフォーマットの詳細な仕様。
  5. Protocol Operation: プロトコルの動作手順の詳細な説明。
  6. Security Considerations: セキュリティに関する考慮事項。
  7. IANA Considerations: IANAに登録されるパラメータに関する情報。

8.4 バージョン間の主な違い

SLAAC自体には明確なバージョン管理はありませんが、RFCの改訂により、実装における推奨事項が変更されることがあります。また、プライバシー保護のための拡張機能(RFC 8981など)が追加されています。

8.5 将来の拡張性に関する規定

SLAACは、オプションフィールドを持つことによって拡張性を備えています。将来的には、新しいオプションの追加によって、新たな機能が追加される可能性があります。

8.6 準拠性要件

SLAACの実装は、RFC 4861およびRFC 4862などの関連するRFCに準拠する必要があります。RFCには、実装に必要な動作やパラメータが詳細に規定されています。

9. 実装時の注意点

9.1 一般的な実装パターン

  • ルーター: 定期的なRAメッセージのブロードキャスト。RSメッセージに対するRA応答処理。
  • ホスト: RSメッセージ送信(オプション)。RAメッセージの解析とアドレス構成。DADの実行。
  • ライブラリ: OSのネットワークスタックに組み込まれるか、サードパーティライブラリとして提供される。

9.2 スケーラビリティに関する考慮事項

  • RA送信頻度: ルーターのRA送信頻度を調整することで、ネットワーク負荷を制御できます。
  • マルチキャストアドレス: SLAACはマルチキャストアドレスを使用するため、ネットワークの規模が拡大すると、マルチキャストトラフィックが増加する可能性があります。

9.3 パフォーマンスチューニングのポイント

  • DADのタイムアウト: DADのタイムアウト時間を調整することで、アドレス設定時間を最適化できます。
  • アドレス生成方法: EUI-64の代わりに、ランダムなインターフェースIDを使用することで、プライバシーを保護できます。

9.4 デバッグとトラブルシューティング方法

  • パケットキャプチャ: Wiresharkなどのパケットキャプチャツールを使用して、RSメッセージ、RAメッセージ、NSメッセージ、NAメッセージなどのSLAAC関連のパケットを監視。
  • ログの確認: システムログに記録されたSLAAC関連の情報を確認。
  • コマンドラインツール: OSに付属のコマンドラインツールを使用して、IPv6アドレスの設定状態を確認。

9.5 テスト時の検証項目

  • アドレス自動構成のテスト: ホストが正常にIPv6アドレスを自動設定できるか。
  • 重複アドレス検出のテスト: DADが正常に機能し、重複アドレスが検出されるか。
  • RAメッセージのテスト: RAメッセージが正しく送信され、ホストが正しく情報を取得できるか。
  • セキュリティテスト: 不正なRAメッセージに対する保護対策が有効か。

9.6 他システムとの統合時の注意点

  • DHCPv6との連携: SLAACとDHCPv6を組み合わせて、より詳細な設定を行う場合があります。
  • IPsecとの連携: IPsecを併用する場合、鍵管理やポリシー設定を考慮する必要があります。

9.7 運用監視の推奨事項

  • ネットワークモニタリング: ネットワークトラフィックやSLAAC関連のイベントを監視。
  • システムログの監視: システムログに記録されたエラーや警告メッセージを監視。

10. 具体的な実装例

10.1 パケットダンプ例

以下は、tcpdumpコマンドでキャプチャしたSLAAC関連のパケットの例です。

Router Solicitation (RS) パケット

19:21:20.499646 IP6 fe80::a00:27ff:fec3:4208 > ff02::2: ICMP6, router solicitation, length 8
        ICMPv6, router solicitation, length 8
            Type: Router Solicitation (133)
            Code: 0
            Checksum: 0x5d74 [correct]
            Reserved: 0x00000000

Router Advertisement (RA) パケット

19:21:20.500522 IP6 fe80::223:23ff:fe00:1900 > ff02::1: ICMP6, router advertisement, length 72
        ICMPv6, router advertisement, length 72
            Type: Router Advertisement (134)
            Code: 0
            Checksum: 0x36e3 [correct]
            Hop Limit: 64
            Flags: 0x00 (managed address configuration not set, other configuration not set)
            Router Lifetime: 1800 seconds
            Reachable Time: 0 ms
            Retrans Timer: 0 ms
            Option (Prefix Information):
                Type: Prefix Information (3)
                Length: 4 (32 bytes)
                Prefix Length: 64
                Flags: 0x80 (autonomous address-configuration set, on-link set)
                Valid Lifetime: 2592000 seconds
                Preferred Lifetime: 604800 seconds
                Reserved: 0x00000000
                Prefix: 2001:db8:1::
            Option (MTU):
                Type: MTU (5)
                Length: 1 (8 bytes)
                Reserved: 0x0000
                MTU: 1500

10.2 Wiresharkキャプチャ例

WiresharkでキャプチャしたSLAAC関連のパケットは、以下のように表示されます。

  • Router Solicitation:
    • Info 列に、"Router Solicitation" と表示。
    • SourceDestination に、送信元と宛先IPv6アドレスが表示。
    • Protocol 列に、"ICMPv6" と表示。
    • パケットの詳細を開くと、ICMPv6の各フィールドの値が表示。
  • Router Advertisement:
    • Info 列に、"Router Advertisement" と表示。
    • SourceDestination に、送信元と宛先IPv6アドレスが表示。
    • Protocol 列に、"ICMPv6" と表示。
    • パケットの詳細を開くと、ICMPv6の各フィールドの値、Prefix Option、MTU Optionなどの情報が表示。

11. 補足情報

11.1 一般的なユースケース

  • ホームネットワーク: 家庭内のルーターがRAメッセージをブロードキャストし、PCやスマートフォンなどのデバイスが自動的にIPv6アドレスを取得。
  • 企業ネットワーク: 企業のルーターがRAメッセージをブロードキャストし、従業員のPCやプリンターなどのデバイスが自動的にIPv6アドレスを取得。
  • IoTネットワーク: IoTデバイスが接続されたネットワークで、デバイスが自動的にIPv6アドレスを取得し、クラウドサービスと通信。
  • データセンター: 仮想マシンやコンテナが自動的にIPv6アドレスを取得し、ネットワークを構成。

11.2 実装例

Linux環境での実装例

1. カーネルパラメータの設定

# IPv6 SLAACを有効化
sysctl -w net.ipv6.conf.all.autoconf=1

# プライバシー拡張を有効化
sysctl -w net.ipv6.conf.all.use_tempaddr=2

# DADの試行回数を設定
sysctl -w net.ipv6.conf.all.dad_transmits=1

2. ネットワークインターフェースの設定

# IPv6アドレスの確認
ip -6 addr show

# SLAACで設定されたアドレスの確認
ip -6 addr show scope global dynamic
ルーター側の実装例(radvd.conf)
interface eth0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 30;
    MaxRtrAdvInterval 100;
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvValidLifetime 2592000;
        AdvPreferredLifetime 604800;
    };
};

11.3 関連ツールやライブラリ

  • radvd: Linux用のRouter Advertisement Daemon
  • ndppd: IPv6 Proxy NDプロキシデーモン
  • ip6tables: IPv6パケットフィルタリングツール
  • Wireshark: ネットワークパケット解析ツール
  • tcpdump: パケットキャプチャツール

11.4 トラブルシューティングガイド

  1. アドレスが自動設定されない場合:

    • ルーターのRA設定を確認
    • ホストのSLAAC設定を確認
    • ファイアウォールの設定を確認
  2. 重複アドレスが検出される場合:

    • DADの設定を確認
    • ネットワーク内の他のホストの設定を確認
    • プライバシー拡張の設定を確認
  3. RAメッセージが受信できない場合:

    • ネットワーク接続を確認
    • マルチキャストの設定を確認
    • ファイアウォールの設定を確認

11.5 用語集

  • SLAAC: Stateless Address Autoconfiguration
  • RA: Router Advertisement
  • RS: Router Solicitation
  • DAD: Duplicate Address Detection
  • EUI-64: Extended Unique Identifier 64-bit
  • NDP: Neighbor Discovery Protocol
  • ICMPv6: Internet Control Message Protocol version 6

11.6 参考文献

  1. RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
  2. RFC 4862: IPv6 Stateless Address Autoconfiguration
  3. RFC 8981: Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6
  4. IPv6 Ready Logo Program Test Specification
  5. "Understanding IPv6," Joseph Davies, Microsoft Press
  6. "IPv6 Essentials," Silvia Hagen, O'Reilly Media

これらの参考文献は、SLAACの実装や運用に関する詳細な情報を提供しています。特にRFCは、プロトコルの正確な仕様を理解する上で重要な文書です。