GCEのWindowsファイル共有サーバにリモートアクセスVPN経由でアクセスしてみた

自宅や外出先のPCから、インターネット経由でWindowsファイルサーバにアクセスしたい、というケースはよくあると思います。ただ、ファイル共有サーバのグローバルIPを不特定多数に公開するのはセキュリティ的に望ましくありません。そこで今回はリモートアクセスVPNを利用し、GCEのWindowsファイル共有サーバに、セキュアにアクセスできる仕組みを構築してみました。

1.リモートアクセスVPNとは外部からセキュアにアクセスする手段の一つ

リモートアクセスVPNとは、でインターネットに接続したパソコンやモバイル端末をVPN(Virtual Private Network)トンネル経由で、企業の内部リソース(イントラネット等)に安全にアクセスさせることができる仕組みです。ベンダーによっては「ダイアルアップVPN」、Microsoft用語だと「ポイント to サイトVPN」とも言います。
今回はインターネット上のWindows10 や MacOSの標準VPNクライアントから、直接GCEのWindows2012R2にVPN接続し、VCPの内部IPにアクセスする環境を構築しました。

VPNトンネルを経由することにより、TELNETやFTP、Windowsファイル共有など、LAN前提で利用されているアプリケーションを、インターネット経由で安全に利用することが可能となります。

2.今回の構成

リモートアクセスVPNをGCPで構築するにあたって、利用したサービスは以下の通りです。オンプレミスの拠点とVPNで接続し、内部IPで運用している場合を想定しています。
次項から、順に設定手順を紹介します。

  • プロジェクト
  • VPC
  • ファイアウォール
     -外部アクセス用
     -内部アクセス用
  • GCEインスタンス2台
     -VPNサーバ用 Windows 2012R2
     -内部IP確認用 Windows 2012R2
  • VPNクライアント

3.構築手順

GCPのアカウント作成手順、プロジェクト作成手順は割愛します。
GCPのコンソールにログインし、対象のプロジェクトにログインして下さい。

3-1.VPCネットワークの作成

左ペインの「VPCネットワーク」をクリックし、「VPCネットワークを作成」をクリックします。

以下の設定値でVPCを作成します。
※以降の記載につき、特に指定のない項目はデフォルトです。
※名前は任意となります。他項目で参照するため、変更する場合は適宜読み替えて下さい。

項目 設定値
名前 vpn-test-vpc1
サブネット作成モード カスタム
(サブネットの)名前 vpn-test-subnet1
リージョン ap-northeast1
IPアドレス範囲 172.16.1.0/24
ダイナミックルーティングモード リージョン

3-2. ファイアウォールルールの作成

コンソール左ペインの「VPCネットワーク」→「ファイアウォールルール」→「ファイアウォールルールを作成」をクリックします。

以下の設定値で2台インスタンスを作成します。

項目 外部接続用ルール 内部通信用ルール
名前 vpn-test-expolicy1 vpn-test-inpolicy1
ネットワーク vpn-test-vpc1 vpn-test-vpc1
トラフィックの方向 上り 上り
一致した時のアクション 許可 許可
ターゲット ネットワーク上のすべてのインスタンス ネットワーク上のすべてのインスタンス
ソースフィルタ IP範囲 IP範囲
ソースIPの範囲 [端末のグローバルIP]/32※ 172.16.1.0/24
プロトコルとポート 指定したプロトコルとポート TCP:3389;ESP;TCP500
すべて許可

※グローバルIPを調べるには、端末のコマンドラインから「curl ifconfig.io」と入力するか、ブラウザで「http://ifconfig.io/」にアクセスして下さい。
※今回は一時利用のため、RDPで接続する管理端末と、VPN接続する一般端末を同一としています。継続利用する場合は管理端末と一般端末を分けることをお勧めします。

3-3. インスタンスの作成

コンソール左ペインの「Compute Engine」→「VMインスタンス」→「インスタンスを作成」をクリックします。

以下の設定値で2台インスタンスを作成します。

項目 VPNサーバ ファイルサーバ
名前 vpn-test-instance1 internal-instance1
マシンタイプ vCPU x 1 vCPU x 1
ブートディスク Windows2012R2 Windows2012R2
ゾーン asia-northeast-a asia-northeast-a
ネットワーク vpn-test-vpc1 vpn-test-vpc1
サブネットワーク vpn-test-subnet1(172.16.1.0/24) vpn-test-subnet1(172.16.1.0/24)
プライマリ内部IP エフェメラル(自動) エフェメラル(自動)
外部IP エフェメラル※ なし
IP転送 オン オフ

※今回は一時利用のために外部IPをエフェメラルとしていますが、継続利用の場合はIPを作成し、固定IPでの運用をお勧めします。

GCPコンソールで、作成したインスタンス2台の初期ユーザとパスワードを設定します。
「RDP」→「Windowsパスワードを設定」でパスワードをクリックし、ユーザ名は「vpn_test_user1」とします。

取得したパスワードは次項移行で使いますので、控えておいて下さい。

3-4. リモートアクセスサービスのインストール

 RDPクライアントで以下のサーバにログインします。

項目 設定値
IPアドレス VPNサーバのグローバルIPアドレス
ユーザ名 vpn_tcp_user1
パスワード インスタンス作成時に設定したパスワード

※構築初期時は英語版となります。日本語化が必要な場合は以下の手順で言語を設定下さい。
https://blogs.msdn.microsoft.com/daisukei/2013/08/16/windows-azure-windows-server-2012-ok/

「Server Manager」を起動し、「Add roles and features」をクリックします。

「Before you begin」ウィンドウで「Next」をクリックします。
「Select installation type」ウィンドウで「Role based or feature based install」を選択し、「Next」をクリックします。
「Server selection」ウィンドウで「vpn-test-intance1」を選択して「Next」をクリックします。
「Select server roles」ウィンドウで「Remote Access」を選択して「Next」をクリックします。

「Select server features」ウィンドウで「Next」をクリックします。
「Remote Access」ウィンドウで「Next」をクリックします。
下記ウィンドウで「Add features」をクリックします。

下記ウィンドウで「Direct access and VPN(RAS)」と「Routing」をクリックして「Next」をクリックします。

「Web server roles(IIS)」ウィンドウで「Next」をクリックします。
「Select role services」ウィンドウで「Next」をクリックします。

下記ウィンドウで「Yes」をクリックします。

下記ウィンドウで「Install」をクリックします。インストールが完了するとボタンが「close」と表示されるので、クリックして終了します。

「Server Manager」のNoticeをクリックし、Post deployment~ の「Open the Getting Started Wizard」をクリックします。

「Deploy VPN Only」をクリックします。

「Routing and Remote Access Setup Wizard」ウィンドウで「Next」をクリックします。
「Configuration」で「Custom」を選択して「Next」をクリック
「Custom Configuration」で「VPN Access」「NAT」「LAN routing」を選択して「Next」をクリック

「Completing th Rpitomg and Remote Access Server Setup Wizard」ウィンドウで「Finish」をクリックして。

「Start the service」をクリックします。

3-5. リモートアクセスサービスの設定

以下の設定値を設定します。

項目 設定値
セキュリティ IPSec/L2TP
事前共有鍵 vpn-ca-test
NATアドレスプール 172.16.100.100 – 172.16.100.200
NATインターフェイス Ethernet

「Server Manager」の左上「tools」→ 「Remote Access Manager」をクリックします。

ホスト名を右クリックし、「Properties」をクリックします。

「Security」タブをクリックし、「Allow connection IPSec ?」にチェックを入れ、「Pre-shared key:」に「vpn-ca-test」と入力します。

※この時点でWindowsのユーザ名/パスワードでログインする設定がされています。

「IPv4」タブをクリックして「Static address pool」にチェックを入れ、「Add」で「172.16.100.100 ? 172.16.100.200※」を追加。「OK」をクリックして完了。
※NATを利用するため、VPCとは異なるアドレスを割り当てます。

「Remote Access Manager」の「NAT」を右クリックして「New Interfaces」をクリックします。

「Ethernet」を選択して「OK」をクリックします。

3-6. ファイアウォールの無効化

「Control Panel」→「System and Security」→「Windows Firewall」→「Customize Settings」を開き、ファイアウォールを「Turn off」にし、「OK」をクリックします。

※一時的に検証するための設定です。実運用に入る際は、内容を精査することをお勧めします。

4. クライアントの接続

4-1. クライアント設定情報

以下の設定をVPNクライアントに設定すれば、基本的には接続可能です。
本構成ではWindows10と、MacOS10.12で接続確認しました。

項目 設定値
宛先IP VPNサーバのグローバルIP
セキュリティ IPSec/L2TP
共有シークレット vpn-ca-test
ユーザID(アカウント名) vpn_test_user
パスワード [vpn_test_userのパスワード]

4-2. MacOSでRDP接続

MacOSでは「システム環境設定」→「ネットワーク」→「VPN(L2TP)」をクリックして、以下の設定を実施します。

VPNサーバーのグローバルIPアドレスとアカウント名を設定します。

「認証設定」をクリックして、4-1の「パスワード」と「共有シークレット」を設定します。

scutilコマンドを利用し、作成したVPNの設定に接続します。

VPCの内部アドレスにもpingが飛びました。

この状態で、MacのRDPクライアントを利用して、接続確認を実施します。

無事、内部IPを付与したサーバにRDPで接続できました!

続いてファイル共有テストのための設定を行います。
任意のフォルダの「プロパティ」を開き、「共有」をクリックして、任意のユーザとフォルダを共有してください。

※Macでの接続確認を実施しない場合は、次項のWindows接続手順の後に共有の設定を実施して下さい。

4-3. Windows10でファイル共有サーバに接続

※Traversal-NATを有効化するため、レジストリを編集します。
コマンドプロンプトから「regedit」と入力し、
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent」
を開きます。

「新規」→「DWORD値」をクリックし「新しい値#1」右クリック→「名前の変更」して、「AssumeUDPEncapsulationContextOnSendRule」に変更します。

変更した値をダブルクリックして、「値のデータ」に「2」といれます。
端末を再起動します。

[スタート] ボタンを選択し、[設定] 、の順に選択します。

[ネットワークとインターネット] 、[VPN]、[VPN 接続を追加する] を選択します。

以下の通りVPN設定を実施します。

VPNプロバイダー Windows(ビルトイン)
接続名 好きな名前を入力 例)VPN
サーバー名またはアドレス [VPNサーバーのグローバルIP]
VPNの種類 事前共有キーを使ったL2TP/IPsec
事前共有キー vpn-ca-test
サインイン情報の種類 ユーザー名とパスワード
ユーザー名 vpn_test_user
パスワード [設定したパスワード]
サイン情報を保存する チェックON


「VPN」を選択して「接続」をクリックします。

 接続完了すると以下の通り「接続済み」となります。

Windows10でエクスプローラーを開き、アドレスバーに「\\172.16.1.3」と入力します。

無事、フォルダが表示されました!

5. まとめ

今回はWindos2012R2の標準VPNサービスを利用して、リモートアクセスVPNを構築しました。GCPでは、Windowsに限らず、SoftEtherやOpenVPN等の同等の構成を構築することができます。「Cloud launcher」にもリモートアクセスVPNを構築できるサービスが続々とリリースされています。

今回はデモとしてごく基本的な仕組みをご紹介しましたが、RADIUSサーバや証明書などと組み合わせることにより、よりセキュアな認証基盤、暗号化の仕組みを実装することも可能です。

Windowsファイルサーバ等の内部リソースも、リモートアクセスVPNを利用すればインターネット経由で安全にアクセスできます。ぜひご活用ください。

クラウドエース(Cloud Ace)はGCPの導入・運用支援サービスを提供しております。ご興味のある方はこちらまでお問い合わせください。VPNに限らず、あらゆるGCPサービスのサポートが可能です。

次の記事を読み込んでいます
次の記事を読み込んでいます