MAP-EでのIPsec接続

# はじめに
IPv6回線サービスの一種であるMAP-Eを使用しているルータからIPv4アドレスでインターネット上の某SASE製品とIPsec接続する機会がありました。
当初、MAP-E機器からインターネット側の機器とIPsecできるか疑問視されていましたが結果として動作しました。
この記事では、MAP-Eの特徴とMAP-E拠点からインターネット側にある対向機器とのIPsec接続におけるポイントをまとめてみます。

※IPv4 PPPoEとMAP-Eの併用環境ではPPPoE側でIPsec接続出来ますが、PPPoE契約がない環境での話になります

# MAP-Eとは
MAP-E(Mapping of Address and Port Encapsulation）はIPv4アドレス枯渇対策として考えられたIPv4 over IPv6の技術の1つです。MAP-EではIPv4パケットをIPv6パケットの中にカプセル化することにより、 IPv6のみのネットワークを通過できるようにします

他にMAP-Tという手法もあります。
MAP-TではIPv4パケットをカプセル化するのではなく、 IPv6アドレスをIPv4アドレスに変換するNAT64を元にしてヘッダの書き換えを行う技術です。

MAP-Eは、MAP-Tと比較しIPv4ヘッダの情報を破壊しないこと、ヘッダチェックサムの再計算が発生しないことが利点とされています。
上記のようなMAPテクノロジーによってIPv6網に接続しながらグローバルIPv4を節約しインターネット上でのIPv4通信が可能になります。

[JPNIC：インターネット用語1分解説～MAP-Eとは～](https://www.nic.ad.jp/ja/basics/terms/map-e.html)

MAP-Eの概要図です。
![2023-05-31 13_51_59-通知センター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361515/e7d4247b-6ba3-5465-2264-f3752a39660d.png)

徹底解説v6プラスを参考にさせていただきました。
https://www.jpne.co.jp/ebooks/v6plus-ebook.pdf

# MAP-Eの制約
MAP-Eには固定IPv4型と共有IPv4型の契約形態があり、今回は共有IPv4型でした。
共有IPv4型 MAP-Eは仕組み上、以下のような制約があります。

**①グローバルIPv4アドレスが複数のユーザーで共有となる**
1顧客であっても複数拠点で使用するIPv4が共有になる可能性があります。
MAP-Eでは「IPアドレス」＋「ポート番号」でユーザーを区別しているので通信は正常に行えます。

**➁各ユーザーごとに割り当てられるポート番号の数やレンジに制約がある**
**Well Knownポートは割り当てられません。**
1024番以降からユーザーごとに240や1008個の割当てとなっています。
割り当てるポート数はプロバイダによって違うようです。
ポート番号がプロバイダによって割り当てられるので任意のポートの開放が出来ません。従って、MAP-E拠点ではサーバー公開等が不可となります。(例：80/443にインターネット外部から接続できない）


外部からの接続が要件としてある場合は固定IPアドレスが使えてポート番号の制約がない固定IPv4型を選択しましょう。

# MAP-EでのIPsec接続の前提
インターネット上の対向機器とIPv4でIPsec接続するためにはMAP-E Tunnel接続が前提となるので図のようなTunnel over Tunnelの二重トンネル構成となります。
![2023-06-01 12_58_26-Qiita_MAP-E素材.pptx - PowerPoint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361515/9c970523-76ac-f5f8-cf1a-9e11715db911.png)

# MAP-EでのIPsec接続のポイント
## ①NAT-Tを使用する
NAT越えの構成となるのでNAT-T(NAT-Traversal)が必要です。暗号化パケットはUDPカプセル化を行います。
**製品やベンダーによってNAT-Tはデフォルトで無効化されているので注意が必要です。**
これにハマって接続当初、暗号化通信に失敗し解決するまでに時間がかかりました。
![2023-05-31 16_46_07-通知センター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361515/34c08540-b36d-c57e-bf3a-d3e5b8c83630.png)

## ➁IKEv2の設定でIKEローカルIDをIPアドレスではなく、ID(ID/FQDN/Mail Address)を使用する
一般的にはIPアドレスをローカルIDにする設定が多いと思いますが、
MAP-E CEのローカルIDでIPアドレスを使用しないことで動的IP環境でのIPsec接続が可能です。
また、複数のMAP-E CEで同一グローバルIPを共有する構成であってもIPsec対向機器観点では個別のピアごとのTunnelとして取り扱いが可能です。(ピアごとにIDを識別します)
MAP-Eに限らず、動的IP環境からのIPsec接続で非常に有用な手法です。
![2023-05-31 16_56_47-通知センター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361515/75adafa6-798b-c4a9-8f86-5d010b8cf077.png)

## ③MAP-E CEをIPsecのInitiatorに設定する
ポート番号の制約があるためMAP-E側をIPsecの待ち受け機器(Responder)とする構成は出来ません。
MAP-CE側は必ずInitiatorとして動作する必要があります。
製品によってはInitiatorやResponderを設定で固定化することが出来るので利用しましょう。
![2023-05-31 17_02_25-通知センター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361515/6da9cd40-c3f2-32e0-058b-fc750d85fe27.png)

## ④IPsec Tunnel over MAP-E Tunnelが動作すること
MAP-E Tunnelを送信元インターフェースとしてIPsec Tunnelを構成し、動作できるかどうか。(トンネル二重化構成)
ニッチな構成となるのでサポートを明言しているベンダーがあるか不明です。
検証した環境ではIPsec SAは正常に確立され、暗号化通信もできました。
メーカーへのサポート確認は行っていないので、もし試される場合は自己責任でお願いします。

MAP-E CEルータのトンネル設定抜粋です。製品はNEC IX シリーズです。
NEC製品は不慣れなので設定が汚いかもしれませんがご容赦ください。

```ruby:設定例
interface Tunnel1.0
  description MAP-E TUNNEL
  tunnel mode map-e ocn
  ip address map-e
  ip tcp adjust-mss auto
  ip napt enable
  no shutdown
!
interface Tunnel2.0
  description IPsec TUNNEL
  tunnel mode ipsec-ikev2
  ip unnumbered Tunnel1.0
  ip tcp adjust-mss auto
　ikev2 child-proposal enc aes-cbc-256
  ikev2 child-proposal integrity sha2-256
  ikev2 connect-type auto
  ikev2 dpd interval 10
  ikev2 ipsec pre-fragment
  ikev2 local-authentication id rfc822-addr hoge@example.com
  ikev2 nat-traversal keepalive 20
  ikev2 negotiation-direction initiator
  ikev2 outgoing-interface Tunnel1.0
　ikev2 sa-proposal enc aes-cbc-256
  ikev2 sa-proposal integrity sha2-256
  ikev2 sa-proposal dh 2048-bit 
  ikev2 peer x.x.x.x authentication psk id ipv4 x.x.x.x
　no shutdown
!
```


これを言ったら本末転倒なんですが、IPv6同士のIPsec接続ができたら一番シンプルでスマートな構成にできます。
今回の対向機器はIPv6でのIPsecはサポートしていなかったのでトンネル二重構成が必要となりました。


# 参考
[ネットワークチェンジニアとして：NEC IXのIKEv2 IPsec設定 片拠点 不定IPアドレス](https://changineer.info/network/nec_ix/nec_ix_ikev2_any.html)