OpenWrtベースのGL.iNet GL-BE3600でMAP-E(v6プラス)を正しく構成する (2026年3月版)

OpenWrt 23.05ベースのGL.iNet BE3600でドコモ光 + v6プラスで正しく構成する方法を2026年3月時点でまとめました。現在はIPv4/IPv6ともに安定して運用できています。 ついでに、Tailscale連携のカスタマイズ方法にも触れます。

MAP-E (v6プラス)について

筆者の環境におけるv6プラスは以下を差します。

v6プラスにおけるMAP-Eについて

設定値を生成するサイトとして https://ipv4.web.fc2.com/map-e.html が有名ですが、このサイトの動作原理をMAP-Eの仕様に沿って解説します。

まず重要な点として、v6プラスのMAP-Eはドラフト版に基づいている点です。 OpenWrtでは Legacy として設定する必要があります。

上のサイトが動くのは、JPIXが提供するMAP-EのDefault Mapping RuleとBorder Routerのアドレスを持ち合わせているからです。 通常はおそらくベンダーにしか公開されていない情報ですが、 MAP-EのBasic Mapping Ruleを理解していれば、市販ルーターの動作から推測することは十分に可能です。

例えば、

v6プラスにおけるBasic Mapping Rule

https://datatracker.ietf.org/doc/html/draft-ietf-softwire-map-00#section-5.2

設定値生成サイトの情報を整理すると以下になります。

なお、設計上はマップルール配信サーバーが存在しているため、パラメーターが更新された場合は市販ルーター等の動作から再度推測する必要があります。

MAP-EにおけるMAP IPv6アドレスの構成について

BRのアドレスがわかったところで、実際にトンネルを構成する時の外側のアドレスはどのように構成されるのでしょうか。

まず、MAP subnet-idとして最初のサブネット(すべて0)を予約しなければならないとしています。

The MAP IPv6 address is created by concatenating the End-user IPv6 prefix with the MAP subnet-id and the interface-id as specified in Section 6. The MAP subnet ID is defined to be the first subnet (all bits set to zero). A MAP node MUST reserve the first IPv6 prefix in a End-user IPv6 prefix for the purpose of MAP.

/64のサブネットをこの方法に従って構成します。残りはPrefixが64bitsの場合におけるIPv4-Embedded IPv6 Address Formatで表現します。

https://datatracker.ietf.org/doc/html/draft-ietf-softwire-map-00#section-6

   +--+---+---+---+---+---+---+---+---+
   |PL|   8  16  24  32  40  48  56   |
   +--+---+---+---+---+---+---+---+---+
   |64| u | IPv4 address  |  PSID | 0 |
   +--+---+---+---+---+---+---+---+---+

PSIDがsuffixに相当します。つまり、BRはIPv4アドレス (106.72.x.x) + PSIDで構成されるIPv6アドレスにトンネルトラフィックを投げる動作になります。

全体的にMAP-Eの仕様は既存のアセットをうまく組合せている点でよくできていると思います。

OpenWrtでのMAP-E (v6プラス)実装について

さて、OpenWrtでの実装はどうでしょうか。

2026年3月地点では以下がまとまっています。

なお、先日報告したのようにGL.iNetのルーターでハードウェアアクセラレーションを有効にするとIPIPトンネルトラフィックが壊れる問題があるため、切るかソフトウェアアクセラレーションに切り替える必要があります

OpenWrtでのインターフェース名について

設定はUCI論理デバイスに対して行ないます。OpenWrtはその設定に従ってネットワークを構成します。

WAN側 (IPv6) インターフェースの構成

wan6 論理デバイス名に対して、DHCPv6-PDを構成します。

WAN側 (MAP-E) インターフェースの構成

wan 論理デバイス名に対して、MAP-E (Legacy)を構成します。

Tailscale連携のカスタマイズ

例えば、Tailscale SSHを有効にしたい場合は /usr/bin/gl_tailscale をカスタマイズする必要があります。

このスクリプトではTailscale起動時に --reset が指定されているため、 tailscale set の結果が永続化されません。直接ファイルを書き換える必要があります。

        timeout 10 /usr/sbin/tailscale up --reset --accept-routes $param --timeout 3s --accept-dns=false --ssh > /dev/null