IPv6 IPoE＋MAP-E＋二重ルータ環境でのOpenVPN

#1.はじめに

フレッツのIPv6 IPoE接続でのMAP-EによるIPv4通信で、HGW(PR-500KI)配下にYAMAHA RTX1210がある環境で、OpenVPNを使用する設定です。
証明書等の作成手順は割愛し、ネットワーク設定を主に記述しています。

#2.ネットワーク構成

[YAMAHA RTX1210でL2TPv3/IPsecとL2TP/IPsecの同時使用(不安定) - Qiita](https://qiita.com/mayo00/items/9cd9d5b8b5871b00bcd4)の拠点1と同じで、IPv6 IPoE接続と、IPv4 PPPoE接続の両方があります。OpenVPNの通信はIPv6 IPoEのMAP-E(IPv4 over IPv6)で受けます。

![20191226.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/45a745f9-62a5-eb02-9ab6-f49dc36b54f4.png)

- 拠点1
  - NTT東日本圏内
  - ドコモ光
  - BIGLOBE IPv6オプション
  - ひかり電話契約あり(固定電話を一応用意しているけど使っていない)

|IPアドレス|内容|
|---|---|
|192.168.1.1|PR-500KI|
|192.168.1.254|RTX1210 LAN2|
|192.168.2.1|RTX1210 LAN1|

#3.サーバ側コンフィグファイル

当方の環境ではTAP(ブリッジ方式)でうまくいかなかったため、TUN(ルーティング方式)にしています。アドレス空間は192.168.3.0/255.255.255.0です。
配信済事業者ソフトウェアでIPv4での利用可能なポートを確認し、当方の場合は22240が空いていたため、それを使用しています。

```server.ovpn
port 22240
proto udp
dev tun
dev-node MyTap
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
server 192.168.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.2.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
tun-mtu 1280
fragment 1280
mssfix 1240
```

#4.クライアント側設定ファイル

サーバ側に合わせてTUN、UDP、ポート番号22240、ta.keyありにしています。＜サーバIPv4アドレス＞はMAP-EのIPv4アドレスで、配信済事業者ソフトウェア一覧 http://192.168.1.1:8888/t で確認可能です。

```client.ovpn
client
dev tun
dev-node MyTap
proto udp
remote ＜サーバIPv4アドレス＞ 22240
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
tun-mtu 1280
fragment 1280
mssfix 1240
```

#5.サーバ・クライアント設定ファイルの特記事項

下記部分は、当方の通信環境に合わせた設定で、MTU等を小さくしています。これがないと接続できませんでした。L2TPv3/IPsec接続も行っていて、そのトンネルがMTU=1280なので、それが影響しているかもしれません。チューニングはしていないため、もう少し大きな値でも大丈夫な可能性があります。MTUとfragmentは同じ値、MSSはMTU-40にしています。

```
tun-mtu 1280
fragment 1280
mssfix 1240
```

#6.証明書等の作成

Easy-RSA2等で作成可能です。

#7.レジストリ設定

サーバOSがWindowsでTUNの場合、レジストリ \\\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters の IPEnableRouter を 1 にして、Windowsを再起動する必要があります。

#8.PR-500KI設定

- IPv6パケットフィルタ設定（IPoE）
  - IPv6セキュリティのレベル

|項目|値|
|---|---|
|IPv6ファイアウォール機能|無効|

- 配信済事業者ソフトウェア一覧 http://192.168.1.1:8888/t
  - IPv4設定(BIGLOBE)
     - 静的NAPT設定

|対象プロトコル|公開対象ポート|宛先アドレス|宛先ポート|
|---|---|---|---|
|UDP|22240|192.168.1.254|22240|

UDPポート22240をRTX1210に転送しています。

#9.RTX1210設定

[YAMAHA RTX1210でL2TPv3/IPsecとL2TP/IPsecの同時使用(不安定) - Qiita](https://qiita.com/mayo00/items/9cd9d5b8b5871b00bcd4)の拠点1のコンフィグと同じで、IPv6 IPoE接続のnat descriptorが下記の通りです。L2TPv3とIPsec関連の設定を行っています。

```
ip lan2 nat descriptor 1

nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.2.1 esp
nat descriptor masquerade static 1 2 192.168.2.1 udp 500
nat descriptor masquerade static 1 3 192.168.2.1 udp 1701
nat descriptor masquerade static 1 4 192.168.2.1 udp 4500
```

ここに、OpenVPNサーバのLAN内アドレスが 192.168.2.100 の場合に、下記の設定を追加し、UDPポート22240をOpenVPNサーバに転送します。

```
nat descriptor masquerade static 1 5 192.168.2.100 udp 22240
```

#10.その他

拠点2にも同じ設定(ポート番号は環境に合わせて変更)を行っていて、一時接続できていたのですが、L2TP/IPsecの設定をしたりしているうちに、なぜか接続できなくなっています。

#11.参考

[WindowsをOpenVPNサーバーにする – あき☆すた](https://aky-sta.jp/2019/02/12/windows%E3%82%92openvpn%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E3%81%99%E3%82%8B/)