やりたいこと
IPoEで払い出されたIPv6 Prefixを、Fortigateを使って下位ネットワークに委譲してみる。
過去記事:https://qiita.com/gaichi/items/e96bf638df642b2a9792
環境・材料
- NTT西日本フレッツ光ネクスト(ひかり電話付き)
- ISP契約(ぷらら+IPoEオプション)
- Fortigate60E(ver7.2)
- うまく動かなくてもくじけない心
説明
ひかり電話ありのフレッツ契約の場合、HGWの下部にDHCPv6-PDクライアントに対応するルータを突っ込むとサブネットの分割ができます(IPv6ではサブネットといわないかもしれないけれども)。ルータには、/60が割り振られるようです。この機能を活用して、Fortigateにプレフィックスを委譲し、FortigateのLAN側を/64で分割するよう試してみます。
なお、IPv4の設定とかDS-liteだとかMAP-Eとか、とにかくIPv4関係は今回は全く触れません。
設計
- 物理構成
HGW--(WAN2)Fortigate(Intenal)--下部LAN
設定
Prefix委譲ではない設定であればGUIだけでできるのですが,Prefix委譲の設定をやりきるためにはCLI設定が必要なようです。
- WAN2インタフェースの設定
WAN2にはHGWを接続します。HGWからDHCPv6-PDによってIPv6アドレスの割り当てと移譲の権限を取得する設定です。
config system interface
edit "wan2"
config ipv6
set ip6-allowaccess ping
set dhcp6-prefix-delegation enable
set autoconf enable
config dhcp6-iapd-list
edit 1
set prefix-hint ::/60
next
end
end
next
end
- Internalインタフェース(LAN側)の設定
config system interface
edit "internal"
config ipv6
set ip6-mode delegated
set ip6-allowaccess ping
set ip6-send-adv enable …①
set ip6-manage-flag enable
set ip6-other-flag enable
set ip6-upstream-interface "wan2" …②
set ip6-delegated-prefix-iaid 1
set ip6-subnet ::1:0:0:0:1/64 …③
config ip6-delegated-prefix-list
edit 1
set upstream-interface "wan2" …②
set subnet 0:0:0:1::/64 …④
set rdnss-service delegated
next
end
① インタフェースからRA(Router Advertisement)を送出する設定です。
② 上位のネットワークが存在するインタフェースの指定です。今回はWAN2が上位(HGW経由フレッツ経由ISP)なので、WAN2を設定します。
③ 下部のネットワーク側(LAN側)に設定するIPv6アドレスです。例えばHGWが2400:XXXX:YYYY:19D0::/60をFortigateに割り当てた場合、このインタフェースのプレフィックスはこの設定値である::1:0:0:0:1との論理和、つまり2400:XXXX:YYYY:19D1::1/64がInternalのIPv6アドレスになります。
④ サブネットのプレフィックスを設定します。③に合わせて、0:0:0:1::/64としておきます。(論理和の考え方も③と同じ)
- DHCPv6サーバの設定
RAに加えて、DHCPv6サーバの設定をします。DNSサーバのアドレスはこの設定が通知されます。(この設定はたぶんステートレス)
config system dhcp6 server
edit 1
set dns-service delegated
set subnet 0:0:0:1::/64
set interface "internal"
set upstream-interface "wan2"
set delegated-prefix-iaid 1
set ip-mode delegated
next
end
確認方法
- IPv6アドレスの確認
# diag ipv6 address list
表示されたIPv6アドレスに、HGWの管理画面からPingで試験すると吉。
- ネイバーキャッシュの確認方法
# diag ipv6 neighbor-cache list
- ルーティングテーブルの確認方法
# diag ipv6 route list
- DHCPv6のリース状態
exe dhcp6 lease-list
おまけ
LAN側に他のインタフェースがあれば,さらにPrefixの委譲ができます。
別のインタフェースで,③と④を次のように変更します。
理屈的には0:0:0:1::~0:0:0:F::まで使えるはずなので,15個委譲できるはずです(多分)。
…
set ip6-subnet ::2:0:0:0:1/64 …③
…
set subnet 0:0:0:2::/64 …④
…
備考
- 同一物理インタフェースでPPPoE(IPv4)を同居できません。設定は可能ですが,PPPoEセッション確立した段階で,IPv6アドレスを忘れてしまいます(期待通りに動きません)。なので,IPoE専用の物理ポートを準備してください。
- HGWの「DHCPv6サーバ払い出し状況」で見えるIPv6アドレスと「diag ipv6 address list」コマンドで出力されるアドレスが微妙に異なります。Forti自身は「diag ipv6 address list」で表示されるアドレスを認識しているので、Pingなどで試験するときはこのアドレスに当ててください。
- HGWがDHCPv6-PDで払い出したプレフィックスあてのルーティングは、HGW内にルーティングテーブルとして持つようです(でも確認する方法がない…)。
- DHCPv6-PDクライアントになる他のルータがHGW下部にいる場合、HGWから割り当てられるPrexfixが変わってしまうことがあります(というより、固定できないと思っておいたほうが良い)。その場合に、ホストがIPv6アドレスを複数(古いPrefixと新しいprefix)の二つを持ってしまい、不安定になることがあります。
- HGWのIPv6セキュリティ設定で、ICMPv6を「双方向」(IPoE→LAN、LAN→IPoE)で許可しておくと切り分けに便利です。ICMPv6だけなら、侵入されてもそんなに悪いことはできないでしょう、きっと。気になるようなら、動作確認後に切っておけばよいです。
独り言
- HGWのネイバーキャッシュを確認する方法がなくて不便。
- HGWのルーティングテーブルを確認する方法がなくて不便。
- HGW内の状態をもう少し見せてほしい…。
参考