AWS EC2(Windows)でSoftEtherを用いたVPNを設定する

はじめに

今回はEC2でSoftEtherを用いて、自宅PC(Windows)からVPN接続(L2TP over IPsec)するまでの手順をまとめました。

以前、Linux(CentOS)の設定手順を紹介しましたが、今回はWindowsサーバーでGUIベースの設定となります。
Linuxの設定手順はこちら

VPNはサーバアクセスのセキュリティ対策の1つです。サーバアクセスへのセキュリティ対策は大きく以下4つが挙げられます。

サーバアクセスに関わるセキュリティ対策
  • サーバにアクセスできるIPアドレスを限定する
  • サーバ環境までの専用線をひく
  • サーバにVPNで接続する
  • サーバにセッションマネージャで接続する

まずはサーバへのアクセスをIP制限できないか検討すると思いますが、固定IPを持っていない場合は難しいときがあります。
そのようなとき、VPNの使用が候補に挙がるのではないでしょうか。(専用線は高いので。。)

また、AWSでサーバーを建てた場合、VPN以外にもセッションマネージャの利用も検討できます。セッションマネージャはAWSアカウント(IAMユーザー)でアクセスを絞る方法です。(設定方法はこちら
ただし、ほかのAWSリソースにアクセスできないようアカウントの権限を適切に絞る必要があることに注意が必要です。

今回はサーバアクセスへのセキュリティ対策としてVPNを使用する際に、設定手順を思い出したり、調査する手間を省くことを目的とします

時間目安と前提

作業時間の目安

本手順は15分~30分で完了する程度の内容です。

環境などの前提事項

本記事で紹介する手順は以下の環境が前提です。

  • VPN Server : EC2(Windowsさーバー)
  • クライアントPC: Windows10

EC2のAWS設定

まずは、EC2でWindowsサーバを建てていきます。
注意するべきはセキュリティグループとサーバのアクセス先の固定です。

セキュリティグループ

VPNの通信を通すために、以下のインバウンドを許可してください

プロトコルはUDPなので注意してください。
また、初回はRDPなどでアクセスする必要があるので、TCPの3389ポートをあけておくことも忘れないようにしてください。(3389ポートはVPN接続確認後にポートを閉じます。)

アクセス先の固定

EC2は通常起動するたびにパブリックIPアドレスが変化します。そのたび、VPN接続先情報を書き換えるのが面倒な場合は、以下の方法でアクセス先を固定することを検討してください。

アクセス先の固定方法
  • Elastic IPを使用してパブリックIPアドレスを固定する
  • ダイナミックDNSのようにEC2が起動するたびにIPアドレスを固定ドメインに紐づける
  • SoftEtherのダイナミックDNSを利用して固定ドメインを取得する
  • SoftEtherのVPN Azure Cloudを利用して固定ドメインを取得する

Elastic IPを使用してパブリックIPアドレスを固定する

Elastic IPを使用する場合、月額400円程度かかります。
設定は非常に楽で、Elastic IPを取得してEC2に紐づけておけば、パブリックIPアドレスが固定できます。

ダイナミックDNSのようにEC2が起動するたびにIPアドレスを固定ドメインに紐づける

ダイナミックDNSのように起動するたびにIPアドレスを固定ドメインに紐づける方法は別の記事で詳細に解説しています。こちらはEC2起動時にRoute53の情報を書き換えるスクリプトを1本流すイメージです。15分程度あれば設定できる内容なので上記のElastic IPアドレス費用を圧縮したい方にオススメです。(設定方法はこちら

SoftEtherのダイナミックDNSを利用して固定ドメインを取得する

SoftEtherにはダイナミックDNS機能が組み込まれています。自分のドメインを持っていない場合は、こちらを利用することでXXXXXX.softether.netといったドメインを払い出して利用することができます。
こちらの設定は以下の「VPN Serverの設定」の中で解説します。

SoftEtherのVPN Azure Cloudを利用して固定ドメインを取得する

パブリックドメインを持っていないサーバーにVPNを通す際にはSoftEtherに組み込まれているVPN Azure Cloudを利用するのが良いです。XXXXXX.vpnazure.netといったドメインが払い出されるのでそちらを利用できます。

EC2などパブリックドメインが割り当てられるようなサーバーを使用する場合には上記のダイナミックDNSで十分ですが、こちらも設定方法を以下の「VPN Serverの設定」の中で解説します。

VPN Serverのインストール

それでは構築したEC2にVPNサーバーをインストールしていきます。

SoftEtherのダウンロード

VPNサーバーとしてはSoftEtherを使用します。
まずはSoftEther公式サイトからソフトをダウンロードします。

「ソフトウェア」、「コンポーネント」、「プラットフォーム」、「CPU」を選択するとダウンロード用のリンクが出るので最新版のSoftEther VPNをダウンロードします。

SoftEtherのインストール

ダウンロードしたexeファイルを開きSoftEtherをインストールします。
基本的にはすべて「Next >」をクリックすれば問題ありません。

SoftEtherの設定

インストールまで完了したらSoftEtherを設定していきます。

仮想ホストの作成

まず、出来上がったショートカットをクリックしServer Managerを開き「Connect」ボタンを押下します。
するとAdministratorパスワードの設定画面が出てくるのでパスワードを設定します。

パスワード設定後にSoftEther VPN Serverセットアップ画面が出るので、「Remote Access VPN Server」を選択して「Next >」をクリックします。

その後VPN Serverを初期化してよいか聞かれるので「Yes」をクリックすると、仮想ホストの名前を聞かれるので仮想ホストの名前を適当に入力します。

ダイナミックDNSの設定

ダイナミックDNSを利用しない場合

Elastic IPを使用していたり、こちらの記事のように独自でダイナミックDNS機能を実装している場合、SoftEtherのダイナミックDNSを利用する必要はありません。

その場合は「Exit」ボタンを押下します。

ただし、ダイナミックDNSを使用しない場合でもVPN Azure Cloudを利用する場合は注意が必要です。
VPN Azure Cloudのドメインは下記の「vpn223523638.softether.net」の「vpn223523638」の部分がサブドメインになります。つまり、「vpn223523638.vpnazure.net」が接続先ドメインとなります。

VPN Azure Cloudのドメインを変更したい場合はこちらの画面で「vpn223523638」の部分を任意の値に変更し、「Set to Above Hostname」を押下してから「Exit」ボタンを押下します。

ダイナミックDNSを利用する場合

SoftEtherのダイナミックDNSを利用する場合は「vpn223523638」の部分を任意の値に変更し、「Set to Above Hostname」を押下してから「Connect via Proxy Server …」ボタンを押下します。

その後、「Direct TCP/IP Connection (No Proxy)」を選択し「OK」をクリックし、「Exit」ボタンでダイナミックDNS設定画面を消します。

通信プロトコル設定

次に通信プロトコルを設定していきます。

L2TP over IPsecを使用する場合はここでチェックを入れます。
ただし、VPN Azure Cloudを利用する際にはL2TP over IPsecは使用できないので注意してください。

その後、「IPSec Pre-shared key」の項目に事前共有鍵を入力します。
事前共有鍵は事前にこちらのサイトなどで作っておくとよいです。

「OK」ボタンを押すと、事前共有鍵が10文字以上の時警告文が出ますが、Android端末から接続しない場合は「No」をクリックしてそのまま続行します。

VPN Azure Cloudの設定

次にVPN Azure Cloudの設定を行います。
VPN Azure CloudはパブリックIPを持っていないサーバーでもVPN接続が可能になる強力な仕組みであり、ファイアーウォールなども貫通するような接続方法なので使用する際は社内ポリシーに反していないか等確認したうえで利用してください。

VPN Azure Cloudを利用しない場合

VPN Azure Cloudを利用しない場合は「Disable VPN Azure」を選択し、「OK」を押下します。

VPN Azure Cloudを利用しない場合

VPN Azure Cloudを利用しない場合は「Enable VPN Azure」を選択し、「OK」を押下します。
「Current VPN Azure Hostname」欄に書いてあるホスト名が接続先のアドレスになります。

VPNユーザーの作成

次にVPNユーザーを作成していきます。
「Create Users」を押下し、ユーザー作成画面を開きます。

「User Name」にユーザー名を入力し、Auth Typeは「Password Authentication」を選択します。
その後、「Password」を入力して「OK」を押下します。

その後、作成したユーザーの確認画面が出ますが閉じてしまって問題ないです。

SecureNATの設定

DHCP機能を使用するためSecureNATを有効化する必要があります。SoftEtherに組み込まれたDHCP機能を使用しない場合は、別途DHCPサーバにつなげたりする必要が出てくるため、そのような作業を省略するためにSecureNATを使用します。

まず、VPNサーバー管理画面で「Manage Virtual Hub」ボタンをクリックし、「Virtual NAT Virtual DHCP Server」ボタンを押下します。

その後、「Enable SecureNAT」ボタンを押下すると、本当に有効化するか聞かれるので「OK」を押下します。

ここまでで、VPNサーバーの設定は完了です。

クライアントPC(Windows)の設定

クライアントPC側の接続設定をしていきます。
まず、コルタナ検索窓で「VPN」と入力し「VPNの設定」を起動します。

VPN Azure Cloud以外のVPNサーバに接続する場合

「VPN接続を追加する」で以下のように設定します。
EIPのIPアドレスと書いてある場所は、独自ダイナミックDNSであれば設定したドメインを設定し、SoftEtherのダイナミックDNSであれば設定したドメイン(XXXXXX.softether.net)を入力します。

また、ユーザー名の欄は「ユーザー名@仮想ホスト名」となるので注意してください。

あとは以下のように接続できれば完了です。

リモートデスクトップなどで接続する際にはプライベートIPでの接続になるので注意してください。

VPN Azure Cloudを使用するVPNサーバに接続する場合

VPN Azure Cloudを使用する場合は、「VPNの種類」は「自動」を選択します。

これでVPN接続できれば問題ありませんが、「PPPリンク制御プロトコルを終了しました」というエラーが出る場合があります。その際にはWindows画面右下のネットワークアイコンを右クリックし、「ネットワークとインターネットの設定を開く」を押下します。
その後、「ネットワークと共有センター」、「アダプターの設定の変更」とクリックします。

今回設定したVPN接続設定を右クリックし「プロパティ」を押下します。
プロパティの中のセキュリティタブで「データの暗号化」を「暗号化が必要」に設定することでエラーが解消されます。

関連記事

最後に本記事で紹介した関連する記事を以下にまとめます。
興味があるものはご覧いただけると嬉しく思います。

Spread the love