VPS（SoftEther VPN Server）とIPv6接続でL2TPv3/IPsecトンネルを構築して、IPv4 PPPoE接続を使わずにVPNを実現した方法の概要

IPv4 over IPv6（DS-Lite（transix））でインターネットに接続している環境の場合で、VPNを実現させる方法として、VPN用としてIPv4 PPPoE接続を別途用意するのが一般的だと思います。

但し、折角IPv4 PPPoE接続の速度の遅さ（網終端装置の輻輳）から逃れるために、IPv4 over IPv6（DS-Lite（transix））にしたのに、VPNはIPv4 PPPoE接続から逃れられないといったことがいまいちと思い、別の方法を模索してみました。

そして、網終端装置の輻輳の影響を受けないIPv6を活用してVPNを構築する方法を見つけ、構築に成功しました。

構築方法のベースとなった内容は、こちらのサイト

YAMAHA RTX シリーズからの L2TPv3 を用いた VPN 接続方法 (IPv4, IPv6 対応)
https://ja.softether.org/4-docs/2-howto/Other_VPN_Appliance_Setup_Guide/9-yamaha-rtx-l2tpv3

で紹介されている内容のうち、「YAMAHA ルータにおける設定情報例 #4 (IPv6 で通信を行う場合 フレッツ網内折り返し通信対応)」となります。

IPv4 over IPv6（DS-Lite（transix））にて、この方法でのVPN動作を確認しましたが、IPv6を使用しているため、他のIPv6が使用できるインターネット回線でも使用出来ます。

現在、自分のインターネット回線は、IPv4 over IPv6（DS-Lite（transix））からNURO光に変わりましたが、引き続き同じ方法にてVPNを使用できています。

現在のNURO光でこの方法でのVPN接続イメージは、こんな感じです。
![20210425_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1391370/b884dee5-7bb9-6555-4e6b-8460ab03b420.png)


構築方法の概要ですが、以下となります。


1．IPv6に対応したVPSを借ります。
自分は、こちらのVPSのKVM（1コア/1GB、ストレージ20GBで月額660円（税込））を借りました

KAGOYA CLOUD VPS
https://www.kagoya.jp/cloud/vps/price/

OSは、Linux（CentOS 7.2 ※2019年8月頃に構築してます）です。

２．VPSのLinux（CentOS 7.2）にSoftEther VPN Serverをインストールします。

３．自宅のWindows 10のPCに、SoftEther VPN Server Manager for Windowsをインストール

４．SoftEther VPN Server Manager for WindowsからVPS上のSoftEther VPN Serverに接続（IPv6、IPv4どちらでもOK）して、以下の設定を行った後、YAMAHAルーターの設定（Config）構築する

上記で紹介した、こちらのサイト

YAMAHA RTX シリーズからの L2TPv3 を用いた VPN 接続方法 (IPv4, IPv6 対応)
https://ja.softether.org/4-docs/2-howto/Other_VPN_Appliance_Setup_Guide/9-yamaha-rtx-l2tpv3

の「YAMAHA ルータにおける設定情報例 #4 (IPv6 で通信を行う場合 フレッツ網内折り返し通信対応)」が参考になります。

・仮想HUBを作成する

・仮想HUBのユーザー（VPNクライアントPCがL2TP/IPsecで接続するユーザー）を作成する

・仮想HUBのユーザー（YAMAHAルーターがL2TPv3/IPsecで接続するユーザー）を作成する

・EtherIP / L2TPv3 over IPsec サーバー機能を有効にする

・EtherIP / L2TPv3 over IPsec サーバ機能の詳細設定画面にて、
仮想HUBのユーザー（YAMAHAルーター用）とISAKMP Phase 1 IDの紐付けを行う

※YAMAHAルーターのConfigでは、この「ISAKMP Phase 1 ID」が用いられる

・IPsec Pre-Shared Key (事前共有鍵) 文字列を設定する

ここまで設定したら、YAMAHAルーターに「VPSのIPv6アドレス」「ISAKMP Phase 1 ID」「IPsec Pre-Shared Key (事前共有鍵) 文字列」をもとに設定（Config）する。

なお、YAMAHAルーターの設定（Config）は、シリアル（RS-232C）接続で行う。

5．YAMAHAルーターの設定（Config）が終わったら、YAMAHAルーターとVPS（SoftEther VPN Server）が正常にL2TPv3/IPsecの通信が出来ているか疎通確認する。

疎通確認するYAMAHAルーターコマンドは、「show status l2tp」「show ipsec sa」で、こちらのサイトの「状態の確認」セクションに実行例が掲載されています。

YAMAHA RTXシリーズを利用した社内ネットワークの作り方（L2TPv3）
https://rin-ka.net/l2tpv3/

6．VPNクライアントPCがL2TP/IPsecで接続するための設定を行う

接続先はVPS（SoftEther VPN Server）で、IPv6アドレスでもIPv4アドレスでもどちらでもOKです。


ここまで設定したら、上記の図のように、

「VPNクライアントPC」－－（L2TP/IPsec トンネル）－－「VPS（SoftEther VPN Server）」
－－（L2TPv3/IPsec トンネル）－－「YAMAHAルーター」－－「自宅LAN」

といった通信経路にて、VPNが使用出来ます。


なお、自宅のインターネット回線用ルーターなどで、IPv6ファイアーウォールを使う場合、IPv6 L2TPv3/IPsec トンネルを使う為のフィルター設定で通過させることが必要だと思われるプロトコル等は、以下の２個となります。

ESPプロトコル 
UDP 500番ポート

※IPv4と異なりIPv6はNAT越えでないため、IPsec - NAT Traversal（NATトラバーサル）用設定の「UDP 4500番ポート」は不要

これは、L2TPv3/IPsecは、「L2TPv3パケットをIPsecでカプセルする」ため、フィルター設定上は、IPsecで使用するプロトコル等に対して設定すればよいことになります。

参考となるサイトは、これらとなります。

IPsecを通すフィルタを教えてください
http://www.rtpro.yamaha.co.jp/RT/FAQ/IP-Filter/public-ipsec-connection.html

IPsec ( Security Architecture for IP )
https://www.infraexpert.com/study/ipsec5.html

ただ、自宅のインターネット回線（NURO光）では、IPv6ファイアーウォールでフィルター設定でESPプロトコルに対応していないため、IPv6ファイアーウォール機能をOFFにしています。