关于 MAP-E 的配置小记

(19年4月)搬到新家以后办了 GMOとくとくBB 的网络,然后顺便开通了 IPv6プラス 业务,(由于没有怎么接触过 IPv6 所以刷了 OpenWrt 的 Mir3G 并不能直接用,只好用运营商给的辣鸡 NEC 的路由器。但是呢这个路由器真的真的非常难用…只能调一些没什么卵用的设置而且都必须重启才能生效…于是(到了第二年3月)就想着能不能让入土的 Mir3G 重新发挥作用呢。这篇文章简易记录了一下折腾 MAP-E 的过程,希望对后来者能起到帮助。

0x00 事前准备
所需:一台刷了 OpenWrt 的路由器,JPNE 旗下的网络(笔者使用的是 GMOとくとくBB ) (判断自己的 VNE ( Virtual Network Enabler ) 是哪家请参见下表),一个 SSH 客户端

VNE事业者 ISP(プロバイダー) 业务名称(サービス名)
AsahiNet AsahiNet AsahiNet光/フレッツ光
BBIX SoftBank SoftBank光 / Yahoo!BB
BIGLOBE BIGLOBE ビッグローブ光 / フレッツ光
JPNE DMM DMM光
GMO GMOとくとくBB / ドコモ光
nifty @nifty光 / フレッツ光
21IP フレッツ光
So-net

So-net光 / フレッツ光

(v6プラス)

2018年4月17日から

NTT コミュニケーションズ OCN OCN光
インターネットマルチフィード IIJ IIJmioひかり
InterLink ZOOT NATIVE
So-net

So-net光 / フレッツ光

(IPoE(IPv6)オプション)

2018年5月18日まで

0x01 创建 WAN6 接口及基础设置

  1. 连接好 WAN 口和 LAN 口的网线,然后访问 OpenWrt 的 Web LuCI 页面(通常为 192.168.1.1)
  2. 点击 [Network] – [Interfaces],点击 WAN6 的 Edit(如果没有的话新建一个)
    点击 [General Setup] 并将 Protocol 设置为 DHCPv6 Client
    点击 [Physical Settings] 确保 Bridge interfaces 为未选中状态(OFF)并将 Interface 设置为 eth0.2(可能与你的情况有出入,如果不确定可以多试几次)

    点击 [Firewall Settings] 将 Create / Assign firewall-zone 设置为 wan
  3. 点击 [Save & Apply]

0x02 WAN6 及 LAN 的 RA 等设置

  1. 使用 SSH 登入 OpenWrt
  2. vi /etc/config/dhcp将 lan 与 wan6 修改为如下内容
  3. 编辑完成后执行 uci commit /etc/config/dhcp 应用
config dhcp 'lan'
        option leasetime '8h'
        option start '100'
        option limit '150'
        list dns '2001:4860:4860::8888' #Google Public DNS
        list dns '2620:119:35::35' #OpenDNS
        option interface 'lan'
        option ra 'relay'
        option dhcpv6 'relay'
        option ndp 'relay'

config dhcp 'wan6'
        option dhcpv6 'relay'
        option ra 'relay'
        option ndp 'relay'
        option master '1' #如果其它接口配置中有此段的话则删去其它接口中的

0x03 使用 IPoE 方式连接至 IPv6 网络

  1. 点击 [Network] – [Interfaces]
  2. 点击 WAN6 上的 [Connect]

如果一切正常,那么现在应该能连接至 IPv6 网络,可以访问 https://ipv6.google.comhttps://test-ipv6.com/ 进行测试,同时在 OpenWrt 的 Web LuCI 页面可以看到如图所示的内容(请忽略笔者已配置好的 MAP-E 接口),此时请保存你获取到的 IPv6 地址(后面将用到)

0x04 简单介绍 MAP-E
简单来讲,MAP-E 就是通过隧道实现的 IPv4 over IPv6,将 IPv4 包封装进 IPv6 后送至 JPNE 的 BR (Border Relay)后由 JPNE 进行处理并发送至 IPv4 网络,并将收到的 IPv4 包封装进 IPv6 后发送回来(具体请见下图(来源: https://www.iajapan.org/ipv6/summit/OSAKA2018/pdf/20180906_keynote_ishida.pdf ))

通过 MAP-E 方式实现 IPv4 over IPv6

0x05 计算 MAP-E 参数
感谢 FC2 大佬制作的小工具,一步即可算出 MAP-E 的参数。访问 http://ipv4.web.fc2.com/map-e.html,(记得将广告点掉,否则无法使用)并将 0x03 中获取到的 IPv6 地址输入进去,点击 計算 即可算出各参数值,此时请记录算出的 option 各项的名称及值(建议也将 ポート番号 中的内容记录,这些内容代表了你可以通过 IPv4 连接的端口号)(如果有兴趣和时间的同学也可以进行手工计算,详细请参考:NanoPi NEO2をv6プラスのルーターにする 前編

0x06 配置 MAP-E 及 WAN6
通过 SSH 登入 OpenWrt, 安装 MAP-E 并将 map.sh 中 29 行左右 #export LEGACY=1 前的 # 去掉(取消注释,使用 MAP0)

opkg update
opkg install map
vi /lib/netifd/proto/map.sh #编辑并取消注释以使用 map0

访问 OpenWrt 的 Web LuCI 页面,点击 [Network] – [Interfaces] – [Add new interface…] 来添加一个新的接口
Name: WAN6_MAP(可以任意填)
Protocol: MAP / LW4over6
添加保存并应用

接下来点击 WAN6_MAPEdit

  • Type: MAP-E
  • BR / DMR / AFTR: 2404:9200:225:100::64(JPNE 的 BR 地址,不知道怎么漏出来的,总之测试可用)
  • IPv4 prefix: 0x05 中计算得出的 option ipaddr 值
  • IPv4 prefix length: 0x05 中计算得出的 option ip4prefixlen 值
  • IPv6 prefix: 0x05 中计算得出的 option ip6prefix 值
  • IPv6 prefix length: 0x05 中计算得出的 option ip6prefixlen 值
  • EA-bits length: 0x05 中计算得出的 option ealen 值
  • PSID-bits length: 0x05 中计算得出的 option psidlen 值
  • PSID offset: 0x05 中计算得出的 option offset 值

然后转至 Advanced Settings 设置 Tunnel Link: wan6
转至 Firewall Settings 设置 Create / Assign firewall-zone: wan

保存并应用

接下来点击 WAN6Edit
转至 Advanced Settings
Custom delegated IPv6-prefix: 设置为 0x03 中获取到的 IPv6 地址
保存并应用

0x07 连接确认
至此 MAP-E 的配置就告一段落了,点击 WAN6_MAPConnect 按钮,如果没有问题的话应该会成功取得一个 IPv4 地址(一般来说应该与 0x05 中计算得到的相同)

打开 https://test-ipv6.com/ 应该可以看到你的 IPv4 地址,其他 IPv4 网站也应该可以正常访问

0x08 笔者的配置文件
说不定可以作为参考

config interface 'wan6'
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'
        option ifname 'eth0.2'
        list ip6prefix '240b:XXX:XXX:XXX:XXX:XXX:XXX:XXX/64' #0x03 获取到的

config interface 'wan6_map'
        option proto 'map'
        option type 'map-e'
        option peeraddr '2404:9200:225:100::64'
        option ipaddr '14.xx.x.x'
        option ip4prefixlen '15'
        option ip6prefix '240b:XX::'
        option ip6prefixlen '31'
        option ealen '25'
        option psidlen '8'
        option offset '4'
        list tunlink 'wan6'
        option mtu '1460' #默认 MTU 值比较小,笔者设置为了 1460
        #option encaplimit 'ignore' #据部分用户报告需要设置该选项来避免 RX 不计数的问题(笔者暂未遇到该问题所以暂且不设置)

“关于 MAP-E 的配置小记”的12个回复

  1. 啊,国内的ipv6什么的都还好啦。其实主要是某些厂商吹嘘“我们的路由器支持ipv6”什么的才头疼呢,搞了半天发现完完全全不支持

  2. 华硕的梅林固件有支持map-e的版本吗?我也是gmobb的v6プラス,给的nec的路由器十分难用。。。

    1. 梅林固件截止目前似乎并没有支持 map-e 的版本,如果只是不想用 NEC 路由器的话建议您更换固件(如果支持OpenWRT)或者事業者変更到支持开启 v6プラス后也可拨 PPPoE 的运营商,然后 v6 使用 IPoE, v4 使用 PPPoE …

  3. 太感谢了,我也用的是GMO,很早就想弄了,可惜之前没找到这么详细的帖子,youtube广告太多了

  4. option interface ‘lan’ 求教我这一项在commit之后就会消失 lan口也没有v6的ip 只有wan6有v6的ip 无法访问v6是怎么回事

  5. 请教一下 通过 map-e 也就是 ipv4 over ipv6 接入之后。是不是我就没有ipv4公网ip了。ipv6可以直接使用ipoe接入。ipv4如果还能继续pppoe是不是就没必要折腾了。不知道我理解的对不对。望指教,谢谢

    1. 是这样的。map-e 是共享 IP 和端口,如果有公网需求的话确实会比较难受。如果 IPv4 的 PPPoE 可用的话就没有必要去折腾 map-e 了。

  6. SoftBank光10ギガ也使用MAP-E。不过他家IPv6前缀输入到那个网站上没有对应的信息 哭死:(
    不知道能不能抓包一些参数手算配置

      1. 经过1+月的研究我已经配置好了SBB。被NTT路由器里显示的MAP-E欺骗了(
        打算也写一篇教程XD

回复 echo 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注