と言う話。
そもそも、なんで閉じた VPN を構築したのか
まあ、特に深い理由とかはそもそも無いのだけれども、
外出時とかに、参加ノードだけにアクセスできる VPN とか有れば便利じゃね?
っていう思い付きだけで構築しました。
まあ、所謂 P2P VPN とかの類いとやりたいことは一緒ですね。たぶん。
今回使ったモノ or サービス
- Hosting: hyper.sh (Docker Host) - effortless Docker Hosting
- Container: siomiz/softethervpn
- Software: Softether VPN の Server Manager
- Devices: Windows 10 Pro or iOS
どうやって作ったか
サーバ側 (hyper.sh)
今回は hyper.sh を使ったので、
- hyper.sh の cli 環境 (僕は WSL Arch 上に構築してある)
を用意した上で、
$ hyper fip allocate 1
で確保した IP address を用意し、下記の様な設定ファイルを書いた:
version: '2'
services:
vpn:
size: s3
fip: "hyper fip allocate 1 で確保した IP"
restart: always
image: siomiz/softethervpn
ports:
# IPSec/L2TP
- "500:500/udp"
- "4500:4500/udp"
- "1701:1701"
# OpenVPN
- "1194:1194/udp"
# Softether VPN
- "5555:5555"
env_file:
- .secret.env
で、上記設定ファイルに含まれる .secret.env
に関しては、
で設定出来る環境変数を記載しておく。 そしてその辺りの準備が出来たら、
$ hyper compose up -d
で、一発で起動できる。
ただ、この作業をしていた時に気がついたんだけど、
Softether VPN は最低でもメモリ 256MB ぐらいは無いと動かないっぽいので、
hyper.sh では S3
size のコンテナじゃないとダメっぽいです。
サーバ側 (Softether VPN の設定)
今回は インターネットに接続出来ない VPN を作るのが目的だった ので、
- Softether VPN の Server Manager (日本語だとサーバ管理ツール)
を使って、先程作った hyper.sh 上の VPN の管理システムにアクセスし、
SecureNAT を有効にした上で、Virtual NAT (仮想 NAT)を無効化する
という作業をしました。
但し、この作業は Softether VPN を経由してインターネット接続したい場合には必要ないです。 あとはまあ softether の無料 DDNS とかの設定とかもしてますね、はい。
クライアント側
基本的には、
- 普通に VPN へ接続する際の設定
を行えば良いのですが、この時注意するのは、
VPN の設定で、 すべての通信を VPN 経由にはしない
という所です。
と言うのも、今回の場合、構築された VPN は _インターネット接続出来ない VPN _ なので、
すべての通信を VPN を経由する 設定にしてしまうと、普通にネットへ接続出来なくなります。
で、あと Windows 10 Pro の場合、今回の _すべての通信の云々_ っていう部分は、
Windows 10 Pro の設定アプリ からでは出来ないらしく、
コントロールパネルのネットーワークアダプタの設定画面 からその辺りの設定を行う必要が有ります。
以上
なんかここまでコレ書いていて、
これのどこが簡単なんだ!
って印象を受けるのですが、ぶっちゃけ今回の Softether VPN を hyper.sh に建てる という事自体は、
という、hyper.sh の公式ブログの記事の中身と、行なっている事自体はほぼ一緒ですからね。 まあ僕は cli で引数指定するのがめんどかったんで hyper compose 使いましたが。
あとはまあ、以前、自宅で VPN を建てた時に比べると、今回は、
- 設定ファイルをちょっと調整して
- クライアントの設定をちょいちょいして
- あ、普通に接続出来たわ。よっしゃ
って感じで、作業的には小一時間ぐらいでモノが出来たので、 そう言った意味でも、かなり作業的には楽チンでした。
という事で以上。 なんか、書いてたら割と長くなった気がする。