SoftEther VPN をインストールした初期状態では、IPsec 機能は有効になっていません。以下の方法を参考にして、IPsec 機能を有効にしてください。
VPN Server の設定方法は以下を参考にしてください。
VPN サーバー管理マネージャ (Windows 上で動作する GUI アプリケーション) から IPsec 機能が搭載された版の VPN Server サービスにサーバー全体の管理者モードで接続すると、[IPsec / L2TP 設定] というボタンが新たに追加されていますので、これをクリックしてください。
すると、以下のような画面が表示されます。
IPsec サーバー機能は、いくつかのコンポーネントに分かれていますが、この画面で個別に有効化 / 無効化することができます。
上記の設定画面に関する補足説明を以下に記載いたします。
VPN コマンドライン管理ユーティリティ (vpncmd) で IPsec 機能を設定するには、[[IPSecEnable コマンドhttps://ja.softether.org/4-docs/1-manual/6/6.3#6.3.69_.22IPsecEnable.22:_IPsec_VPN_.E3.82.B5.E3.83.BC.E3.83.90.E3.83.BC.E6.A9.9F.E8.83.BD.E3.81.AE.E6.9C.89.E5.8A.B9.E5.8C.96_.2F_.E7.84.A1.E5.8A.B9.E5.8C.96]]を使用します。
詳しいパラメータの指定方法については、「IPsecEnable ?」と入力してご確認ください。
L2TP サーバー機能を有効にした SoftEther VPN Server に L2TP に対応した VPN クライアントから VPN 接続する場合においては、クライアント側で指定するユーザー名に「仮想 HUB 名」を含めることを原則とします。
たとえば、SoftEther VPN Server 上に「HUB1」と「HUB2」という 2 つの仮想 HUB があるとします。そして、HUB1 にはユーザー jiro が、HUB2 にはユーザー yas が登録されているとします。
この場合は、jiro@hub1 または yas@hub2 のように、「ユーザー名@仮想 HUB 名」の形で L2TP 接続を行う際のユーザー名を指定してください。(ユーザー名、仮想 HUB 名の文字列は大文字・小文字を区別しません。)
ただし、接続時のユーザー名で仮想 HUB が省略 ('@' 以降の文字列が指定されていない) された場合は、あらかじめ IPsec サーバー機能の設定画面で選択されているデフォルトの仮想 HUB が選択されます。
たとえば、デフォルトの仮想 HUB として「HUB2」を選択している場合は、ユーザー yas は「yas」という文字列だけでも仮想 HUB に接続することができます。
L2TP サーバー機能を有効にした SoftEther VPN Server に L2TP に対応した VPN クライアントから VPN 接続する場合においては、クライアント側で指定するユーザー名に「仮想 HUB 名」を含めることを原則とします。
たとえば、SoftEther VPN Server 上に「HUB1」と「HUB2」という 2 つの仮想 HUB があるとします。そして、HUB1 にはユーザー jiro が、HUB2 にはユーザー yas が登録されているとします。
この場合は、hub1\jiro または hub2\yas のように、「仮想 HUB 名\ユーザー名」の形で L2TP 接続を行う際のユーザー名を指定してください。(ユーザー名、仮想 HUB 名の文字列は大文字・小文字を区別しません。)
ただし、接続時のユーザー名で仮想 HUB が省略 ('\' 以前の文字列が指定されていない) された場合は、あらかじめ IPsec サーバー機能の設定画面で選択されているデフォルトの仮想 HUB が選択されます。
たとえば、デフォルトの仮想 HUB として「HUB2」を選択している場合は、ユーザー yas は「yas」という文字列だけでも仮想 HUB に接続することができます。
L2TP におけるユーザー認証手続きにおいて L2TP VPN クライアントから指定されたユーザー名とパスワードは、仮想 HUB のユーザー認証モジュールに渡されます。
従って、仮想 HUB には L2TP VPN クライアントに入力するユーザー名とパスワードがあらかじめ登録されている必要があります (または、アスタリスクのユーザー名のユーザー '*' において Radius 認証や Active Directory 認証などの外部ユーザー認証が有効になっている必要があります)。
そのため、「証明書認証」のユーザーとしては L2TP VPN クライアントからは接続することができません。
EtherIP / L2TPv3 を使用する場合は、EtherIP / L2TPv3 設定項目中の [サーバー機能の詳細設定] ボタンをクリックして、EtherIP / L2TPv3 クライアント (ルータ等) が VPN Server に対して IPsec 接続を行おうとする際に提示される ISAKMP (IKE) Phase 1 の ID 文字列と、接続先の仮想 HUB や仮想 HUB 内のユーザーの設定との関連付けを事前に登録しておく必要があります。
なお、登録する ID 文字列として「*」 (アスタリスク) を指定して定義すると、その定義はすべての ID のルータからの接続に使用されます。
SoftEther VPN の IPsec 機能を有効にする場合は、オペレーティングシステムに標準で付属している IPsec / L2TP 通信機能や関連サービスがすでに稼働されている場合は、それらの機能やサービスを停止することを推奨します。また、オペレーティングシステムに標準付属でない、後から追加でインストールしたプログラム等 (市販の IPsec / L2TP プログラム等) についても同様です。
SoftEther VPN の IPsec / L2TP 機能と、その他の会社が開発した同様の機能とは、同一ポート (UDP 500, 4500, 1701) の使用について競合する場合があります。このような場合、通信動作を正常に行うことができなくなる場合があります。
たとえば、Windows の「ルーティングとリモートアクセス」サービスは停止させてください。
なお、SoftEther VPN の IPsec 機能を有効にする場合においては、Windows の IPsec の上記 UDP ポートを占有するサービスは自動的に一時停止されます。
L2TP では、通常は VPN クライアント側では VPN 内で使用する IP アドレスは手動 (固定) で設定せずに、VPN サーバー側から割当てられたものを使用します。
(Windows など一部の OS では L2TP クライアント側で IP アドレスの固定設定が可能ですが、iPhone や iPad などではそもそも固定 IP アドレスの設定がありません。)
L2TP VPN クライアントが仮想 HUB に接続しようとする際には、仮想 HUB の Ethernet セグメント上で DHCP サーバーが動作している必要があります。
DHCP サーバーにより、L2TP VPN クライアントに対して自動的に IP アドレスが割当てられます。また、サブネットマスク、DNS サーバーアドレス、デフォルトゲートウェイ等の VPN 内での通信に必要なパラメータも DHCP サーバーによって割当てられます。そのため、VPN 接続先の仮想 HUB の Ethernet セグメントに DHCP サーバーが存在しない場合は L2TP による VPN 接続ができません。
DHCP サーバーはローカルブリッジ先の LAN (社内 LAN など) に設置されているものを使用することもできますし、接続先の VPN セグメントにそのような DHCP サーバーがない場合は、SecureNAT 機能の仮想 DHCP サーバー (仮想 HUB ごとに稼働させることができます) を使用することもできます。
VPN Server とクライアントとの間に NAT がある場合の注意事項は以下のとおりです。
NAT (NAPT) の背後に IPsec 機能を有効にした VPN Server を設置する場合は、インターネットからグローバル IP アドレス宛に届いたパケットのうち、以下の種類のパケットを VPN Server に割り当てているプライベート IP アドレスに転送 (フォワーディング、マッピング) するように NAT を設定してください。
また、インターネットと VPN Server との間にファイアウォールやパケットフィルタが設置されている場合も、上記のポートを送信元 / 宛先とする UDP パケットを通過させるように設定してください。
SoftEther VPN Server に搭載されている IPsec サーバー機能は、最新の「NAT トラバーサル」 (RFC 3947 Negotiation of NAT-Traversal in the IKE) に対応しています。
したがって、VPN クライアント側に NAT が存在していても、特に NAT における設定の必要はありません。
ただし、ホワイトリスト方式のファイアウォールやパケットフィルタが設定されている場合は、UDP ポート 500、4500 宛の UDP パケットを透過させる必要があります。