はじめに
前回の続きです.
とりあえずやりたいことはこんなんです.
今回は「GCPにSoftether Serverを立てる(iPhone/ラズパイから接続)」です.
- [1]GCPとMyDNSを使って,ドメインを取得する
- [2]GCPにSoftether Serverを立てる(iPhone/ラズパイから接続)
- [3]GCP上のApacheからローカルのラズパイApacheにリバースプロキシする
- [4]ラズパイをルーター化する
- [5]Wake on LAN用のPythonスクリプトを作成する.
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
[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
[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用にポート開放した手順と同様です.
画像の「さっき設定したやつ」のところに適宜,「TCP992,1194,5555のいずれか」と「UDP500,4500,1701(iPhoneのL2TP用)」入力して保存します.
softether serverの詳細な設定を行う
WindowsまたはMacの方は公式サイトからGUIツールが配布されているので,それをインストールします.
インストールが完了し,実行します.
初期画面>New Setting から新しくホストを作成します.ホストネームに先ほどDDNSで取得したドメインを入力します.この時のパスワードは空で良いです.
OKを選択し,作成したホストをクリックすると,パスワード設定するように言われるので設定します.
仮想ハブを作成します.
DDNSは既に設定しているので,青丸部分はテキトーでいいです.(あとで無効にします.)
VPN Azureは使いません.
Create Userを選択し,ユーザーを作成します.
ユーザーネームとパスワードを設定します.
次にDDNSを無効にします.
設定ファイルを出力し,そのファイルを以下にようにfalseからtrueに編集し保存します.
先ほど編集したファイルを読み込み,適用すればOKです.
⚠️また,443ポートはApacheサーバー用にしたいので,Listener Listから443をStopさせます.
Secure NATの設定
Manage Virtual Hub > Virtual NAT and Virtual DHCP Server (Secure NAT) > Secure NAT Configurationから好きなプライベートアドレスを割り当てます.
今回は最初に載せた上図のような構成にしたいので,192.168.0.0/24のネットワークを構築します.
ClientからServerに接続する
Clientの設定
ClientにはGUIツールがないので,コマンドで操作します.
cd /usr/local/vpnclient/
./vpncmd
仮想NICを作成します.今回はvpn_nic
という名前にします.
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
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
dhclient vpn_{name}
iPhoneから接続する
本題とは逸れますが,一応行います.
まず,iPhone用にL2TPの設定を行います.最初の画面>IPSec/L2TP Settingというのがあるのでそれをクリックします.そして,下図の画面のようにします.
ip addressの部分はDDNSのドメイン名にしてください.
で接続できればOKです.
192.168.0.11が割り当てられていて,ちゃんと接続できていますね!
ラズパイから接続する
softether client
基本的には,GCPにSoftether ClientをインストールとClientの設定と同じことをラズパイでします.
IPの固定
ラズパイはIPを固定した方が使い勝手がいい(∵GCP→ラズパイにリバースプロキシしたい)ので,固定します.
/etc/dhcpcd.conf
に以下を追記します.{name}
には,作成した仮想NICの名前が入ります.
interface {name}
static ip_address=*.*.*.*/~
再起動して,ホスト(GCPのsoftether serverのインターフェース)にping
が通ればOKです!
※今回は,Secure NATの設定で指定した192.168.0.10
にping
を送っていいます.
sudo reboot
ping 192.168.0.10 # check host's interface
おわりに
とりあえず,長いのでここで終了です.