SoftEther VPNによるVPN環境構築(14) L2TP/IPsecにおけるIPv6対応

サーバー構築
記事内のリンクには広告が含まれいる場合があります

SoftEter VPN ServerにIPv6でL2TP/IPsec接続ができない問題の原因が判りました。

ここではその調査方法と結果について説明します。

IPv4ネットワーク混雑からIPv6への脱出と弊害

「インターネットが遅い」

これは数年前から誰もが感じている問題でしょう。

9,600baudのモデムを使ってパソコン通信を行っていた時代に比べればインターネット接続の速度は10万倍以上速くなっているにも関わらず、私たちは「遅い」と感じてしまいます。

理由は私たちが速いことに慣れてしまったことが大きいですが、それ以上により速い回線を契約させようと動画などの大容量コンテンツを主体とするサービスを広めてきたにもかかわらず回線の増強が追い付いていないためです。

そこで打開策として考えられたのが「IPv6というバイパス」を使うことでした。

実は混雑しているのはIPv4という従来からのプロトコルを使う回線だけで、新しいIPv6というプロトコルを使う回線は空いていたのです。

そこで回線業者側でIPv4⇒IPv6変換を行い、通信相手に到達する前にIPv6⇒IPv4変換を行うことで「IPv6というバイパス」を使えるような仕組みを作りました。

この恩恵は絶大で、それまでの遅さが嘘のように改善され快適なインターネット通信を行えるようになりました。

このようなサービスのひとつが「v6プラス」なわけなのですが何故か単純なIPv4⇔IPv6変換を行わず、複数の家庭でひとつのグローバルIPv4アドレスを共用させるサービスとしてしまいました。

詳しくは、こちらの記事を参照願います。

その結果、各家庭で利用できるポートが制限されて従来使えていた自宅サーバーサービスの一部が使えなくなりました。

SoftEther VPN ServerへのiPhoneやAndroidからのVPN接続もできなくなってしまいました。

 

本当にSoftEther VPN Serverとのモバイル通信はできないのか

「v6プラス」を有効にしたままiPhoneやAndroidでL2TP/IPsecによるVPN接続は諦めるしかありません。

しかし、IPv6ならば接続できる見込みはあるはずといろいろ調べていた時に、SoftEther VPN User Forumへの海外からの投稿でL2TPが使えているというものがありました。

そのためMVNOで唯一IPv6をサポートしているIIJmioを契約していろいろテストしてみたのですがやはりダメでした。

一度は諦めたのですが、最初から実環境の末端経由で調べなくても、もっとSoftEther VPN Serverに近いところから順に調べてみた方がよいと考えて再度調べてみました。

SoftEther VPN ServerのIPv6サポート

SoftEther VPN ServerのL2TP/IPsecのIPv6サポートについて、SoftEther VPN User Forumに投稿がありサポートしていないとあります。

ただ、この回答には疑問があり、根拠が改版履歴だけなのですがL2TP/IPsecについてIPv6をサポートしているのかいないのか全く記載がありません。

また、SoftEther VPN Serverのマニュアルを見てもどの機能がIPv6をサポートしているのかが明記されておらず、基本的にIPv4とIPv6を区別していないように感じられます。

そのため、まずSoftEther VPN Serverパソコンが接続されているローカルネットワークからL2TP/IPsecの待ち受け状況を調べてみました。

 

まず、nslookupでグローバルIPv6アドレスを確認します。

次にnmapでSoftEther VPN ServerのIPv4ローカルアドレスについて500/udpと4500/dpを調べると開いていることが確認できます。

そしてnmapに「-6」でIPv6を指定し、nslookupで調べたIPv6アドレスについて500/udpと4500/udpを調べると開いていることが確認できます。

SoftEther-VPN-Server-IPv6-L2TP-connect-01

このことからSoftEther VPN ServerはL2TP/IPsecをIPv4でもIPv6でも待ち受けていることが分かります。

 

iPhone、AndroidからのローカルVPN接続テスト

iPhoneやAndroidからSoftEther VPN ServerへのVPN接続はモバイル環境だけでなくローカルネットワークからも行えます。

IPv4接続をテストする場合は、こちらの記事のiOSでは「サーバ」に、Androidでは「サーバーアドレス」に「設定シート」の「6.SoftEther VPN Server パソコンIPアドレス」を入力します。

実際に試してみる場合は、既存の設定を書き換えずテスト用に新しい接続設定を追加した方が良いでしょう。

SoftEther VPN Serverが正しく構築できていればiPhoneからもAndroidからもIPv4によるVPN接続ができます。

次にIPv6接続をテストする場合は「6.SoftEther VPN Server パソコンIPアドレス」の代わりに上記でnslookupで確認したIPv6アドレスを入力します。

この接続設定を使ってiOS 13.1のiPhoneおよびAndroid ver.7のタブレットから接続してみたのですが、接続できませんでした。

この時、SoftEther VPN ServerパソコンでMicrosoft Network Monitor 3.4を使ってパケットを確認してみたのですが、iPhoneとAndroidからはパケット自体が届いていませんでした。

iOSおよびAndroidでIPv6アドレスが認識されないのではと思われるかもしれませんが、iOSの別のVPN接続方法であるIKEv2によるIPv6ネットワークでの接続事例があるため、IPv6アドレスが認識されないということはないようです。

 

パソコンからのローカルVPN接続テスト

SoftEther VPN ServerのIPv6におけるL2TP/IPsec用のポートは開いている。しかし、iPhoneやAndroidからは接続できない。

このような状況からSoftEther VPN ServerのIPv6におけるL2TP/IPsecが機能していない可能性があるためWindows 10パソコンから接続してみることにしました。

SoftEther VPN Serverパソコンと同じローカルネットワークに接続されたWindows 10パソコンで以下の操作を行います。

 

接続の作成

「コントロールパネル」「ネットワークとインターネット」「ネットワークと共有センター」を開きます。

「ネットワーク設定の変更」の「新しい接続またはネットワークのセットアップ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-02

「職場に接続します」を選択して「次へ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-03

「インターネット接続(VPN)を使用します」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-04

「インターネットアドレス」に「設定シート」の「6.SoftEther VPN Server パソコンIPアドレス」を入力し、「接続先の名称」はここでは「ローカルVPN 接続(IPv4)」と入力して「作成」をクリックします。

作成が完了しても何も表示されずウィンドウが閉じるだけです。

SoftEther-VPN-Server-IPv6-L2TP-connect-05

同様にIPv6の接続も作成します。

再度「ネットワーク設定の変更」の「新しい接続またはネットワークのセットアップ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-06

「職場に接続します」を選択して「次へ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-07

既に作成された「ローカルVPN 接続(IPv4)」がありますが「いいえ、新しい接続を作成します」を選択して「次へ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-08

「インターネット接続(VPN)を使用します」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-09

「インターネットアドレス」にnslookupで調べたIPv6アドレスを入力し、「接続先の名称」はここでは「ローカルVPN 接続(IPv6)」を入力して「作成」をクリックします。

SoftEther VPN ServerのIPv6アドレスは一時アドレスを使用するため頻繁に変わります。nslookupで調べてから時間が経っている場合は調べなおした方がよいでしょう。

SoftEther-VPN-Server-IPv6-L2TP-connect-10

「ネットワークと共有センター」の左側の「アダプターの設定の変更」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-11

作成した接続が表示されますので、まず「ローカルVPN 接続(IPv4)」を右クリックして表示されたメニューから「プロパティ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-12

「セキュリティ」タブをクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-13

「VPNの種類」は「IPsecを利用したレイヤー2トンネリングプロトコル(L2TP/IPsec)」を、「データの暗号化」は「暗号化が必要(サーバーが拒否する場合は切断します)」を選択します。

「認証」は「次のプロトコルを許可します」を選択して「Microsoft CHAP Version 2(MS-CHAP v2)」にチェックを入れます。

次に「詳細設定」をクリックして、

SoftEther-VPN-Server-IPv6-L2TP-connect-14

「認証に事前共有キーを使う」を選択して「キー」に「設定シート」の「11.IPsec事前共有鍵」を入力して「OK」をクリックします。

「プロパティ」も閉じます。

SoftEther-VPN-Server-IPv6-L2TP-connect-15

「キー」は保存されない場合があるので、後述のテストで接続に失敗する場合は「キー」が空欄になっていないか確認してください。

 

同じ様に「ローカルVPN 接続(IPv6)」を右クリックして表示されたメニューから「プロパティ」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-35

「セキュリティ」タブをクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-16

「VPNの種類」は「IPsecを利用したレイヤー2トンネリングプロトコル(L2TP/IPsec)」を、「データの暗号化」は「暗号化が必要(サーバーが拒否する場合は切断します)」を選択します。

「認証」は「次のプロトコルを許可します」を選択して「Microsoft CHAP Version 2(MS-CHAP v2)」にチェックを入れます。

次に「詳細設定」をクリックして、

SoftEther-VPN-Server-IPv6-L2TP-connect-17

「認証に事前共有キーを使う」を選択して「キー」に「設定シート」の「11.IPsec事前共有鍵」を入力して「OK」をクリックします。

「プロパティ」も閉じます。

SoftEther-VPN-Server-IPv6-L2TP-connect-18

 

接続テスト

タスクトレイの「ネットワーク」をクリックします。

Wi-Fi接続の場合は「Wi-Fi名」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-19

まずIPv4での接続をテストしますので「ローカルVPN 接続(IPv4)」をクリックして表示された「接続」ボタンをクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-20

最初だけ「サインイン」が表示されるので「設定シート」の「12.仮想HUB ユーザー名」と「13.仮想HUB ユーザーパスワード」を入力します。

仮想HUBが複数ある場合は「12.仮想HUB ユーザー名」の後に「@」を付けてその後に接続する「9.仮想HUB名」を入力します。

「OK」をクリックして接続します。

SoftEther-VPN-Server-IPv6-L2TP-connect-21

問題が無ければ「接続済み」と表示されます。

SoftEther-VPN-Server-IPv6-L2TP-connect-22

「ネットワークと共有センター」を見ると2つのネットワークが表示されているので「イーサネット」と「ローカルVPN 接続(IPv4)」をクリックします。

Wi-Fi接続の場合は「Wi-Fi名」と「ローカルVPN 接続(IPv4)」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-23

IPv4が「ローカルVPN 接続(IPv4)」経由でインターネットに接続していることが分かります。

SoftEther-VPN-Server-IPv6-L2TP-connect-24

テストが終わったら、タスクトレイの「ネットワーク」をクリックして「ローカルVPN  接続(IPv4)」の「切断」ボタンをクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-26

同様にIPv6についてもテストします。

「ローカルVPN 接続(IPv6)」をクリックして表示された「接続」ボタンをクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-27

最初だけ「サインイン」が表示されるので「設定シート」の「12.仮想HUB ユーザー名」と「13.仮想HUB ユーザーパスワード」を入力します。

仮想HUBが複数ある場合は「12.仮想HUB ユーザー名」の後に「@」を付けてその後に接続する「9.仮想HUB名」を入力します。

「OK」をクリックして接続します。

SoftEther-VPN-Server-IPv6-L2TP-connect-28

問題が無ければ「接続済み」と表示されます。

SoftEther-VPN-Server-IPv6-L2TP-connect-29

「ネットワークと共有センター」を見ると2つのネットワークが表示されているので「イーサネット」と「ローカルVPN 接続(IPv6)」をクリックします。

Wi-Fi接続の場合は「Wi-Fi名」と「ローカルVPN 接続(IPv6)」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-30

IPv4が「ローカルVPN 接続(IPv6)」経由でインターネットに接続していることが分かります。

SoftEther-VPN-Server-IPv6-L2TP-connect-31

テストが終わったら、タスクトレイの「ネットワーク」をクリックして「ローカルVPN  接続(IPv6)」の「切断」をクリックします。

SoftEther-VPN-Server-IPv6-L2TP-connect-33

 

iPhone、AndroidからのIPv6経由のL2TP/IPsec接続は不可

以上の結果をまとめると、

  • SoftEther VPN ServerのL2TP/IPsecポートはIPv4、IPv6ともに開いている
  • iPhone、AndroidからIPv6アドレスを指定したL2TP/IPsec接続は失敗
  • Windows 10パソコンからのL2TP/IPsec接続はIPv4、IPv6ともに可能

SoftEther VPN ServerパソコンでMicrosoft Network Monitor 3.4でパソコンから「ローカルVPN 接続(IPv6)」での接続開始からのパケットを見てみると、IPv6の500/udpでのキーのやり取りが確認できます。

SoftEther-VPN-Server-IPv6-L2TP-connect-34

したがって「SoftEther VPN ServerのL2TP/IPsecはIPv6に対応していない」という投稿は嘘ということになります。

パソコンでのテストでもIPv4しかVPNを経由しないためIPv6のL2TP/IPsecをサポートしていると言えるかどうかという問題もありますが、少なくとも最初のキーのやり取りなどがIPv6で正常に行われていることは確かです。

しかし、iPhoneやAndroidからは接続できません。これはiOSやAndroidでのL2TP/IPsecがIPv6をサポートしないということのようです。

実際多くのVPN対応ルーターはIPv6でのL2TP/IPsec接続をサポートしていないようです。

結論としては、SoftEther VPN ServerにL2TP/IPsecを使用したIPv6でのiPhoneやAndroidからの接続は不可能ということになります。

ただし、SoftEther VPNは他にも幾つかのプロトコルをサポートしており、その中のOpenVPNはSoftEther VPN Server Ver.4.31 Build 9727で対応が強化されたので比較的簡単に使えそうです。

実験結果は別途記事にします。

 

まとめ

SoftEther VPN ServerにIPv6でL2TP/IPsec接続ができないのはSoftEther VPN Serverの問題ではなく、iPhoneやAndroidの問題ということが明確となりました。

v6プラスなどを利用したままVPNを使いたいならスマートフォン組み込みのL2TP/IPsecは諦めて他の方法に移行するしかないと思われます。

SoftEther VPN連載記事:

コメント

タイトルとURLをコピーしました