FortiGate の MAP-E / DS-Lite 設定|FortiOS バージョン別の対応と手順

  • URLをコピーしました!
目次

はじめに

PPPoE から IPoE(IPv4 over IPv6)への移行が進む中で、UTM として広く使われている FortiGate を IPoE 回線へ接続したいという相談が増えています。一方で「FortiGate は MAP-E に対応していない」という情報も残っており、自分の環境で利用できるのか判断に迷うケースがあります。

実際には、FortiGate の IPoE(MAP-E/DS-Lite)対応は FortiOS のバージョンによって大きく異なります。古いバージョンを前提とした情報をもとに「非対応」と判断すると、本来利用できる構成を見送ってしまう可能性があります。

IPoE と MAP-E/DS-Lite の仕組みそのものについては、関連記事『IPoE(MAP-E・DS-Lite)の仕組みと PPPoE との違い|方式の選び方と機種対応』で解説しています。本記事は FortiGate に絞り、バージョン別の対応状況と具体的な設定手順、運用上の制約に焦点を当てます。

この記事でわかること
  • FortiOS のバージョン別に見た MAP-E・DS-Lite の対応状況
  • 動的 IP の MAP-E を設定する vne-interfacevne-tunnel の構文差
  • DS-Lite(vne-tunnel の fixed-ip モード)で AFTR を指定する手順
  • IPoE 環境で必要となる MTU/MSS と IPv6 ファイアウォールの設定
  • ポート開放・VPN など FortiGate 利用時に直面しやすい制約

要点を先に整理すると、次のとおりです。FortiGate の MAP-E は FortiOS 7.4.x 系以降で動的 IP に対応し、設定階層は 7.4.x 系の config system vne-tunnel から、7.6.x 系以降(8.0 系を含む)の config system vne-interface へ移行しています。 DS-Lite は MAP-E と同じ VNE トンネル機能を fixed-ip モードで利用して構成し、AFTR の IPv6 アドレスを指定する点が FortiGate 特有の注意点となります。

FortiGate の IPoE 対応状況(FortiOS バージョン別)

FortiGate で IPoE を利用できるかどうかは、まず FortiOS のバージョンを確認することから始まります。DS-Lite は比較的古いバージョンから構成でき、MAP-E は固定 IP と動的 IP で対応時期が異なります。

MAP-E・DS-Lite の対応と FortiOS バージョン

下表は、FortiOS のメジャーバージョンごとの対応状況の目安です。マイナーバージョンによって挙動や構文が変わる場合があるため、導入前に利用するバージョンの Administration Guide で確認することを推奨します。

FortiOS バージョンDS-LiteMAP-E(固定 IP)MAP-E(動的 IP)MAP-E の設定階層
6.4.x設定可能設定可能非対応config system vne-tunnel
7.0.x設定可能設定可能限定的(要確認)config system vne-tunnel
7.2.x設定可能設定可能限定的(要確認)config system vne-tunnel
7.4.x設定可能設定可能対応config system vne-tunnel
7.6.x設定可能設定可能対応config system vne-interface
8.0.x設定可能設定可能対応config system vne-interface

動的 IP の MAP-E は 7.4.x 系以降で実用的に利用できると整理しています。7.0.x〜7.2.x 系における動的 IP の扱いは構成や時期によって差があるため、該当バージョンで利用する場合は公式ドキュメントでの確認を推奨します。

vne-interface と vne-tunnel の構文差

MAP-E を設定する際の入り口となるコマンド階層は、バージョンで分かれています。7.4.x 系までは config system vne-tunnel、7.6.x 系以降(8.0 系を含む)は config system vne-interface を使用します。インターネット上の設定例を流用する場合は、参照元のドキュメントが自分のバージョンと一致しているかを確認することが重要です。世代の異なる設定例をそのまま投入すると、コマンドが受け付けられない、あるいは想定どおり動作しない要因になります。

参考: Fortinet Document Library「MAP-E support」
“an IPv4-over-IPv6 (MAP-E) tunnel can be created between the FortiGate and the border relay”
(CE となる FortiGate と BR(border relay)の間に MAP-E トンネルを構築できる、と説明されています)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/322815/map-e-support

なお、DS-Lite については FortiOS に専用の「DS-Lite モード」は用意されておらず、MAP-E と同じ VNE トンネル機能を fixed-ip モードで利用して構成します。MAP-E のようなルール取得の仕組みは使わず、AFTR(プロバイダ側の集約装置)の IPv6 アドレスを指定する点が、設定上の分かれ目となります。

事前準備(IPv6 IPoE の有効化と前提設定)

MAP-E でも DS-Lite でも、最初に必要となるのが WAN 側インターフェースでの IPv6 IPoE の有効化です。FortiGate は RA(Router Advertisement)または DHCPv6-PD で IPv6 プレフィックスを取得し、その上に IPv4 over IPv6 のトンネルを構築します。

IPv6 プレフィックスの取得と unique-autoconf-addr

WAN 側インターフェース(ここでは wan1)の IPv6 設定例です。RA でプレフィックスを受け取る構成では、次の 3 つの設定が基本となります。

config system interface
    edit "wan1"
        config ipv6
            set autoconf enable
            set unique-autoconf-addr enable
            set interface-identifier ::6f:6c1f:3400:0
        end
    next
end

それぞれの役割は次のとおりです。autoconf enable は RA からのプレフィックス自動取得を有効化します。unique-autoconf-addr enable は、プロバイダ側でプレフィックスが変更された際に追従するための設定で、既定では無効のため明示的に有効化することを推奨します。interface-identifier は、生成する IPv6 アドレスの下位 64 ビットを固定するための識別子です。

参考: Fortinet Document Library「MAP-E support」(interface-identifier の挙動)
指定した interface-identifier の下位 64 ビットが保持され、IPv6 ルーターから受け取ったプレフィックスと結合してインターフェースの IPv6 アドレスが生成される、と説明されています。
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/322815/map-e-support

なお、フレッツ光クロスのように DHCPv6-PD でプレフィックスを取得する環境でも MAP-E は動作します。その場合は DHCPv6-PD 向けの設定が別途必要となるため、利用するバージョンの「DHCP-PD support for MAP-E」を参照することを推奨します。

MAP-E 用の SSL 証明書と DS-Lite 用 AFTR アドレスの確認

設定に入る前に、方式ごとに次の情報を準備しておくと作業がスムーズです。

MAP-E

MAP ルール配信サーバーとの通信は HTTPS で行われるため、ssl-certificate に指定する証明書が必要。多くの場合は工場出荷時証明書(Fortinet_Factory)で足りるが、VNE から指定がある場合はそれに従う。

MAP-E

VNE から提供される BMR(Basic Mapping Rule)サーバーのホスト名

DS-Lite

プロバイダ側 AFTR(Address Family Transition Router)の IPv6 アドレス。詳細な設定は後述の DS-Lite セクションで扱う。

MAP-E の設定手順(v6 プラス / OCN バーチャルコネクト等)

FortiGate の MAP-E は、VNE が提供する MAP ルール配信サーバーと BMR を介して、利用可能な IPv4 アドレスとポート範囲を動的に取得する仕組みです。固定 IP オプションを契約していなくても接続できる点が、現行バージョンでの大きな変化です。

MAP-E では、ユーザー宅の FortiGate が NAPT を行い、限られたポート範囲だけを使って IPv4 通信を成立させます。1 つのグローバル IPv4 アドレスを複数ユーザーでポート単位に分割して共有する仕組みの詳細は、関連記事『IPoE(MAP-E・DS-Lite)の仕組みと PPPoE との違い|方式の選び方と機種対応』で解説しています。

参考: Fortinet Document Library「MAP-E support」
“the FortiGate will get the IPv4 address, port set, BR IPv6 address”
(FortiGate は BMR への応答として、IPv4 アドレス・ポートセット・BR の IPv6 アドレスを取得します)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/322815/map-e-support

動的 IP の設定(vne-interface / vne-tunnel)

7.6.x 系以降(8.0 系を含む)では config system vne-interface を使用します。

config system vne-interface
    edit "vne1"
        set interface "wan1"
        set ssl-certificate "Fortinet_Factory"
        set bmr-hostname <BMR ホスト名>
        set auto-asic-offload enable
        set mode map-e
    next
end

7.4.x 系では設定階層が config system vne-tunnel となり、edit による名前付けがなく set status enable で有効化します。

config system vne-tunnel
    set status enable
    set interface "wan1"
    set ssl-certificate "Fortinet_Factory"
    set bmr-hostname <BMR ホスト名>
    set auto-asic-offload enable
    set mode map-e
end

bmr-hostname には VNE から提供される BMR サーバーのホスト名を指定します。auto-asic-offload はハードウェアオフロードの設定で、対応モデルではスループット向上につながります。

固定 IP 契約の設定(fixed-ip)

固定 IP オプションを契約している場合は、mode fixed-ip で BR の IPv6 アドレスと割り当て済みの IPv4 アドレスを直接指定します。7.6.x 系での例です。

config system vne-interface
    edit "vne1"
        set interface "wan1"
        set mode fixed-ip
        set ipv4-address 203.0.113.10 255.255.255.0
        set br 2001:db8::82
        set update-url "http://<プロビジョニングサーバー>/update?user=xxxx&pass=yyyy"
    next
end

ipv4-address には割り当てられたグローバル IPv4 アドレス、br には BR の IPv6 アドレスを指定します。update-url は、FortiGate の IPv6 アドレスが変わった際に BR 側へ通知するための DDNS 更新 URL で、VNE から提供される値を使用します。固定 IP では全ポートを占有できるため、任意ポートでのサーバー公開やポート枯渇への耐性という点で有利になります。

ファイアウォールポリシーと NAT

VNE トンネルが確立したら、LAN 側から VNE トンネル側へ向かう通信を許可するファイアウォールポリシーを作成します。出力先インターフェース(dstintf)には、7.6.x 系では vne-interface 名(ここでは vne1)を指定します。6.4.x 系では自動生成されるトンネルインターフェース名(vne.root)を指定する点が異なります。

config firewall policy
    edit 1
        set name "lan-to-vne"
        set srcintf "port2"
        set dstintf "vne1"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set nat enable
    next
end

nat enable を指定することで、LAN 側のプライベートアドレスが MAP-E で割り当てられたグローバル IPv4 アドレスへ変換されます。UTM 機能を適用する場合は、このポリシーに utm-status enable とプロファイル(ssl-ssh-profileav-profile など)を追加します。

DS-Lite の設定手順(transix/クロスパス等)

FortiGate の DS-Lite は、MAP-E と同じ VNE トンネル機能を fixed-ip モードで利用して構成します。DS-Lite では NAPT をプロバイダ側の AFTR が一括して行うため、FortiGate 側にルール取得の仕組みは不要です。ただし FortiOS の fixed-ip モードの仕様上、実際には使用しないダミーの IPv4 アドレスと update-url を設定する点が特徴となります。本セクションは、Fortinet が公開している transix DS-Lite 向けの公式設定ガイドに基づいています。

なお、以下の設定例ではインターフェース名を WAN 側 wan1、LAN 側 internal としています。internalport1lan などの名称は機種によって異なるため、利用する FortiGate に合わせて読み替えてください。

WAN 側 IPv6 の設定

WAN 側インターフェースで IPv6 を有効化し、RA でプレフィックスを取得する構成です。

config system interface
    edit "wan1"
        config ipv6
            set dhcp6-information-request enable
            set autoconf enable
            set unique-autoconf-addr enable
        end
    next
end

dhcp6-information-request enable は、DHCPv6 の information-request で DNS サーバーなどの情報を取得するための設定です。unique-autoconf-addr enable は、プレフィックス変更への追従のために有効化することを推奨します。

VNE トンネル(fixed-ip モード)の設定

DS-Lite 本体の設定です。7.4.x 系までは config system vne-tunnel を使用します。

config system vne-tunnel
    set status enable
    set interface "wan1"
    set mode fixed-ip
    set ipv4-address 192.168.255.255 255.255.255.255
    set br <AFTR の IPv6 アドレス>
    set update-url http://[::1]
end

各パラメータの意味は次のとおりです。

ipv4-address

DS-Lite では使用されないが、FortiGate が vne.root インターフェースから自発的に送信する通信のために必要。未使用のプライベート IPv4 アドレスを指定する。実際の NAPT は transix 側の AFTR で行われる

br

AFTR の IPv6 アドレス。DS-Lite サービスの契約案内で確認する(transix の代表例は東日本 2404:8e00::feed:100、西日本 2404:8e01::feed:100 だが、最終的な値は契約案内に従う)

update-url

DS-Lite では本来不要だが、fixed-ip モードの仕様上、ダミーとして http://[::1] を設定する

7.6.x 系以降(8.0 系を含む)では、設定階層が config system vne-interface となり、edit <名前> でトンネルを定義します。パラメータの考え方は同じです。

参考: Fortinet「FortiGate IPoE 設定ガイド(transix DS-Lite サービス編)」
DS-Lite 方式では IPv4 アドレスの指定は本来不要だが、FortiGate が vne.root インターフェースで自発パケットを送信する際に IPv4 アドレスの設定が必要となる、と説明されています。AFTR の IPv6 アドレスは DS-Lite サービス契約時の案内で確認することが案内されています。
https://www.fortinet.com/content/dam/fortinet/assets/deployment-guides/ja_jp/fg-internet-multifeed-ipoe-ds-lite_fos702.pdf

デフォルトルートと IPv4 ポリシー

トンネルインターフェース(vne.root)をデフォルトルートに設定し、LAN 側からトンネル側への IPv4 通信を許可します。

config router static
    edit 1
        set device "vne.root"
    next
end

config firewall policy
    edit 1
        set name "internal-to-vne.root"
        set srcintf "internal"
        set dstintf "vne.root"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set tcp-mss-sender 1420
        set tcp-mss-receiver 1420
        set nat enable
    next
end

nat enable により、LAN 側のプライベートアドレスがトンネル側へマスカレードされます。tcp-mss-sendertcp-mss-receiver で MSS をクランプしている理由は、次のセクションで説明します。

MTU/MSS と IPv6 ファイアウォールの設定

IPoE 環境では、トンネルのカプセル化によって利用可能な MTU が減少します。これを考慮して MSS(Maximum Segment Size)を調整しないと、パケットの分割や再送が増え、スループット低下の要因となります。

MSS クランプ(tcp-mss-sender/tcp-mss-receiver)

IPoE トンネルの MTU は、物理 MTU 1500 から IPv6 ヘッダー 40 バイトを引いた 1460 バイトが標準的な値です。TCP の MSS は、ここからさらに IPv4 ヘッダー 20 バイトと TCP ヘッダー 20 バイトを引いた 1420 バイトとなります。MSS 計算の詳細は、関連記事『IPoE(MAP-E・DS-Lite)の仕組みと PPPoE との違い|方式の選び方と機種対応』で解説しています。

FortiGate では、ファイアウォールポリシーで MSS をクランプ(書き換え)します。tcp-mss-sender は SYN パケット、tcp-mss-receiver は SYN-ACK パケットの MSS 値を書き換えます。前掲の IPv4 ポリシーで両方に 1420 を指定しているのはこのためです。

参考: Fortinet Community「Technical Tip: Setting TCP MSS value」
MSS 値を変更する処理を MSS クランプと呼び、FortiGate がハンドシェイクの SYN/SYN-ACK パケット内の MSS を書き換えることで、相手側がより小さいセグメントで送信するようになる、と説明されています。
https://community.fortinet.com/t5/FortiGate/Technical-Tip-Setting-TCP-MSS-value/ta-p/194518

トンネルインターフェース側で MTU を明示する場合は、config system interfacemtu-override enable を有効化したうえで mtu 1460 を指定する方法もあります。公式の DS-Lite 設定ガイドではポリシーでの MSS クランプを採用しているため、本記事もその方法を基本とします。

IPv6 ファイアウォールと ND Proxy

IPoE 環境では、LAN 内の端末に IPv6 グローバルアドレスが直接払い出されます。PPPoE 時代の「ルーターの NAPT で守られている」という前提は成立しないため、IPv6 のファイアウォールを明示的に設定することが重要です。FortiGate はステートフルファイアウォールとして動作し、ポリシーで明示的に許可した通信のみを通過させます。

FortiGate 配下のクライアントから IPv6 インターネットへ接続する場合は、ND Proxy 機能を有効化し、ICMPv6 と DHCPv6 を許可する設定を加えます。

config system nd-proxy
    set status enable
    set member "wan1" "internal"
end

config firewall multicast-policy6
    edit 1
        set srcintf "wan1"
        set dstintf "internal"
        set srcaddr "all"
        set dstaddr "all"
    next
    edit 2
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "all"
        set dstaddr "all"
    next
end

続いて、IPv6 のユニキャストポリシーを作成します。LAN(internal)から WAN(wan1)方向のアウトバウンドを許可し、WAN から LAN 方向はリンクローカルアドレスでの通信のみを許可する例です。リンクローカルアドレス用のアドレスオブジェクトを先に定義します。

config firewall address6
    edit "link-local"
        set ip6 fe80::/64
    next
end

config firewall policy
    edit 11
        set name "internal-to-wan1-v6"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr6 "all"
        set dstaddr6 "all"
        set action accept
        set schedule "always"
        set service "ALL"
    next
    edit 12
        set name "wan1-to-internal-v6"
        set srcintf "wan1"
        set dstintf "internal"
        set srcaddr6 "link-local"
        set dstaddr6 "link-local"
        set action accept
        set schedule "always"
        set service "ALL"
    next
end

IPv6 のポリシーでは、グローバル IPv6 アドレスをそのまま使用するため NAT は有効化しません。インターネット側から LAN 内の特定端末へアクセスを許可したい場合は、対象を絞ったインバウンドポリシーを環境に応じて追加します。許可していないインバウンドは、ステートフルファイアウォールにより遮断されます。

トラブルシューティングと運用上の制約

設定後の動作確認と、IPoE 環境で直面しやすい制約への対処をまとめます。

接続確認コマンド(状態確認)

接続の確立は、IPv6 アドレスの取得、トンネルの確立、IPv4 到達性の順で確認します。

# IPv6 グローバルアドレスの取得状況
diagnose ipv6 address list

# VNE トンネル(vne.root)の確立状況と送受信統計
diagnose ipv6 ipv6-tunnel list

# IPv4 でのインターネット到達性
execute ping example.com

diagnose ipv6 ipv6-tunnel list では、laddr(FortiGate の IPv6 アドレス)と raddr(MAP-E の BR、または DS-Lite の AFTR の IPv6 アドレス)が表示され、RXTX のバイト数・パケット数がカウントされていれば、トンネルを経由した通信が成立しています。VNE の設定内容そのものを確認する場合は、7.6.x 系以降では show system vne-interface、7.4.x 系までは show system vne-tunnel を使用します。

参考: Fortinet「FortiGate IPoE 設定ガイド(transix DS-Lite サービス編)」
動作確認として、diagnose ipv6 address list で WAN1 に RA で生成された IPv6 アドレスを確認し、diagnose ipv6 ipv6-tunnel list で AFTR との IPv6 トンネル確立(laddr/raddr と送受信カウント)を確認する手順が案内されています。
https://www.fortinet.com/content/dam/fortinet/assets/deployment-guides/ja_jp/fg-internet-multifeed-ipoe-ds-lite_fos702.pdf

IPv6 は通るが IPv4 が通らないとき

IPv6 サイトには接続できるのに IPv4 サイトへ接続できない場合、IPv6 アドレスの取得までは成功しているが、トンネルの確立に失敗している状態が考えられます。次の順で切り分けます。

  • diagnose ipv6 address list で、WAN 側に IPv6 グローバルアドレスが付与されているかを確認する。
  • diagnose ipv6 ipv6-tunnel list で、laddrraddr が表示され、RXTX が増加しているかを確認する。
  • MAP-E の場合は、ssl-certificatebmr-hostname の指定、および MAP ルール配信サーバーへの HTTPS 到達性を確認する。
  • DS-Lite の場合は、br に指定した AFTR の IPv6 アドレスが契約案内と一致しているかを確認する。
  • ファイアウォールポリシーとデフォルトルートが、トンネルインターフェース(vne.root または vne-interface 名)に向いているかを確認する。

IPv6 アドレス変更によるトンネル断

fixed-ip モードでは、FortiGate の IPv6 アドレスが変わるとトンネルが一時的に down します。MAP-E の固定 IP では update-url を通じて provisioning サーバーへ新しい IPv6 アドレスが通知され、トンネルが再確立されます。一方、DS-Lite ではダミーの update-url を設定しているため、WAN 側の IPv6 アドレスが変わった際は、トンネルの状態を確認することが望ましい運用となります。

ポート開放・サーバー公開の制約

IPoE 環境では、外部からの受信を伴うサーバー公開に制約があります。MAP-E は 1 つのグローバル IPv4 アドレスをポート単位で複数ユーザーと共有するため、割り当てられたポート範囲外(80/443 などの well-known ポートを含む)は使用できません。DS-Lite は NAPT を AFTR が行うため、ユーザー側でのポート開放は原則として行えません。この仕組みの詳細は、関連記事『IPoE(MAP-E・DS-Lite)の仕組みと PPPoE との違い|方式の選び方と機種対応』で解説しています。

任意のポートでサーバーを公開する必要がある場合は、固定 IP オプションの契約が現実的な解決策となります。FortiGate では mode fixed-ip で割り当て済みの IPv4 アドレスを指定することで、全ポートを利用できます。

IPsec/VPN の制約

VNE トンネルは IPsec のフェーズ 1 で利用できますが、構成上の制約があります。IPsec の phase1-interface の interface に、VNE トンネルインターフェースそのものを指定することはできません。 また、npu-vlink を使用する場合は、VNE トンネルと IPsec トンネルを異なる VDOM に分ける必要があります。

参考: Fortinet Document Library「MAP-E support」
“cannot be set to the VNE tunnel interface”
(IPsec の phase1-interface の interface 設定に、VNE トンネルインターフェースを指定することはできない、と記載されています)
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/322815/map-e-support

拠点間 VPN を IPoE 上で構成する場合は、グローバル IPv6 を活用した IPv6 IPsec を利用するか、PPPoE セッションを別途確保して固定グローバル IPv4 を用意する構成が選択肢となります。

まとめ

FortiGate の IPoE 対応は FortiOS のバージョンによって異なり、古い情報をもとにした「MAP-E 非対応」という認識は現行バージョンには当てはまりません。MAP-E・DS-Lite のいずれも VNE トンネル機能で構成でき、設定階層はバージョンで分かれます。要点は次のとおりです。

  • 対応可否は FortiOS のバージョンに依存
  • MAP-E の設定階層は 7.4.x 系の vne-tunnel から 7.6.x 系以降の vne-interface へ移行
  • DS-Lite は vne-tunnel/vne-interface の fixed-ip モードで構成
  • DS-Lite ではダミーの IPv4 アドレスと update-url の設定が必要
  • MSS はファイアウォールポリシーで 1420 にクランプ
  • IPoE 環境では IPv6 ファイアウォールの明示的な設定が前提
  • 任意ポートでのサーバー公開には固定 IP オプションの契約が現実的

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次