【無料】EC2にOpenVPNサーバを立てる【GUI設定】

#目的
VPCパブリックサブネット内にVPNサーバを立てて、プライベートサブネット内インスタンスにアクセスする
を

- VPN設定をブラウザでメンテナンスできる
- できるだけ安く（最初は無料で）
- 手っ取り早く
- 法人利用

できるようにする
AWS MarketPlace で、BYOL（ライセンス持ち込み）になっているものを探す→２つあった（自分調べ）

|製品名|ライセンス形態|メモ|
|---|---|---|
|Sophos UTM|[30日間無料](https://secure2.sophos.com/ja-jp/products/unified-threat-management/free-trial.aspx)|個人利用なら[こちら](https://www.sophos.com/ja-jp/products/free-tools/sophos-utm-home-edition.aspx)をオヌヌメ|
|OpenVPN Access Server|[２接続まで無料](https://openvpn.net/index.php/access-server/pricing.html)|GUI無しならオープンソース|

いずれもクライアントからは、OpenVPNClientで接続可能。大抵のOSで使える（スマホも含め）
SophosUTMは非常に多機能なので、**個人利用**なら超オヌヌメであるが
今回は、OpenVPN Access Serverを使ってみる。
VPNサーバを立てて、とりあえずユーザがアクセスできれば良い。とする。

#作る
[公式マニュアル](https://docs.openvpn.net/how-to-tutorialsguides/amazon-ec2-appliance-ami-quick-start-guide/)
☝️ちょっと古い。。。

##EC2インスタンス作成
AWS MarketPlaceでBYOL版を購入。と言ってもサービス利用料は無料
利用するAMIは、AMIのパブリックイメージで下記の文字列で検索

```text
OpenVPN Access Server 2.5.0-fe8020db-5343-4c43-9e65-5ed4a825c931-ami-548e4429.4
```
で検索して出てきたAMIを選択する(2017/7/31現在)

|リージョン|AMI ID|
|---|---|
|ap-northeast-1  (東京) |ami-bf5203d9|
|ap-us-west-2(オレゴン) |ami-ffd74b87|

インスタンスタイプ : **t2.micro**
置き場 : VPCパブリックサブネット
セキュリティグループ : 
![sg.png](https://qiita-image-store.s3.amazonaws.com/0/185989/b3e8b1c9-22af-5c6e-c8c4-9f4b818b684b.png)

|ポート|メモ|
|---|---|
|SSH(22)|絞っておく|
|943|絞っておく|
|HTTPS(443)|どこからもOK|

検証用として、プライベートネットワークのみでアクセスできるEC2インスタンスを準備しておく

上記AMIを使って、EC2インスタンスを起動する。

##OpenVPN初期設定
EC2インスタンスが起動したら、SSHで接続する。
ユーザIDは **openvpnas** 
接続するとOpenVPNのセットアップウィザードが流れる。（コンソール入力待ちの場合、下記コマンドで実行する）

```terminal
sudo ovpn-init --ec2
```

いろいろ聞かれるので、下記を参考に答える

```text
Detected an existing OpenVPN-AS configuration.
Continuing will delete this configuration and restart from scratch.
Please enter 'DELETE' to delete existing configuration: ''DELETE''
（略）
```

```text
Please enter 'yes' to indicate your agreement [no]: 
```
利用規約に同意？　👉 *yes*


```text
Will this be the primary Access Server node?
(enter 'no' to configure as a backup or standby node)
> Press ENTER for default [yes]:
```
これがプライマリアクセスサーバーノードになりますか？
単一サーバとして稼働するので👉 *yes*


```terminal
Please specify the network interface and IP address to be
used by the Admin Web UI:
(1) all interfaces: 0.0.0.0
(2) eth0: 172.16.0.6
Please enter the option number from the list above (1-2).
> Press Enter for default [2]: 2
```
Admin Web UIにはどこから入れるの？
→ ローカルのみにしておくので　👉 *２*
(どちらにしても、EC2インスタンス側ではプライベートIPに変換されアクセスされる感じなので意味ないかも）

```terminal
Please specify the port number for the Admin Web UI.
> Press ENTER for default [943]:
```
Admin Web UIのポートは？ 👉 デフォルトの943でOK

```terminal
Please specify the TCP port number for the OpenVPN Daemon
> Press ENTER for default [443]:
```
クライアントがVPNサーバーに接続するために使用するポートは？ 👉 デフォルト443


```terminal
Should client traffic be routed by default through the VPN?
> Press ENTER for default [no]:
Should client DNS traffic be routed by default through the VPN?
> Press ENTER for default [no]:
```
すべての通信をVPN経由にするならyes。最小限だけでよいならno  👉 とりあえずnoにする
DNSをVPN経由にするならyes👉 とりあえずnoにする

```terminal
Use local authentication via internal DB?
> Press ENTER for default [yes]:
```
内部DB経由のローカル認証を使用しますか？ 👉 DBサーバを別立てしないので *yes*

```terminal
Should private subnets be accessible to clients by default?
> Press ENTER for EC2 default [yes]:
```
デフォルトでプライベートサブネットにクライアントからアクセスできるようにする必要がありますか？ 👉 とりあえずYES

```terminal
Do you wish to login to the Admin UI as "openvpn"?
> Press ENTER for default [yes]: no
```
Admin WEB UIの管理者名は "openvpn"でよいか？ 👉 *no*

```terminal
> Specify the username for an existing user or for the new user account:
```
管理アカウント名を入れろ 👉 *hogeadmin*  適当なアカウント名を入れる
パスワードを作成する

```terminal
> Please specify your OpenVPN-AS license key (or leave blank to specify later):
```
ライセンスキーを持っているんなら入れろ 👉 持っていないのでEnter

##DNS設定
Route53か、お使いのDNSサーバで、設定したドメイン（例 hoge.hoge.com）の名前解決設定しておく。

##Admin Web UIで設定
https：// サーバIP /admin
![スクリーンショット 2018-07-16 15.25.20.png](https://qiita-image-store.s3.amazonaws.com/0/185989/98fc6173-d976-7a4a-50e2-cb436416640d.png)
先程作った管理者ID/パスワードでログイン。

###ドメイン名の設定
IPが変わってしまうと、クライアント設定も修正しないといけないので、ドメイン名を設定するのです。

Configration -> Network Settings -> Hostname or IPAddress : hoge.hoge.com
![スクリーンショット 2018-07-16 15.28.41.png](https://qiita-image-store.s3.amazonaws.com/0/185989/0f53748f-a993-4137-64a4-69e9a556dadc.png)
###管理ページへのログインを限定する
誰でも管理者ログインページは、ポート943のみで表示できることとする。

Configuration-> Network Settings 
VPN Server > Admin Web Server OFFにする
ページ最下部の"Save Settings"を押下する
（ポート443でログインしていと、即切断されるので https://ドメイン名:943/admin で再度ログインする）

###SSL証明書の設定
（べつに無くても問題ないが）
Let's Encriptで作った証明書を設定する
[こちら](https://qiita.com/akihiyo/items/415e2a50cd6f180ccac8)を参考に。。
Configration -> Web Server に各ファイルをアップロードする
ファイル名はそれぞれ

|CA Bandle | Certificate |Private Key |
|---|---|---|
|fullchain1.pem|cert1.pem|privkey1.pem|

###ユーザの作成
User Management -> User Permissions : ユーザを作る
![スクリーンショット 2018-07-16 15.33.02.png](https://qiita-image-store.s3.amazonaws.com/0/185989/f5f78cdd-ef2b-4a69-f8a7-7f452cc41e47.png)
Update Running Serverしてからパスワード設定でUpdate
![スクリーンショット 2018-07-16 15.32.00.png](https://qiita-image-store.s3.amazonaws.com/0/185989/5fc82eb4-30cd-f165-2f51-e9209fa933c6.png)



#クライアントから繋いでみる
iPhoneで接続してみます。
1.Safariで上記で作ったOpenVPNサイトを開きます
<img width="375" alt="1.login.jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/185989/726d7602-7ae3-4e5c-bb54-117501bcfed3.jpeg">
2.ログイン後メニューがでます。
<img width="375" alt="2..jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/185989/0f10afc7-afc6-446d-e97e-d81c8a4e75b1.jpeg">
*OpenVPN Connect for ●●* は、OpenVPNクライアントアプリケーションのリンクです
アプリを入れていない場合は、ここからAppStoreを開いてダウンロードしておきます
アプリがインストールされている場合は、最下部の*Yourself* から接続ファイルをダウンロードします。
3.接続ファイルのダウンロード
<img width="375" alt="4..jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/185989/b0e2c5b2-9058-6904-0e9a-6c77da7e3f19.jpeg">
OpenVPNで開く  リンクをクリックします→OpenVPNアプリが起動し、接続ファイルが設定されます。
<img width="373" alt="6..jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/185989/e0bbc052-21ab-9319-d1e4-8240ab7ba792.jpeg">
ここで、緑➕アイコンを押すことで、iOSのプロファイル等が登録されます
![7..jpeg](https://qiita-image-store.s3.amazonaws.com/0/185989/ea8c81f0-b40c-f1e4-0356-10ef87ab121d.jpeg)
4.登録完了
<img width="375" alt="8..jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/185989/0e8dba11-dfd4-75c6-5dd1-5ac1730e2e3c.jpeg">

以後は、パスワードを入れて最下部のスイッチをONにするとVPN接続が開始されます