SoftEther VPNを使って外部ネットワークから自宅ネットワークにアクセス

# お知らせ
こんにちは、愛知工業大学システム工学研究会です。
この記事は、2021-04-15に書かれた記事です。
間違った内容や古い内容が紛れていますが、過去の記事を残す一環として記事を書きます。
よろしくおねがいします。

## はじめに

syskenアドベントカレンダー9日目担当の鈴木です。
４月から対面の講義が始まり、大学に行かなくてはいけないので、外部から自宅ネットワークにアクセスする仕組みを
SoftEtherVPNで実現したので備忘録もかねて記事にしました。

## 対象読者

外部ネットワークから自宅ネットワークにアクセスしたい人

## 必要なもの

サーバ用PC
クライアント端末
SoftEther VPN設定用PC

※SoftEther VPNの設定をサーバ側のCUIの操作で行えば設定用PCはいらないです。
ただ、GUIで設定する方が楽なので今回は設定用PCを使います。

## スペック

サーバ用PC
OS            : CentOS8
CPU           : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
Memory        : 4GB
Strage        : HDD 320GB
SoftEther VPN : バージョン4.34

クライアント端末
OS : Android 
端末名 : XPERIA XZ2 Premium(SOV38)

SoftEther VPN設定用PC
OS : Windows10

## アジェンダ

今回は以下の順番でやっていきます。
1\. サーバ設定
2\. 管理マネージャーで設定
3\. ルーターの設定
4\. クライアント端末の設定
5\. 実際にアクセス

## サーバ（CentOS8）の設定

まずはサーバの設定からしていきます。

### ダウンロード＆解凍

[公式サイトのダウンロードページ](https://www.softether-download.com/ja.aspx?product=softether)へ行き以下のように入力（**CPUとOSによって選択するものが変わるので注意**）

![](https://i.imgur.com/sGmZjCg.png)
CentOS8でCPUがわからない場合以下のコマンドで調べることができます

```
$ cat /proc/cpuinfo
```

clflush sizeの項目でビット数がわかります

赤く囲った部分のリンクをコピーしwgetでダウンロードします。

```
$ wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz
```

ダウンロードできたら、解凍

```
$ tar -zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz
```

lsコマンドでvpnserverフォルダが生成されていることを確認できればOKです。

### 利用規約に合意する

ダウンロードし解凍まで、できたので実際に起動させます。
まずは、vpnserverディレクトリに移動

```
$ cd vpnserver
```

makeコマンドでSoftEtherVPNを起動させます。

```
$ make
```

makeコマンドがインストールされていない場合は以下のコマンドでインストール

```
sudo dnf -y install make
```

起動すると利用規約について聞かれるのですべて1を押し合意します。

![](https://i.imgur.com/KCloxIX.png)

![](https://i.imgur.com/t3bV0Mn.png)

![](https://i.imgur.com/d5rcIVT.png)

途中でVPN ToolsのCheckのコマンドを自動で打ってくれるのですべてPassになっていることを確認

```
VPN Tools>Check Check command - Check whether SoftEther VPN Operation is Possible --------------------------------------------------- SoftEther VPN Operation Environment Check Tool Copyright (c) SoftEther VPN Project. All Rights Reserved. If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait... Checking 'Kernel System'... Pass Checking 'Memory Operation System'... Pass Checking 'ANSI / Unicode string processing system'... Pass Checking 'File system'... Pass Checking 'Thread processing system'... Pass Checking 'Network system'... Pass All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system. The command completed successfully. -------------------------------------------------------------------- The preparation of SoftEther VPN Server is completed !
```

### フォルダの移動

起動するところまでできましたが、vpnserverのフォルダをwgetした場所に置いておくのは、管理上よくないので`/usr/local`に移動させます。
一つ上の階層に戻りvpnserverのフォルダを移動させます。

```
cd .. sudo mv vpnserver /usr/local/
```

### 権限の付与

セキュリティ観点から適正な権限にします。

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

### ポートの開放

SoftEtherVPNでは、500番と4500番ポートのUDPを使うのでアクセスできるように以下のコマンドで設定します。
ついでに、管理マネージャーとの接続に5555/tpcを使うのでそのポートも空けておきましょう。

```
sudo firewall-cmd --add-port=4500/udp --zone=public --permanent sudo firewall-cmd --add-port=500/udp --zone=public --permanent sudo firewall-cmd --add-port=5555/tcp --zone=public --permanent
```

設定を反映させる。

```
sudo firewall-cmd --reload
```

以上でコマンドでの設定は終了です。

## 管理マネージャーで設定（Windows10）

サーバーの詳細設定は、GUIの操作でやっていきます。
そのために、公式のダウンロードページに行きManagerをダウンロードします。

### ダウンロード

今回はWindowsなのでSoftEther VPN Manager for Windows選択します。

![](https://i.imgur.com/whNgQCd.png)

### 端末の追加

新しい接続の作成を押します。
![](https://i.imgur.com/mDgWTQe.png)

そうしたら以下のように設定します。
ホスト名は、**サーバのIPアドレス**になります。

![](https://i.imgur.com/qGoebkO.png)

OKを押しTEST端末を選択し接続を押す。

![](https://i.imgur.com/LzymeWa.png)

初回起動時は管理者用のパスワードの入力を求められるので入力する。
さらに、リモートアクセスVPNサーバ、拠点姦接続VPNサーバまたはブリッジ、高度な機能を用いたVPNの三択を迫られるので今回はリモートアクセスVPNサーバを選択します。

### 仮想HUBの設定

外部からアクセスするために仮想HUBを作成します。
そのために、仮想HUBの作成を押します。
![](https://i.imgur.com/2l5L9iE.png)

任意の仮想HUB名を入力し仮想HUBのパスワードを設定します。

![](https://i.imgur.com/WQNlHWC.png)

### ユーザーの作成

仮想HUBの作成をしたらVPN接続するためのユーザーを作ります。
仮想HUBの管理を押し、ユーザーの管理を選択

![](https://i.imgur.com/d4aBNXR.png)

新規作成を押す
![](https://i.imgur.com/mIohQNM.png)

ユーザーを作る最低限の情報を入力する。
ユーザー名とパスワードだけを入力しOKを押す。

![](https://i.imgur.com/G19tnkL.png)

そうするとユーザーを作成できます。

### IPsec/L2TPの設定

今回のVPN接続はL2TP/IPsecの事前共有鍵を使う方式にするので以下のように設定する。
事前共有鍵は任意の文字列を入力してください
※事前共有鍵はあとで使うのでメモしておいてください

![](https://i.imgur.com/yoylfXF.png)

### ダイナミックDNSの設定

**自宅のWAN側のIPが固定ならば設定する必要はないです。**

自分の自宅は固定IPではないので以下のように設定しました。
赤く囲ってある部分に任意の文字列を入力します。
※ダイナミックDNSホスト名はあとで使うのでメモしておきましょう。

![](https://i.imgur.com/EozMyFc.png)

## ルーターの設定

こればっかりは各家庭のルーターにより設定方法が違うので
「ルーター名　ポートフォワーディング」などで検索して設定してください

VPNサーバのIPアドレス　500 udp
VPNサーバのIPアドレス　4500　udp
をポートフォワーディングすればOKです。

## クライアントの設定（Android端末）

エクスペリアXZ1プレミアムの場合
設定->ネットワークとインターネット->VPN->右上のプラスボタンを押し以下の設定にする。
名前 : 任意
タイプ : L2TP/IPSec PSK
サーバーアドレス : ダイナミックDNS設定の時に設定したホスト名
L2TPセキュリティ保護 : 未使用(入力しない)
IPSec ID : 未使用(入力しない)
IPSec事前共有鍵: IPsec/L2TPの設定の時に設定した任意の文字列
ユーザー名 : 仮想HUBの設定で作成したユーザー名
パスワード : 仮想HUBの設定で作成したユーザーのパスワード
![](https://i.imgur.com/PWRNreG.png)

![](https://i.imgur.com/m2uk8CL.png)
設定終了

## 実際に接続する

設定したVPNを選択し接続する

![](https://i.imgur.com/u3cjrIO.png)

![](https://i.imgur.com/cbn4Uhn.png)
接続できましたと表示されればOKです！

## PINGで同一ネットワークにいるのか確認

接続できたので同じネットワークのWindows10に対してpingを打ってみます。
今回はPingToolsアプリを使いました。

![](https://i.imgur.com/yCFhuuU.png)

やったー！
ping打ってレスポンス返ってキター！！
同一ネットワークになれたので今回はこれで終了にしたいと思います。

## 感想

VPNの設定が初めてだったのでだいぶ苦しみましたが最終的に外部からアクセスでき同一ネットワークになれました。
今回はやりたいことすべてを実現できたので満足です。
ただ、VPNの仕組みなど根本の理解がまだ少し足りないのでこれから少しずつ勉強していきたいと思います。それと、二拠点でのVPNができなかったので次回の課題にしたいと思います。

## おまけ

### SSHしてみる

同一ネットワークになれたのですがこれだとまだ、PCにアクセスできません。
なのでSSHを使用してPCにアクセスしていきたいと思います。
Androidからsshするのに、今回はJuiceSSHを使います。

![](https://i.imgur.com/SCRaVix.png)

すこし待つと接続できます

![](https://i.imgur.com/o06Xjgz.png)

やったー
SSH接続できたー！！
※試しにtest1フォルダを作ってpwdしてみた画像です
SSHも無事できたので大満足です！