と言う話。
そもそも、なんで閉じた 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
に関しては、
https://hub.docker.com/r/siomiz/softethervpn/siomiz/softethervpn
で設定出来る環境変数を記載しておく。 そしてその辺りの準備が出来たら、
$ hyper compose up -d
で、一発で起動できる。
ただ、この作業をしていた時に気がついたんだけど、
Softether VPN は最低でもメモリ 256MB ぐらいは無いと動かないっぽいので、
hyper.sh では S3
size のコンテナじゃないとダメっぽいです。
サーバ側 (Softether VPN の設定)
今回は インターネットに接続出来ない VPN を作るのが目的だった ので、
を使って、先程作った hyper.sh 上の VPN の管理システムにアクセスし、
SecureNAT を有効にした上で、Virtual NAT (仮想 NAT)を無効化する
という作業をしました。
但し、この作業は Softether VPN を経由してインターネット接続したい場合には必要ないです。 あとはまあ softether の無料 DDNS とかの設定とかもしてますね、はい。
クライアント側
基本的には、
- 普通に VPN へ接続する際の設定
を行えば良いのですが、この時注意するのは、
という所です。
と言うのも、今回の場合、構築された VPN は インターネット接続出来ない VPN なので、
すべての通信を VPN を経由する 設定にしてしまうと、普通にネットへ接続出来なくなります。
で、あと Windows 10 Pro の場合、今回の すべての通信の云々 っていう部分は、
Windows 10 Pro の設定アプリ からでは出来ないらしく、
コントロールパネルのネットーワークアダプタの設定画面 からその辺りの設定を行う必要が有ります。
以上
なんかここまでコレ書いていて、
これのどこが簡単なんだ!
って印象を受けるのですが、ぶっちゃけ今回の Softether VPN を hyper.sh に建てる という事自体は、
https://blog.hyper.sh/hyper_vs_digitalocean_round_2_vpn_server.htmlHyper.sh vs DigitalOcean Smackdown - Round 2: Set Up an OpenVPN Server on Hyper.sh
という、hyper.sh の公式ブログの記事の中身と、行なっている事自体はほぼ一緒ですからね。 まあ僕は cli で引数指定するのがめんどかったんで hyper compose 使いましたが。
あとはまあ、以前、自宅で VPN を建てた時に比べると、今回は、
- 設定ファイルをちょっと調整して
- クライアントの設定をちょいちょいして
- あ、普通に接続出来たわ。よっしゃ
って感じで、作業的には小一時間ぐらいでモノが出来たので、 そう言った意味でも、かなり作業的には楽チンでした。
という事で以上。 なんか、書いてたら割と長くなった気がする。