IPv6ステートレスアドレス自動設定(SLAAC)スヌーピング
SLAAC スヌーピングについて
動的アドレス割り当ては、IPv4 に比べてアドレス空間が大幅に増加するため、IPv6 の重要な機能です。IPv6 では、静的アドレス指定に加えて、DHCPv6 (ステートフル) とステートレス アドレス自動構成 (SLAAC) の 2 つのオプションが提供されます。
SLAACは、ホストを手動で設定することなく、プラグアンドプレイのIP接続を提供することで、IPv6アドレス管理を簡素化します。SLAAC を使用すると、IPv6 クライアントは、ローカルで利用可能な情報と、近隣探索プロトコル (NDP) を介してルーターによってアドバタイズされる情報の組み合わせを使用して、独自のアドレスを生成できます。
NDP メッセージはセキュリティで保護されていないため、SLAAC はリンク層アドレスのスプーフィング(または偽造)を伴う攻撃を受けやすくなります。SLAAC スヌーピングを設定して、SLAAC を使用して IPv6 クライアントにネットワークへのアクセスを許可する前に検証する必要があります。
SLAAC プロセス
クライアントは、IPv6 対応インターフェイスのリンクローカル アドレスを生成することによって、自動構成を開始します。これは、アドバタイズされたリンクローカル プレフィックス(最初の 64 ビット)とインターフェイス識別子(最後の 64 ビット)を組み合わせることによって行われます。アドレスは、[fe80 (10 ビット) + 0 (54 ビット)] + interface ID (64 ビット) の形式で生成されます。
リンクローカル アドレスをインターフェイスに割り当てる前に、クライアントは重複アドレス検出 (DAD) を実行してアドレスを確認します。DAD は、新しいアドレス宛ての近隣要請メッセージを送信します。応答がある場合、アドレスは重複しており、プロセスは停止します。アドレスが一意の場合は、インターフェイスに割り当てられます。
グローバル アドレスを生成するために、クライアントはルーター要請メッセージを送信して、リンク上のすべてのルーターにルーター アドバタイズメント (RA) メッセージの送信を求めます。SLAAC をサポートできるルーターは、隣接ホストで使用するサブネット プレフィックスを含む RA を送信します。クライアントは、インターフェイス識別子をサブネットプレフィックスに追加してグローバルアドレスを形成し、DADを再度実行してその一意性を確認します。
SLAAC スヌーピング
SLAAC には、NDP と同じセキュリティ脆弱性が存在します。SLAAC スヌーピングを設定することで、動的アドレス割り当てに SLAAC を使用して、IPv6 クライアントからのトラフィックを保護することができます。NDP の詳細については、 IPv6 近隣探索インスペクションを参照してください。
SLAAC スヌーピングは、パケットをスヌーピングして IP-MAC アドレス バインディングのテーブルを作成するという点で、DHCP スヌーピングに似ています。SLAAC スヌーピングは、SLAAC プロセス中に交換される DAD パケットからアドレス情報を抽出して、SLAAC スヌーピング テーブルを構築します。このテーブルのアドレス バインディングは、SLAAC を使用して IPv6 クライアントから送信された NDP/IP パケットを検査および検証するために使用されます。
SLAAC スヌーピングの設定
SLAAC スヌーピングは VLAN 単位で有効化されます。デフォルトでは、SLAAC スヌーピングはすべての VLAN で無効になっています。
SLAAC を有効にするには、次のコマンドを使用します。
自動DADの設定
クライアント側でDADが無効になっている場合、またはトラフィックの輻輳が原因でDADパケットがドロップされた場合、SLAACスヌーピングはクライアントに代わって自動DADを実行します。クライアントが生成したアドレスは、DAD プロセスが完了するまで仮の状態です。
Auto-DAD は、クライアントが生成したアドレスをターゲットとしてネイバー要請メッセージを送信し、応答としてネイバーアドバタイズメントを待ちます。応答がある場合、アドレスは重複しており、クライアントに割り当てることはできません。応答がない場合は、アドレスが確認されます。
auto-DAD が応答を待機する時間は、デフォルトでは 1 秒で、再試行はありません。再試行回数と送信間隔の長さを設定できます。
MAC 移動中、最初のネイバー要請パケットは古いポートからフラッシュされる SLAAC エントリになり、2 番目のパケットでは新しいポートの SLAAC エントリが作成されます。
自動DAD パラメータの再試行回数を設定するには、次のコマンドを使用します。
自動DAD送信の間隔を設定するには、次のコマンドを使用します。
特定のインターフェイスの場合:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name auto-dad retrans-interval seconds
すべてのインターフェイス:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface all auto-dad retrans-interval seconds
リンクローカル アドレスの有効期限の設定
SLAAC によって学習されたリンクローカル アドレスの既定の有効期限は 1 日です。アドレスのリースが期限切れになると、スヌーピング デバイスはクライアント アドレスをターゲットとして DAD メッセージを送信します。クライアントがまだ到達可能な場合は、リースが更新されます。
有効期限の長さを設定するには、次のコマンドを使用します。
[edit] user@switch# set forwarding-options access-security slaac-snooping link-local expiry interval seconds
許可される DAD コンテンションの構成
インターフェイスのDAD競合(ネイバー要請またはネイバーアドバタイズメント)メッセージの最大数を設定できます。許可された時間間隔内に最大コンテンション数を超えた場合、インターフェイスは無効と見なされ、SLAAC スヌーピング テーブルはそのクライアントのバインディングで更新されません。
最大許容コンテンションは、複数の VLAN に属するインターフェイスを許可するために、インターフェイスごとに設定されます。
DAD 競合の最大数と許容される時間間隔を構成するには、次のコマンドを使用します。
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name max-allowed-contention count integer duration seconds
SLAAC スヌーピングの信頼できるインターフェイスとしての設定
インターフェイスを信頼済みとして設定すると、信頼できないインターフェイスの場合と同じプロセスを使用して、インターフェイスのバインディング エントリが SLAAC スヌーピング テーブルに追加されます。
信頼できないポートにすでに存在するIP/MACエントリを持つ信頼できるポートでDAD要求を受信すると、SLAACスヌーピングはユニキャストDADを信頼できないポートに送信して、ホストがライブかどうかを確認します。
ホストが信頼できないポートで NA メッセージで応答すると、既存のバインディング エントリのリース時間が更新されます。
信頼できないポートに応答 (NA) がない場合、対応するバインド エントリは削除されます。
トラステッド・ポートのエントリーが削除された場合、トラステッド・ポートのバインディングはすぐには作成されません。信頼できるポートがデータ トラフィックの送信を開始すると、NS メッセージが送信されます。その時点で、SLAAC スヌーピングは信頼できるポートに新しいバインディングを追加します。
信頼できるポートで受信したルーターアドバタイズパケットは、受信ポートのSLAACエントリーに関係なく、そのVLAN内のすべてのポートにフラッディングされます。
DADコンテンションの最大数は、信頼できるインターフェイスには適用されません。
インターフェイスをSLAACスヌーピングの信頼できるインターフェイスとして設定するには、次のコマンドを使用します。
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name mark-interface trusted
永続的SLAACスヌーピングバインディングの設定
DHCP スヌーピング データベース ファイル内の IP-MAC バインディングは永続的ではありません。スイッチを再起動すると、バインディングは失われます。SLAAC スヌーピング データベース ファイルの保存場所にローカル パス名またはリモート URL を指定することで、永続的バインディングを設定できます。
SLAAC スヌーピングの永続バインディングを設定するには、次のコマンドを使用します。
[edit] user@switch# set system processes slaac-snooping persistent-file (local-pathname | remote-url) write-interval seconds