カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

hyper.sh で Softether 使ってインターネットからは閉じた VPN を作るのがめっちゃ簡単だった

と言う話。


そもそも、なんで閉じた VPN を構築したのか

まあ、特に深い理由とかはそもそも無いのだけれども、

外出時とかに、参加ノードだけにアクセスできる VPN とか有れば便利じゃね?

っていう思い付きだけで構築しました。

まあ、所謂 P2P VPN とかの類いとやりたいことは一緒ですね。たぶん。

今回使ったモノ or サービス

どうやって作ったか

サーバ側 (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 に建てる という事自体は、

blog.hyper.sh

という、hyper.sh の公式ブログの記事の中身と、行なっている事自体はほぼ一緒ですからね。 まあ僕は cli で引数指定するのがめんどかったんで hyper compose 使いましたが。

あとはまあ、以前、自宅で VPN を建てた時に比べると、今回は、

  • 設定ファイルをちょっと調整して
  • クライアントの設定をちょいちょいして
  • あ、普通に接続出来たわ。よっしゃ

って感じで、作業的には小一時間ぐらいでモノが出来たので、 そう言った意味でも、かなり作業的には楽チンでした。


という事で以上。

なんか、書いてたら割と長くなった気がする。