LoginSignup
4
4

More than 3 years have passed since last update.

GCPにSoftether Serverを立てる(iPhone/ラズパイから接続)(NAT超えWake on LAN[2])

Last updated at Posted at 2020-05-26

はじめに

前回の続きです.
とりあえずやりたいことはこんなんです.

network_detail.png

今回は「GCPにSoftether Serverを立てる(iPhone/ラズパイから接続)」です.

Softether Client

GCPにSoftether Clientをインストール

まず,Softether Clientをインストールします.(※もしかしたら,必要ないかもです.)
GCPにSSH接続し,必要なモジュールをインストールします.

sudo apt update
sudo apt-get install -y gcc make wget tzdata git libreadline-dev libncurses-dev libssl-dev bridge-utils

Softherで指定するCPUのためにCPU情報を取得します.

$ lscpu
Architecture:        x86_64 <<< bit info
CPU op-mode(s):      32-bit, 64-bit <<< which bit cpu can handle
Byte Order:          Little Endian
CPU(s):              1
On-line CPU(s) list: 0
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               79
Model name:          Intel(R) Xeon(R) CPU @ 2.20GHz
Stepping:            0
CPU MHz:             2200.000

上記情報を元に公式サイトからClientのダウンロード用URLを取得します.

# Download and Install
mkdir tmp
cd /tmp
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.34-9745-beta/~~~~.tar.gz
tar -xvf ~~~.tar.gz
cd vpnclient
make # >> Enter 1

# move to usr/local
cd ../
sudo mv vpnclient/ /usr/local/

# set permission
cd /usr/local/vpnclient/
sudo chmod 600 *
sudo chmod 700 vpncmd vpnclient

再起動した時にSoftether Clientが起動するようにサービスを作成します.

sudo vi /etc/systemd/system/vpnclient.service
/etc/systemd/system/vpnclient.service
[Unit]
Description=SoftEther VPN Client
After=network.target network-online.target

[Service]
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStop=/usr/local/vpnclient/vpnclient stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

先ほど作成したサービスを有効にします.

sudo systemctl daemon-reload
sudo systemctl start vpnclient
sudo systemctl enable vpnclient

Softether Server

GCPにSoftether Serverを立てる

Client同様に公式サイトからServerのダウンロード用URLを取得します.※GCPにはClientとServerの両方インストールします.

# Download and Install
mkdir tmp
cd /tmp
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.34-9745-beta/~~~~.tar.gz #取得したURLをここで貼り付け
tar -xvf ~~~.tar.gz
cd vpnserver
make # >> Enter 1

# move to usr/local
cd ../
sudo mv vpnserver/ /usr/local/

# set permission
cd /usr/local/vpnserver/
sudo chmod 600 *
sudo chmod 700 vpncmd vpnserver

再起動した時にSoftether serverが起動するようにサービスを作成します.

sudo vi /etc/systemd/system/vpnserver.service
/etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

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

[Install]
WantedBy=multi-user.target

先ほど作成したサービスを有効にします.

# read service
sudo systemctl daemon-reload

# enable and start
sudo systemctl enable vpnserver.service
sudo systemctl start vpnserver.service

server用のポートを解放する

VPN接続用にGCPのポート(TCP992,1194,5555のいずれか,UDP500,4500,1701)を開放する必要があります.

手順はSSH用にポート開放した手順と同様です.

port1

画像の「さっき設定したやつ」のところに適宜,「TCP992,1194,5555のいずれか」と「UDP500,4500,1701(iPhoneのL2TP用)」入力して保存します.

port2

softether serverの詳細な設定を行う

WindowsまたはMacの方は公式サイトからGUIツールが配布されているので,それをインストールします.

インストールが完了し,実行します.
初期画面>New Setting から新しくホストを作成します.ホストネームに先ほどDDNSで取得したドメインを入力します.この時のパスワードは空で良いです.

0.PNG

OKを選択し,作成したホストをクリックすると,パスワード設定するように言われるので設定します.

2.PNG

仮想ハブを作成します.

3.PNG

DDNSは既に設定しているので,青丸部分はテキトーでいいです.(あとで無効にします.)

4.PNG

VPN Azureは使いません.

5.PNG

Create Userを選択し,ユーザーを作成します.

6.PNG

ユーザーネームとパスワードを設定します.

7.PNG

次にDDNSを無効にします.

10.PNG

設定ファイルを出力し,そのファイルを以下にようにfalseからtrueに編集し保存します.

11.PNG

先ほど編集したファイルを読み込み,適用すればOKです.

⚠️また,443ポートはApacheサーバー用にしたいので,Listener Listから443をStopさせます.

2.PNG

Secure NATの設定

Manage Virtual Hub > Virtual NAT and Virtual DHCP Server (Secure NAT) > Secure NAT Configurationから好きなプライベートアドレスを割り当てます.

network_detail.png

今回は最初に載せた上図のような構成にしたいので,192.168.0.0/24のネットワークを構築します.

13.PNG

ClientからServerに接続する

Clientの設定

ClientにはGUIツールがないので,コマンドで操作します.

cd /usr/local/vpnclient/
./vpncmd

仮想NICを作成します.今回はvpn_nicという名前にします.
bash
NicCreate {name}

アカウントを作成します.今回はtestとします.

AccountCreate test
> host and port: {ip address or host name}:{port number} # 前回取得したドメイン:ポート番号は992か1194か5555
> virtual hub name: {server's hub name} # Server Managerで設定したハブ名
> username: {username} # Server Managerで設定したユーザーネーム
> LAN card name: vpn_nic # さっき作成したやつ

AccountPassword test (AccountCreateで作成した名前)
> Password: *****
> standard or radius: standard

AccountConnect test

以下で接続済と出ればOKです.

# check connection status
AccountList

また,再起動時に自動で接続するように設定します.

AccountStartupSet test

これでClientの設定は終わりです.

ルーティングテーブルの設定

先ほど作成した仮想NICにIPアドレスを振るようにします.恐らく,ip aコマンドを打ってもまだ割り当てられていないと思います.

sudo vi /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward=1
sudo sysctl -p
sudo dhclient vpn_{name} # 今回は{name}=vpn_nic
ip a

でIPが割り当てられたらOK

最後にスタートアップ時にDHCPが動くようにします.

sudo vi /home/{user}/vpn/dhcp.sh
/home/{user}/vpn/dhcp.sh
dhclient vpn_{name}

iPhoneから接続する

本題とは逸れますが,一応行います.

まず,iPhone用にL2TPの設定を行います.最初の画面>IPSec/L2TP Settingというのがあるのでそれをクリックします.そして,下図の画面のようにします.

18.PNG

ip addressの部分はDDNSのドメイン名にしてください.

12.jpeg

で接続できればOKです.
192.168.0.11が割り当てられていて,ちゃんと接続できていますね!

17.PNG

ラズパイから接続する

softether client

基本的には,GCPにSoftether ClientをインストールClientの設定と同じことをラズパイでします.

IPの固定

ラズパイはIPを固定した方が使い勝手がいい(∵GCP→ラズパイにリバースプロキシしたい)ので,固定します.
/etc/dhcpcd.confに以下を追記します.{name}には,作成した仮想NICの名前が入ります.

/etc/dhcpcd.conf
interface {name}
static ip_address=*.*.*.*/~

再起動して,ホスト(GCPのsoftether serverのインターフェース)にpingが通ればOKです!
※今回は,Secure NATの設定で指定した192.168.0.10pingを送っていいます.

sudo reboot
ping 192.168.0.10 # check host's interface

おわりに

とりあえず,長いのでここで終了です.

参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4