YAMAHAルータでMAP-EのIPv6（フレッツ光 So-net）

#概要
前回のIPv6の記事から数ヶ月後、DS-LiteではなくMAP-Eに切り替わったため、下記記事は使えなくなりました。

[Qiita: IPv6 IPoE + DS-Lite(IPv4 over IPv6)への切り替え方と、IPv4 PPPoEの併用](https://qiita.com/wakisuke/items/5e0a5231dd4f0ef6ef99)

既存の機器で試行錯誤しましたが、MAP-Eはちゃんと機器が対応していないとだめだったので、
新しくMAP-Eに対応しているYAMAHAルータを用意したので、設定した内容を備忘録として残します。

Sさん転職おめでとうございます！！！

#環境
- NTT西日本　フレッツ　光ネクスト　マンションタイプ
- So-net 光 with フレッツ S (マンション)
- YAMAHA RTX830 Rev.15.02.05

#結果
速度は前回のIPv6の記事と変わりません。
また、無事にサーバ用のIPv4と併用できています。

#契約内容
これも前回のIPv6の記事と同じでした。
So-netで言葉が「IPoE」から「v6プラス」に変わったぐらいです。
料金も今の所発生していません。

#ルータ設定
configの中身をすべて晒します。
環境に合わせて設定してください。

```
[@@@ なにがし @@@]　←　この部分をそれぞれの環境に書き換えてください
```

```
# RTX830 Rev.15.02.05 (Tue May 29 16:42:17 2018)
# MAC Address : **:**:**:**:**:**, **:**:**:**:**:**
# Memory 256Mbytes, 2LAN
# main:  RTX830 ver=00 serial=******* MAC-Address=**:**:**:**:**:** MAC-Address=**:**:**:**:**:**

clear configuration

#
# IP configuration
#

ip routing process normal
ip route default gateway pp 1 filter 1 gateway tunnel 1
ip filter source-route on
ip filter directed-broadcast on

#
# IPv6 configuration
#

ipv6 prefix 1 ra-prefix@lan2::/64

#
# Filter No.
#
# +------------------+-------+
# |       Desc       | Range |
# +------------------+-------+
# | PC, Tablet, Game | 1~19  |
# +------------------+-------+
# | Phone            | 20~39 |
# +------------------+-------+
# | IoT              | 40~59 |
# +------------------+-------+
# | Net              | 60~79 |
# +------------------+-------+

#MAC Address DESKTOP
ethernet filter 1 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address Surface Pro 4
ethernet filter 2 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address NINTENDO Switch
ethernet filter 3 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address HTC U11
ethernet filter 20 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address SONY NW-F886
ethernet filter 21 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address SHARP SHL25
ethernet filter 22 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address SHARP SH-06D
ethernet filter 23 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address Raspberry Pi(Nginx Reverse Proxy)
ethernet filter 40 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address Raspberry Pi(NAS, IoT, WebServer)
ethernet filter 41 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAC Address LIVA(NAS, WebServer)
ethernet filter 42 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*
ethernet filter 43 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*

#MAX Address WiFi
#TP-Link Archer C20
ethernet filter 60 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*
ethernet filter 61 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*
#IO-DATA WN-G300R3
ethernet filter 62 pass-nolog [@@@ MACアドレス @@@] *:*:*:*:*:*



# Reject
ethernet filter 100 reject-log *:*:*:*:*:* *:*:*:*:*:*

#
# LAN configuration
#

description lan1 LAN
ip lan1 address 192.168.1.1/24
ip lan1 secondary address dhcp
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ethernet lan1 filter in 1 2 3 20 21 22 23 40 41 42 43 60 61 62 100
switch control use lan1 on terminal=on
description lan2 MAP-E
ipv6 lan2 secure filter in 101000 101001 101002
ipv6 lan2 secure filter out 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ipv6 lan2 dhcp service client ir=on

#
# PP configuration
#

pp disable all

### PP 1 ###

pp select 1
 description pp PPPoE
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto connect on
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname [@@@ So-net ユーザ名（***.so-net.ne.jp） @@@] [@@@ So-net パスワード @@@]
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp mtu 1454
 ip pp rip send off
 ip pp rip receive off
 ip pp secure filter in 1000 1001 1002 2000 2001 2002 1098
 ip pp secure filter out 1099 dynamic 1080 1081 1082 1083 1084 1085 1086 1098 1099
 ip pp nat descriptor 1000
 ip pp tcp mss limit auto
 pp enable 1

#
# TUNNEL configuration
#

no tunnel enable all

### TUNNEL 1 ###

tunnel select 1
 tunnel encapsulation map-e
 ip tunnel mtu 1460
 ip tunnel secure filter in 1000 1001 1002 1098
 ip tunnel secure filter out 1099 dynamic 1080 1081 1082 1083 1084 1085 1086 1098 1099
 ip tunnel nat descriptor 2000
 tunnel enable 1

#
# IP filter configuration
#

ip filter 1 pass-log 192.168.1.100 * * * *
ip filter 1000 pass * * icmp * *
ip filter 1001 pass * * tcp * ident
ip filter 1002 pass * * udp * 546
ip filter 1098 reject * * * * *
ip filter 1099 pass * * * * *
ip filter 2000 pass-log * 192.168.1.100 tcp * www
ip filter 2001 pass-log * 192.168.1.100 tcp * https
ip filter 2002 pass-log * 192.168.1.100 tcp * 22
ip filter 5000 restrict * * * * *

#
# IP dynamic filter configuration
#

ip filter dynamic 1080 * * ftp
ip filter dynamic 1081 * * domain
ip filter dynamic 1082 * * www
ip filter dynamic 1083 * * smtp
ip filter dynamic 1084 * * pop3
ip filter dynamic 1098 * * tcp
ip filter dynamic 1099 * * udp

#
# NAT Descriptor configuration
#

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 ipcp
nat descriptor address inner 1000 auto
nat descriptor masquerade static 1000 1 192.168.1.100 tcp 22
nat descriptor masquerade static 1000 2 192.168.1.100 tcp www
nat descriptor masquerade static 1000 3 192.168.1.100 tcp https
nat descriptor type 2000 masquerade
nat descriptor address outer 2000 map-e
nat descriptor address inner 2000 auto

#
# IPv6 filter configuration
#

ipv6 filter 101000 pass * * icmp6 * *
ipv6 filter 101001 pass * * tcp * ident
ipv6 filter 101002 pass * * udp * 546
ipv6 filter 101098 reject * * * * *
ipv6 filter 101099 pass * * * * *
ipv6 filter 500000 restrict * * * * *

#
# IPv6 dynamic filter configuration
#

ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp

#
# SYSLOG configuration
#

syslog notice on
syslog debug on

#
# TFTP configuration
#

tftp host any

#
# DHCP configuration
#

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.100-192.168.1.200/24
dhcp scope bind 1 192.168.1.100 [@@@ IP固定対象MACアドレス @@@]
# dhcp scope bind 1 192.168.1.101 [@@@ IP固定対象MACアドレス @@@]

#
# DNS configuration
#

dns host lan1
dns service fallback on
dns server pp 1
dns server dhcp lan2
dns server select 500000 dhcp lan2 any .
dns server select 500001 pp 1 any . restrict pp 1
dns private address spoof on

#
# IP Host
#


#
# NTP
#

schedule at 1 */* 04:00:00 * ntpdate ntp.nict.jp syslog

save

```

#MAP-Eに対応していないYAMAHAルーターで試行錯誤したこと

最初は意地でもYAMAHA RT107eでMAP-Eに対応してやる！と思って頑張りましたが、
とても使えるレベルではないので諦めました。

下記にその時のconfigや試行錯誤したときの作業について記載します。

##configの中身
```

# RT107e Rev.8.03.94 (Thu Dec  5 18:34:30 2013)
# MAC Address : **:**:**:**:**:**, **:**:**:**:**:**,
# Memory 32Mbytes, 2LAN
# main:  RT107e ver=e0 serial=N1D108743 MAC-Address=**:**:**:**:**:** MAC-Address=**:**:**:**:**:**
# Reporting Date: Apr 7 22:58:34 2019

ip route default gateway tunnel 1
ipv6 prefix 1 ra-prefix@lan2::/64
ip lan1 address 192.168.100.1/24
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 address [@@@ CEアドレス こんな形 ****:***:****:****:*:***:****:****/64 @@@]
ipv6 lan2 dhcp service client ir=on

tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address [@@@ CEアドレス こんな形 ****:***:****:****:*:***:****:**** @@@] [@@@ BRアドレス 2404:9200:225:100::64  @@@]
 ip tunnel mtu 1460
 ip tunnel secure filter in 1000 1001 1002 1098
 ip tunnel secure filter out 1099 dynamic 1080 1081 1082 1083 1084 1085 1086 1098 1099
 ip tunnel nat descriptor 1 2 3 4 5 6
 ip tunnel tcp mss limit auto
 tunnel enable 1

ip filter 1 pass-log 192.168.1.100 * * * *
ip filter 1000 pass * * icmp * *
ip filter 1001 pass * * tcp * ident
ip filter 1002 pass * * udp * 546
ip filter 1098 reject * * * * *
ip filter 1099 pass * * * * *
ip filter 5000 restrict * * * * *
ip filter dynamic 1080 * * ftp
ip filter dynamic 1081 * * domain
ip filter dynamic 1082 * * www
ip filter dynamic 1083 * * smtp
ip filter dynamic 1084 * * pop3
ip filter dynamic 1098 * * tcp
ip filter dynamic 1099 * * udp

nat descriptor type 1 masquerade
nat descriptor address outer 1 14.10.138.96
nat descriptor address inner 1 auto
nat descriptor masquerade port range 1 4416 15

nat descriptor type 2 masquerade
nat descriptor address outer 2 14.10.138.96
nat descriptor address inner 2 auto
nat descriptor masquerade port range 2 8512 15

nat descriptor type 3 masquerade
nat descriptor address outer 3 14.10.138.96
nat descriptor address inner 3 auto
nat descriptor masquerade port range 3 12608 15

nat descriptor type 4 masquerade
nat descriptor address outer 4 14.10.138.96
nat descriptor address inner 4 auto
nat descriptor masquerade port range 4 16704 15

nat descriptor type 5 masquerade
nat descriptor address outer 5 14.10.138.96
nat descriptor address inner 5 auto
nat descriptor masquerade port range 5 20800 15

nat descriptor type 6 masquerade
nat descriptor address outer 6 14.10.138.96
nat descriptor address inner 6 auto
nat descriptor masquerade port range 6 24896 15

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24

```

##BRアドレス

so-netの接続事業者のJPNEのアドレス。
どこからか漏れたらしく「`2404:9200:225:100::64`」らしいです。
確かにそのとおりで繋がります。

##CEアドレスと配布されているポート

IPv6プレフィックスというものから算出できます。が、超めんどくさいので有志の計算サイトを利用しました。
IPv6プレフィックスは、ルーターを終端装置とつないで下記コマンドで確認できます。

```
> show ipv6 address
LAN1 scope-id 1 [down]
 Received:    0 packet 0 octet
 Transmitted: 18 packets 1296 octets

 グローバル     240b:***:****:****::1/64 (tentative) (lifetime: 604800/2592000)
 リンクローカル ff02::1/64
 リンクローカル ff02::2/64
 リンクローカル ff02::1:2/64
 リンクローカル ff02::1:ff00:1/64
```

LAN1のグローバルがIPv6プレフィックスです。
これを、下記ベンチサイトに入力するとすべて計算してくれます。

http://ipv4.web.fc2.com/map-e.html

あとは上記スクリプトの通りですが、NATの割当速度と枯渇が激しく、とてもじゃないですが使えませんでした。
またIPv6プレフィックスにもある通り、これは定期的に書き換わるため、当然CEアドレスやポート範囲も変わります。

変わるたびに計算させて設定を反映させるのもラズパイなどを駆使すればいけますが、MAP-Eに対応している機器を買ったほうが楽です。