インターネット契約って大変だ!

概要

あなたはISPの従業員です。お客さんと契約し、お客さんの自宅にインターネット回線を提供します。
このISPはPPPoEではなくIPoE方式で接続します。
また通信はIPv6のみで行い、IPv4は使わないません。
IPv6アドレスはDHCPv6 Prefix delegationで降ってきます。

ところが、お客さんかISPのどちらかの設定ミスで、お客さんに正しくIPアドレスが割り振られないようです。

あなたはなんとかしてIPアドレスが割り振られるように直さないといけません。

問題環境

  • お客さんの自宅にはクライアント機器(client)があります
  • ISPにはエッジルーターがあり、ISP内部ネットワークと繋がっています。お客さんとも繋がっています。

前提条件・注意事項

  • client-router間の接続を、DHCPv6 PDとRA+SLAACを利用した接続方法から変更しないでください。
  • できて間もないISPなため、お客さんはまだ一人しかいません。そのため必要であれば機器に割り当てるIPアドレス帯やIPアドレスを自由かつ大幅に変更しても構いません。
  • ICTSCの仕様上、 実際のIPv6インターネットを調達できなかったため初期状態以下のように擬似的にインターネットを再現しています。 先述したようにこれは変更しても構いません。
    • 擬似インターネット空間: 2001:db8::/32
    • 今回舞台となるISP用の空間: 2001:db8:0070::/32
    • クライアント用空間: 2001:db8:0070:2000::/52
      • クライアント1: 2001:db8:0070:2100::/56
      • クライアント2: 2001:db8:0070:2200::/56
      • クライアントn: 2001:db8:0070:2n00::/56
    • ISP内部ネットワーク用の空間: fd9b:b0bc:3e87:e000::/52
  • IPv6インターネットを用意できなかったので、実際には存在しないですがrouterのeth0より先にはプロバイダのネットワークが、またさらにその先にはインターネットが存在すると想定してください。
    • そのため、クライアントがrouterやインターネットに疎通できることを、routerのeth1に割り当てられたアドレスに疎通できることと見做しています。
  • 回答する際には、設定したコマンドだけではなく「なぜ動かなかったのか」の原因も究明し言及してください。
  • vyosの仕様上、DHCPv6 PDの使用時に委譲したプレフィックスのルートがルーターに注入されないバグがあります。それは仕様のため問題とは関係ありません。

初期状態

clientのeth1に、ルーターがRA+SLAACしているアドレスが自動設定されない

終了状態

clientのeth1に、ルーターがRA+SLAACしているアドレスが自動設定される

解説

この問題は、DHCPv6 PD の問題に見せかけた RA 問題でした。
まず、ISP側のルーターには初期状態で以下のような設定が入っています。

set interfaces ethernet eth1 address 'fd9b:b0bc:3e87:e000::1/64'
set service router-advert interface eth1 prefix 2001:db8:0070:2000::/52
// 以下略

これにより、eth1(クライアントとの接続NIC)に割り当てられたアドレスが管理用のULAなのに対して、RAでは2001:db8:0070:2000::/52という奇妙なアドレスを広告しています。これによりRAが失敗しているので、解決方法としてはRAを修正します。

delete service router-advert interface eth1
set service router-advert interface eth1 prefix ::/64

別解

アドレスを変更しても良い、という断りがあったため、ISP-クライアント間のネットワークで扱うアドレスをGUAに変更する場合も解答としてみなしました。

delete interfaces ethernet eth1 address 'fd9b:b0bc:3e87:e000::1/64'
set interfaces ethernet eth1 address '2001:db8:0070:1000::1/64'
set service router-advert interface eth1 prefix 2001:db8:0070:1000::/64

またこの場合、RAだけ変更してもeth1のアドレスを変更していない場合は、RA自体は飛びLLAでのルーティングはできますが、ルーターがGUAを使ってクライアントに疎通できない(GUAに対する経路が入らない)ため部分点としています。

補足

  • GUA: グローバルユニキャストアドレス
  • ULA: ユニークローカルアドレス
  • LLA: リンクローカルアドレス
  • DHCPv6 PD: DHCPv6 Prefix Delegation

総評

DHCPv6 PDのサーバー側を触ったことがないと、つい移譲するアドレスと移譲に扱うネットワークのアドレスを混同しがちなので、二つのアドレスは異なるサブネットでも良い、と気づけるかがポイントでした。

DHCPv6 PDのクライアントやプロキシーは、自宅ラックをNTTのNGNなどに接続する際によく使いますが、サーバーとしての設定をしたことがある人はおそらく少ないと思います。
それにもかかわらず、粘り強く問題を解き見事正解の解答を導き出したチームが複数おり、作問者として大変嬉く思います。