关于 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 的配置小记”的2个回复

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

发表评论

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