gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

GCEにSoftEatherを入れてVPNサーバにしてみた

f:id:grnishi:20200927191733p:plain

はじめに

ゲームショウもオンライン開催となり、やっぱりプレイアブルがいいなーと思うgrnishiです。こんにちわ。

本題

新型コロナの影響でリモートワークも本格化している昨今。VPNが良いか悪いかはともかく便利なのは間違いありません。仮に新型コロナが無くなったとしても台風や大雪、家庭の事情などリモートワークについては無視できない働き方だと思います。

弊社ではYAMAHAのRTXでVPNの設定をして使っていますが、ビルの定期メンテによる停電だったり何かしらのトラブルが発生した事を想定して某社の固定IPサービスを人数分契約しています。

基本的には使っていません。何かあったらの予備です。その予備にお金がかかるなーと思っていまして、これはクラウドでVPNサーバを構築して必要な時だけ起動すれば良いのでは?と思い、GCEでVPNサーバを立ててみました。

というわけで今日はさくっと小ネタです。

注意点

インスタンス作成時にIP転送をオンにする必要があります。

f:id:grnishi:20200927191627p:plain

またファイアウォールでUDP 500とUDP 4500をあける必要があります。

環境

# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core) 

VPNクライアント端末

Windows、Mac、iOS、Android

インストール

まずは基本的なものを

dnf install -y wget make gcc

SoftEther_VPN_Serverをインストール

ダウンロードするファイルはこのあたりから SoftEther ダウンロード センター

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
cd vpnserver/
make
cd ..
mv vpnserver /usr/local/
cd /usr/local/vpnserver/
chmod 600 *
chmod 700 vpncmd
chown -R root:root *

管理者パスワードの作成

cd /usr/local/vpnserver/
./vpncmd
By using vpncmd program, the following can be achieved. 

1. Management of VPN Server or VPN Bridge 
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 1
Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on. 
By specifying according to the format 'host name:port number', you can also specify the port number. 
(When the port number is unspecified, 443 is used.)
If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer).
Hostname of IP Address of Destination: 
If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name. 
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name: 
If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name. 
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name: 
Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.

VPN Server>ServerPasswordSet
ServerPasswordSet command - Set VPN Server Administrator Password
Please enter the password. To cancel press the Ctrl+D key.

Password: **********
Confirm input: **********

仮想ハブの作成

VPN Server>HubCreate gracetory_hub

ハブを選択

VPN Server>HUB gracetory_hub

ユーザを作成

VPN Server/gracetory_hub>UserCreate

パスワードの設定

VPN Server/gracetory_hub>UserPasswordSet

IPsecを有効化する

VPN Server/gracetory_hub>IPsecEnable
You cannot make a blank specification.
Enable L2TP over IPsec Server Function (yes / no): 

You cannot make a blank specification.
Enable L2TP over IPsec Server Function (yes / no): yes

Enable Raw L2TP Server Function (yes / no): no

Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): no

Pre Shared Key for IPsec (Recommended: 9 letters at maximum): 共有キー

Default Virtual HUB in a case of omitting the HUB on the Username: ユーザ名    

SecureNatの有効化

VPN Server/gracetory_hub>SecureNatEnable

その他

IPアドレスは静的アドレスを作っておいた方が良いかと思います

windowsから接続

接続名: 適当に

サーバ名またはアドレス: GCEのIPアドレス

VPNの種類: 事前共有キーを使った L2TP/IPsec

事前共有キー: 上で設定したキー

サインイン情報の種類: ユーザ名とパスワード

ユーザ名: 上で作ったユーザ名@上で作った仮想HUB名

パスワード: 上で作ったパスワード

結果

とりあえず接続出来る事は確認しましたが、いまいち速度が出ないのでチューニングする必要があります。とはいえ、緊急用途としてはありだなと思いました。