自宅や外出先の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」をクリックします。
下記ウィンドウで「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」をクリックして。
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」をクリックします。
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の設定に接続します。
この状態で、Macの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 |
Windows10でエクスプローラーを開き、アドレスバーに「\\172.16.1.3」と入力します。
5. まとめ
今回はWindos2012R2の標準VPNサービスを利用して、リモートアクセスVPNを構築しました。GCPでは、Windowsに限らず、SoftEtherやOpenVPN等の同等の構成を構築することができます。「Cloud launcher」にもリモートアクセスVPNを構築できるサービスが続々とリリースされています。
今回はデモとしてごく基本的な仕組みをご紹介しましたが、RADIUSサーバや証明書などと組み合わせることにより、よりセキュアな認証基盤、暗号化の仕組みを実装することも可能です。
Windowsファイルサーバ等の内部リソースも、リモートアクセスVPNを利用すればインターネット経由で安全にアクセスできます。ぜひご活用ください。
※クラウドエース(Cloud Ace)はGCPの導入・運用支援サービスを提供しております。ご興味のある方はこちらまでお問い合わせください。VPNに限らず、あらゆるGCPサービスのサポートが可能です。