味見日報 - MAP-E
Posted on 2021/02/04(Thu) 19:45 in technical
味見日報 - MAP-E
OCNでもIPoEな環境が整いつつあるようなので、MAP-Eが動くか試して見ることにしました。
基本的には Qiita - Ubuntu / Debian でIPv4 over IPv6 (OCNバーチャルコネクト, v6プラス), systemdによる設定, ルーター化, VPNおよび自宅サーバー可能な固定グローバルIPv4アドレス の通りなので、差分だけ書きます。
なお、MAP-Eを含むv6プラスと呼ばれるサービスについて知りたい場合は、以下の書籍が参考になると思います。
環境
自宅の環境ではProxmox VEのクラスタがあるのですが、VMのインターフェースに特定のVLANタグをつけるとONUとの接続バスに繋がるようになっているので、とりあえずNICを2本持つVMを作りました。
- net0(VM config) = eth0(OS): LAN側(Untag)
- net1(VM config) = eth1(OS): WAN側(VLAN tag)
Note
VLANタグを付けるのはProxmox VEのOVSなので、OSから見るとEthernetが2ポートあるだけです。
ベースイメージは Ubuntu 20.04のcloud image を使います。
Network周りのあれこれ
既にPPPoE(IPv4固定/IPv4非固定/IPv6 DHCP-PD半固定)を使った環境が網内にあるので、今回はその網に新しい出口を作るつもりで作ります。
方法としては2つあって、
- LAN側だけで1アーム構成にする
- LAN/WANに1本ずつ繋ぐ
前者の方法だと、MAP-Eのトンネルへの経路を既存ルーターに追加してPPPoEではなくIPoE側に経路を向けてやりつつ、NAT66して内部のPrefixを付け替える必要があります。
とはいえ、既存ルーターの経路設定やNAT66が前提になってしまうと、切り替えがややこしくなりそうだったので後者で進めます。
IPv6は、今回作るMAP-Eゲートウェイでは配下に提供しません。
ただし、既存ルーター経由でMAP-Eトンネルを確立するのは前述のように避けたいので、WAN側からのRAのみを受け取り、LAN側のインターフェースではRAを受け取らないようにします。
記事に書いていない部分を適当にかいつまんで書く
/etc/sysctl.d/99-mape-gw.conf
IPoE経由でのアクセスを提供するゲートウェイにするので、IPv4を転送するようにしておきます。
net.ipv4.ip_forward = 1
/etc/netplan/50-cloud-init.yaml
これはProxmox VEのcloud-initで生成されたものをそのまま使います。
今回は以下のようにしました。(cloud-init部分だけ抜粋)
ipconfig0: ip=192.168.1.5/24,ip6=2001:db8:1d6e:fb00::5/64
ipconfig1: ip6=2001:db8:12c0:f200:ee:86ff:fe0:3200/64
nameserver: 192.168.1.31
searchdomain: ainoniwa.net
ipconfig0
はLAN側のインターフェースなので、既存のNW環境に合わせて設定します。
ipconfig1
はWAN側のインターフェースなので、Prefixから計算で求めたMAP-EのCE終端となるIPv6アドレスを設定します。
nameserver
/ serarchdomain
は既存のNW環境に合わせて設定します。無くてもMAP-Eには特に影響ありません。
設定更新のたびにcloud-initで自動生成されるので 50-cloud-init.yaml
には手を加えません。おそらく、以下のような設定がOS起動時に設定されるはずです。
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.5/24
- 2001:db8:1d6e:fb00::5/64
match:
macaddress: 01:3a:8d:df:bb:dd
nameservers:
addresses:
- 192.168.1.31
search:
- ainoniwa.net
set-name: eth0
eth1:
addresses:
- 2001:db8:12c0:f200:ee:86ff:fe0:3200/64
match:
macaddress: 01:10:2f:31:39:d5
nameservers:
addresses:
- 192.168.1.31
search:
- ainoniwa.net
set-name: eth1
Note
アドレスは文書用に適当なものになっています。
/etc/netplan/99-ipoe-gw.yaml
こちらは、cloud-initでは消されないので気軽に置くことができます。
LAN側のインターフェースではRAを受け取らないようにして、トンネルインターフェースにデフォルトルートを向けておきます。
network:
version: 2
ethernets:
eth0:
accept-ra: false
tunnels:
mape0:
mode: ipip6
local: 2001:db8:12c0:f200:ee:86ff:fe0:3200
remote: 2001:db8:a120::9
routes:
- to: 0.0.0.0/0
scope: link
Note
アドレスは文書用に適当なものになっています。
ファイル設置後は netplan apply
でインターフェースが設定されているか確認します。
$ sudo netplan apply
$ echo `ip -6 tunnel show mape0`
mape0: ip/ipv6 remote 2001:db8:a120::9 local 2001:db8:12c0:f200:ee:86ff:fe0:3200 encaplimit 0 hoplimit 64 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)
終わり
特別なことはしていないので、参考にしたページからの差分はこれくらい。
おそらくDS-Liteの人はCE側でのNATの設定が要らないから、上記のsysctlとnetplanの設定を入れるだけなのではないかと思います。
VDSLのへっぽこ回線だけど、PPPoE IPv4が時間帯で20~50 Mbpsくらいをふらふらするのに比べると大体85 Mbps overな数字が出るので、オフロード回線としては良さそうです。
色々と組み込んだら自宅内サービス開始出来るかなと思うので、僕もそろそろIPoE始めようかなと思います。