さくらのVPSでVPNを構築

# 概要
さくらVPSへVPNサーバを初めて構築してみた。
個人的に海外にいるので、日本のIPにしたかった。
「SoftEtherVPNに挑戦！」したのですが、色々なサイトをまたいだのでまとめとして書かせてください。

# 環境
- さくらVPS
- CentOS7

# ハマったこと
- インストール設定手順はあったが、それだけでは接続出来なかった
- ログの確認したら、DHCPサーバがないから接続できない事がわかった

この2点。
<font color="Salmon">[エラー >> ログ確認]</font>をするまで時間がかかってしまった。

# やることをざっくり
1. SoftEtherVPNのインストール
2. 起動設定
3. GUIでの操作
4. 仮想HUB設定
5. ユーザ作成
6. 仮想DHCPサーバ設定
7. さくらVPSのポート開放

なお、7番は自力でお願いします。

# サーバへSoftEtherVPNのインストール
インストールと最初の設定は[こちら](https://centossrv.com/softethervpnserver.shtml)
を参考にしました
まず[公式のSoftEtherVPN](https://ja.softether.org/)でダウンロードへ行きます。
以下項目でプルダウンで選択します。

| 項目       |       プルダウン |  
|:-----------------|------------------:|
| コンポーネント             |              SoftEtherVPNServer |
| プラットフォーム           |            Linux |
| CPU             |              Intel x64/ AMD64 (64bit) |


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/273e2aa2-3de3-c1b9-8d57-d12b8a3f52f5.png)

[ダウンロード可能なファイル]というのが以下のように出ているはずなので、betaではないものを選択し、右クリック > リンクのURLコピーをします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/87a12b85-21b3-fc53-b2a4-a6ed5eb0e807.png)

# サーバでの作業
ファイルのダウンロード

```
$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.29-9680-rtm/softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
```

ファイルを解凍

```
$ sudo tar zxvf softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
```

実行ファイルを生成

```
$ cd vpnserver/
$ sudo make
Do you want to read the License Agreement for this software ?

 1. Yes
 2. No

Please choose one of above number: 
.
.
.
```

以下のような質問がされるので、1ですべてYESと答えましょう。

| 質問項目      |      回答 | 
|:-----------------|------------------:|
| ライセンスを読みたいですか？             |              1 |
| ライセンスの同意について読んで理解しましたか？           |            1 |
| ライセンスに同意しましたか？             |              1 |

フォルダ毎移動し、権限を変更

| 対象ファイル・フォルダ     |      権限| 説明 |
|:-----------------|------------------:|:------------------:|
| vpnserver/ |              600 |root以外アクセスできない|
| vpncmd, vpnserver        |            700 |実行権限を付与|

```
$ cd ~
$ sudo mv vpnserver/ /usr/local/
$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpncmd
$ sudo chmod 700 vpnserver
```

[vpncmd]を実行

```sh

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

1 - 3 を選択: 3
VPN Tools>check
すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

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

VPN Tools>exit
```

「全てのチェックに合格しました。」が出れば OK です。

# 自動起動の設定
新規で[softethervpn.service]ファイルを<font color="DarkCyan">作成</font>

```
$ cd /etc/systemd/system
$ sudo vi softethervpn.service
```

[softethervpn.service] の中身を以下にする

```bash
[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target
```

サービスの起動とサービス自動起動の登録

```
$ sudo systemctl start vpnserver
$ sudo systemctl enable vpnserver
```

# VPNサーバ設定

簡単に設定しておきましょう。

```config:/usr/local/vpnserver/vpn_server.config
       declare DDnsClient
        {
                bool Disabled true　←　ダイナミックDNS機能無効化（VPNサーバーへ独自ドメイン名（例:centossrv.com）でアクセスする）
        }

        declare ListenerList
        {
                declare Listener0
                {
                        bool DisableDos false
                        bool Enabled false　←　ポート443での待ち受けを無効化※nginx/apache 等と強豪するため
                        uint Port 443
                }
                declare Listener1
                {
                        bool DisableDos false
                        bool Enabled false　←　ポート992での待ち受けを無効化
                        uint Port 992
                }
                declare Listener2
                {
                        bool DisableDos false
                        bool Enabled false　←　ポート1194での待ち受けを無効化
                        uint Port 1194
                }
                declare Listener3
                {
                        bool DisableDos false
                        bool Enabled true
                        uint Port 5555
                }
        }
```

VPNサーバの再起動

```
$ sudo systemctl restart vpnserver
```

[ここのページ](http://www.softether-download.com/ja.aspx?product=softether)でサーバをGUIで操作出来るソフトをインストールします。
プルダウンで選択するので、自分のPCのOSを選択してください。
私はMacなので、Macを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/b8784bd3-74dd-2d96-fc12-5ac8d91b6441.png)

コマンドで設定も出来ますが、デスクトップアプリがあるのでそちらから操作していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/e451b8d1-c7bd-084f-0762-f1186f05e5e4.png)

SettingName/ HostName/ PortNumber を入力・選択(ピンクのところです)し、OK
接続すると、パスワードの設定が求められるので、そこでVPNサーバ管理用パスワードを設定します。

以下のような画面になるので、[IPsec/L2TP setting]という下の方にあるボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/fe1bf708-1102-3af9-313e-68b81940c5c4.png)

クリックしたら、黄色い部分にチェックを入れます。
一番下にある[IPsec Pre-Shared Key]という事前共有キーの設定もしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/746cebb2-ab81-fb96-a796-4c460efc4bb7.png)

OKを押すと以下の画面に戻るので、戻ったら[Create a Virtual Hub]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/514b5da5-08a3-6012-067b-b357f1febd42.png)

仮想HUBに任意の名前をつけます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/165d6cfa-dac9-992f-3eaa-60382c5701d4.png)

追加すると、先程入力した任意の名前で作成されているか確認しましょう。
今回だと、VPN_HUB というのが新たに作られています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/46854ee6-075d-9891-f253-abd462b6cbd7.png)

作成したVPN_HUBを選択し、すぐ下にある[Manage virtual hub]をクリックします
私のさくらVPSには、DHCPサーバがないためDHCPサーバを有効にさせます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/f1dca14a-a62f-9f1e-732d-0b92a783a1cf.png)

[secureNatConfigure]をクリックし、IPアドレスの設定をします。
それが終わったら[EnableSecureNat]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/1f577b73-f8ca-456b-b478-e938b1058904.png)

IPアドレスを以下のように設定します。
クラスC(192.168.X.X)だとエラーになるという記事もみたので、もしダメだった場合はクラスBかクラスAで設定しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/e02443d7-a1c7-de22-d810-1225576fdb30.png)

EnableSecureNat をクリックして、Exitを押すと以下のようになります。
右側のステータスのところで、Enableになっていることを確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/47486e13-dea9-f3bb-d7dd-60100f7ce336.png)

次は[ManageUser]をクリックし、ユーザを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/8732552d-e5cd-34ca-9461-36e939ab7a4a.png)

[New]を押してユーザ作成画面へ行きます。
ユーザ名とパスワードを入力して、OK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387311/67cbc92f-31b1-2085-f096-e03d6ce9af66.png)

これであとは、クライアントPCを等で接続をお試しください。

# 感想
やることがわかっていれば、あとはコマンドではなくGUIで出来るので楽でしたー