味見日報 - 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始めようかなと思います。