AWS/プライベートサブネットにEC2をたてる(VPNサーバ編)

前回はSSH接続によりパブリック上の踏み台サーバを利用したプライベートサブネット上のEC2へのアクセス方法について解説しました。

今回はVPN接続を使って接続する方法を解説します。

AWSにVPNで接続するには

VPN接続と一口にいっても様々な接続手法が取られます。

a)物理的なアプライアンス同士でVPN接続を構築するIPSec
b)VPNサーバソフトウェアを使いVPN接続を構築するSSL-VPN
c)クラウドサービスにより構築するSSL-VPN(Pertino:パティーノ)

a)のIPSecによる手法は拠点間接続によく用いられていますが、社内だけでなく出張先や自宅からでも社内ネットワークに接続する需要が栄えてきた現代においては少し使いづらい側面があります。また、暗号化/復号化を処理するL3スイッチなどのスペックが低いとパフォーマンスが得られず実務に耐えられないため、あるていど高価なものを購入するなど費用がかさみます。

そこで最近は b)による手法がよく取られるようになりました。
有名なのはOpenVPNと呼ばれるサーバーソフトウェアです。他にもVyattaやSoftEtherなどがあります。これらは外出先でもVPNクライアントソフトウェアが入っていれば社内ネットワークに接続可能なため、融通が利きます。BYODが実現できたのもこれらの仕組みが登場したおかげです。PCだけでなく、スマホやタブレットなどにも対応したアプリが登場しています。

c)の方法は2015年に登場したPertino社のサービスです。
VPN通信の部分をPertino社のサービス経由で利用するので設定がほとんど要りません。また、クラウドにより負荷を分散していますので非常に高速だと評判です。
ただし、クライアント数により従量課金されますので注意が必要です。

まずはサーバー構築からSoftEtherサーバ側の初期設定まで

今回実践するのは b)の方法でSoftEtherという国産ソフトを使います。
このソフトはOpenVPNと比べると若干マイナーですが、OpenVPNは2002年に開発されたソフトであるのに対して2013年にリリースされた本ソフトは現在のネットワークレベルにマッチするよう作成されたという優位性があります。
さらにOpenVPNよりも機能が充実しており、OpenVPNクライアントからの接続も可能なので汎用性が高いです。機能が多いと複雑に思えますが、サーバ管理用のGUIが非常によくできているため初心者でも扱いやすい代物です。
そして何より国産なので日本語マニュアルが充実している”神ソフト”です!( ゚Д゚)oΣ ドーン!

ではまず、今回構築する環境です。図にすると以下のような感じです。

vpn%e6%a7%8b%e6%88%90

それでは順を追って構築していきます。最初にVPCを作成します。

001

002

ウィザードに従って、パブリックサブネット、プライベートサブネットを作成します。
※SSL-VPNサーバを立てるためここではNATゲートウェイではなくNATインスタンスを作成しています。このNATインスタンスをVPNサーバーとして使いまわします。

003

004

005

006

これでパブリックサブネットに配置されたEC2サーバにアクセスができるようになりました。

自前でVPNインスタンスを立てる時の設定

ちなみにこのインスタンス、元々がNATインスタンスで作成されているからいいのですが、パブリックサブネットに自前でVPN用のインスタンスを作成する際は以下の値が”1″となっていること、送信元/送信先チェックがFalseとなっていること(AWSコンソールから確認)を確認しておいてください。

# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1

では、このEC2インスタンスにSoftEtherをインストールしていきましょう。
本家ダウンロードサイトはこちらです。なるべく最新版をダウンロードするようにしてください。
http://www.softether-download.com/ja.aspx?product=softether

※コンパイルにgccが必要なので途中でダウンロードしています。

# sudo su -
# yum update
# wget http://jp.softether-download.com/files/softether/v4.20-9608-rtm-2016.04.17-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz
# tar -xvzf softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz
# yum install gcc
# cd vpnserver/
# make
Do you want to read the License Agreement for this software ?

 1. Yes
 2. No

Please choose one of above number:
1      <- YES
...
Did you read and understand the License Agreement ?
(If you couldn't read above text, Please read 'ReadMeFirst_License.txt'
 file with any text editor.)

 1. Yes
 2. No

Please choose one of above number:
1      <- YES
...
Did you agree the License Agreement ?

1. Agree
2. Do Not Agree

Please choose one of above number:
1     <- Agree
...
*** How to switch the display language of the SoftEther VPN Server Service ***
SoftEther VPN Server supports the following languages:
  - Japanese
  - English
  - Simplified Chinese

You can choose your prefered language of SoftEther VPN Server at any time.
To switch the current language, open and edit the 'lang.config' file.


*** How to start the SoftEther VPN Server Service ***

Please execute './vpnserver start' to run the SoftEther VPN Server Background Service.
And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure SoftEther VPN Server.
Of course, you can use the VPN Server Manager GUI Application for Windows on the other Windows PC in order to configure the SoftEther VPN Server remotely.
--------------------------------------------------------------------

# cd ..
# mv vpnserver/ /usr/local/
# cd /usr/local/vpnserver/
# chmod 600 *
# chmod 700 vpncmd vpnserver

本家サイトのドキュメントに従い、起動スクリプトを設置します。
http://ja.softether.org/4-docs/1-manual/7/7.3

# vi /etc/init.d/vpnserver
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
    start)
        $DAEMON start
        touch $LOCK
        ;;
    stop)
        $DAEMON stop
        rm $LOCK
        ;;
    restart)
        $DAEMON stop
        sleep 3
        $DAEMON start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0

起動シェルに実行許可を追加し、インスタンスの起動時にサービスが起動するよう設定します。

# chmod a+x /etc/init.d/vpnserver
# chkconfig --add vpnserver

サーバ管理を日本語表示する場合は以下のように設定します。

# vi /usr/local/vpnserver/lang.config

ファイル内の最後の方にある en -> ja に変更します。
サービスを起動します。

# /etc/init.d/vpnserver start

ターミナル上から管理者用のパスワードを設定しましょう。

# /usr/local/vpnserver/vpncmd
vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1     ← 1を入力
接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続 します。
接続先のホスト名または IP アドレス:     ←何も入力せずEnter
サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力:     ←何も入力せずEnter
VPN Server "localhost" (ポート 443) に接続しました。

VPN Server 全体の管理権限があります。

VPN Server>ServerPasswordSet
ServerPasswordSet コマンド - VPN Server の管理者パスワードの設定
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: *************
確認入力  : *************

コマンドは正常に終了しました。

VPN Server>quit

次にSoftEtherサーバの設定を行います。
ローカル上のLinuxマシンからCUIベースで設定することも可能ですが、SoftEtherが提供しているGUIを使うと設定が簡単に行えるのでお勧めです。
管理用のローカルマシン(Windowsマシン)にソフトをインストールしましょう。

008

こちらも最新のファイルをダウンロードしてインストールします。
http://www.softether-download.com/ja.aspx?product=softether

009

インストールが開始したらSoftEther VPNサーバー管理マネージャを選択し、画面の指示に従って進めてください。

010

インストールが完了したら、プログラム一覧からアプリを開きます。
新しい接続設定を選択します。

011

AWS側で作成したサーバのIPアドレスや接続設定名、先ほど設定した管理者用パスワードを登録します。
プロキシサーバなどは必要ならば適宜設定してください。

012

作成された接続をダブルクリックするとウィザードが起動します。
接続形態によってオプションを選択します。
今回は、リモートアクセス型を選択しましょう。
BYODを実現するのに便利なオプションです。

013

014

015

ここでは閉じるを選択します。

016

チェックなしでOKを選択。

017

無効にチェックしてOK。

018

次にVPNクライアントユーザを追加します。

019

ユーザ名、パスワードを適宜設定してください。
運用管理側からセキュリティを高めるために証明書認証にすることも可能です。
今回は簡素化のためにパスワード運用とします。

020

021_2

ローカルブリッジの設定は未設定のままでOK。

022

VPN接続に利用されるこれらのポートに対してAWS側を穴あけしておきましょう。

023

穴あけ。

024

作成した仮想HUBを選択し、仮想HUBの管理をします。

025

右下の仮想NATおよび仮想DHCPサーバー機能を選択します。

026

SecureNAT機能を有効にします。

027

これでAWS側のVPN接続環境は整いました。

では、プライベートサブネット上にVPN経由で接続する対象のEC2インスタンスを作成しましょう。
029
EC2 > インスタンスの作成からインスタンスを作成する際にプライベート側のサブネットを指定してください。

030
パブリックIPが設定されておらず、プライベートIPアドレスのみが設定されています。以降のping接続テストのため、このインスタンスに割り当てるセキュリティグループではインバウンドへICMPポートが通るように設定しておいてください。インスタンスが起動したら、SoftEther側のインスタンスからこのインスタンスへpingが通ることを確認しておきましょう。

次回はいよいよクライアントWindowsマシン側からプライベートサブネット上のマシンに対して接続してみます。

コメントを残す

メールアドレスが公開されることはありません。