ubuntu18 に softether vpn をインストールして android から繋いでみる

  • 17 Mar 2019

外部wifiでも安全にネットが使えるようにすべく、GCP 上に Private VPN を構築したので、そのメモ。

環境

今回はレンタルサーバーでも借りようかと思ったのですが、常時接続するわけでもないので GCP で micro インスタンスを構築して、その中に VPN サーバーを構築しました。必要なときだけスマホから立ち上げて利用する、といった想定です。

サーバーサイド

  • インフラ:GCP(micro メモリ 0.6GB)
  • OS : Ubuntu 18.04 LTS

クライアントサイド

  • android 7.0

下準備

作業移る前に下準備です。

$ sudo apt-get update && apt-get upgrade
$ sudo apt-get install make gcc

Softetherのダウンロード

まずはパッケージのダウンロードします。こちらのダウンロードページへ行き、プルダウンを下記のように選択してください(CPUなどはご自身の環境に合わせてお選びください)。もし自分のCPUのアーキテクチャが解らない場合は lscpu コマンドが便利です。

項目 選択内容
ダウンロードするソフトウェア SoftEther VPN(Freeware)
コンポーネントを選択 SoftEther VPN Server
プラットフォームを選択 Linux
CPUを選択 Intel x64 / AMD64(64bit)

今回、私は SoftEther VPN Server (Ver 4.29, Build 9680, rtm) を選択しました。

$ 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
$ tar xzvf softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz

Softetherのインストール

展開したフォルダに移動して make します。make 後の質問事項はライセンスアグリーメントです。内容を確認して 1 を選択してください。

$ cd vpnserver/
$ sudo make 

(ライセンスアグリーメントでは1を選択)

make が終わったら tar 展開したフォルダを /usr/local/ に移動します。更に移動後の vnpserver ディレクトリ移動してパーミッションを変更します。

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

初期設定を行うためサービスを起動します。

sudo /usr/local/vpnserver/vpnserver start

Softetherの初期設定

VPNサーバーの初期設定は長いので、こちらの記事の「初期設定」の項目をご参照ください。

自分だけのVPNサーバを作る!Ubuntu 18.04 に SoftEther VPN Serverをインストール

Deamonの登録

次にVPNサーバーをdeamonに登録します。Ubuntu18.04 では chkconf はありませんので systemctl を利用します。まずは下記の内容を /etc/systemd/system/vpnserver.service として記述します。

$ sudo /usr/local/vpnserver/vpnserver stop
$ sudo vim /etc/systemd/system/vpnserver.service

---
[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
---

deamon をリロードしてサービスとして認識させ、有効化、起動、状態確認をします。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vpnserver.service
$ sudo systemctl start vpnserver.service
$ sudo systemctl status vpnserver.service
● vpnserver.service - SoftEther VPN Server
   Loaded: loaded (/etc/systemd/system/vpnserver.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-03-17 15:37:55 UTC; 12s ago
  Process: 19278 ExecStart=/usr/local/vpnserver/vpnserver start (code=exited, status=0/SUCCESS)
 Main PID: 19280 (vpnserver)
    Tasks: 36 (limit: 667)
   CGroup: /system.slice/vpnserver.service
           ├─19280 /usr/local/vpnserver/vpnserver execsvc
           └─19281 /usr/local/vpnserver/vpnserver execsvc
Mar 17 15:37:55 prd-private-vpn systemd[1]: Starting SoftEther VPN Server...
Mar 17 15:37:55 prd-private-vpn vpnserver[19278]: The SoftEther VPN Server service has been started.
Mar 17 15:37:55 prd-private-vpn systemd[1]: Started SoftEther VPN Server.

これでサーバー立ち上げたときに自動起動します。

ファイアーウォールの設定

次にファイアーウォールの設定でs。今回は GCP 上で構築しているので GCP 側でファイアーウォールを設定しました。GCP上でファイアーウォール(VPCネットワークの中)の画面を開いてください。設定するポートは下記の通りです。

プロトコル ポート番号 用途
tcp 5555 デフォルトのリスナーポート
tcp 443 デフォルトのリスナーポート
tcp 992 デフォルトのリスナーポート
udp 1194 OpenVPNを使う場合
udp 500 L2TP/IPsecを使う場合
udp 4500 L2TP/IPsecを使う場合

android設定

ここは難しくないですね。

  1. 設定 > 「無線とネットワーク」 > もっと見る > VPN を選択
  2. 右上の「+」をタップ
  3. 名前は適当に「PRIVATE」など
  4. タイプは「L2TP/IPSec PSK」
  5. サーバーアドレスは GCP インスタンスの外部IP
  6. L2TPセキュリティ保護は「(未使用)」のまま
  7. IPCSec ID も「(未使用)」のまま
  8. IPSec事前共有鍵は初期設定のときに設定したPre Shared Key
  9. 詳細オプション内 > DNS 検索ドメイン は「(未使用)」のまま
  10. 詳細オプション内 > DNS サーバー も「(未使用)」のまま
  11. 詳細オプション内 > 転送ルート は「0.0.0.0/0」
  12. 詳細オプション内 > 後方互換モードは「無効にする」
  13. 詳細オプション内 > プロキシは「なし」
  14. ユーザー名、パスワードは初期設定のときに設定したものを入力

5のサーバーアドレスだけは GCP のインスタンスを起動し直すたびに入力する必要があります。今どきはスマホでも GCP 管理をアプリ経由でできるので、そこまで手間はないと思います。

以上です。