環境
今回はレンタルサーバーでも借りようかと思ったのですが、常時接続するわけでもないので 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設定
ここは難しくないですね。
- 設定 > 「無線とネットワーク」 > もっと見る > VPN を選択
- 右上の「+」をタップ
- 名前は適当に「PRIVATE」など
- タイプは「L2TP/IPSec PSK」
- サーバーアドレスは GCP インスタンスの外部IP
- L2TPセキュリティ保護は「(未使用)」のまま
- IPCSec ID も「(未使用)」のまま
- IPSec事前共有鍵は初期設定のときに設定したPre Shared Key
- 詳細オプション内 > DNS 検索ドメイン は「(未使用)」のまま
- 詳細オプション内 > DNS サーバー も「(未使用)」のまま
- 詳細オプション内 > 転送ルート は「0.0.0.0/0」
- 詳細オプション内 > 後方互換モードは「無効にする」
- 詳細オプション内 > プロキシは「なし」
- ユーザー名、パスワードは初期設定のときに設定したものを入力
5のサーバーアドレスだけは GCP のインスタンスを起動し直すたびに入力する必要があります。今どきはスマホでも GCP 管理をアプリ経由でできるので、そこまで手間はないと思います。
以上です。