45秒でdockerでvpnサーバを建てる

参考 YouTubeのみなみチャンネル

Q. 45秒で何ができる?

A. 45秒でvpnサーバを建てられる

引っ越しのたびに光回線を引き直しているんだけど…

GCPやAWSなどの予算が溢れないようにネットワークディスクやローカルで済む簡単な計算などは現在でも一部は家のオンプレのサーバでやっています。単純に自分の機械を触っている時間を除くとオンプレはコストはクラウドに比べてそんなに高くないのとネットワークの実験が色々できて遊びと勉強が両立できて良いです。

この人手不足とワークライフバランスが重要視される世の中なので、NTTの人を責める事はありませんが、水や電気やガスといった生命に関係するインフラは当日開くのに、ネット用な一部の人間には十分生命に関係するインフラがこんなに遅いのか解せません。

NTTの工事が終わるまでどうやり過ごすか

この遅さを何とかする方法も今回の方法で解決できたりします。 ←高速にはなりませんでした

図1. SoftBank Air(遅い)

この手の工事が必要ないモバイル回線を転用した高速通信の常として、グローバルIPアドレスが外部からどうやってもアクセス不能になるというデメリットがあります。

私の使い方だと安価な計算や大容量の高頻度アクセスが必要なディスクはオンプレ、めちゃ重い計算はGCPに降っているという都合があって、どうしても普段使いでは家のサーバにアクセスしたいというモチベーションがあります。

こんなときにどこかのクラウドサービスでインスタンスを借りて、そこでVPNサーバを立ち上げれば、どこからでも家のパソコンにアクセスすることができます。

ユースケースとしては趣味や仕事のデータ(個人でデータを取り扱って良い)をカフェや会社の休み時間などからアクセスして操作したり、膨大な処理だった場合、進捗を確認したりすることができます。

図2. 家のPC、この計算力やディスクを遊ばせておくのは損失

イメージするネットワーク図

図3. こんな使い方をしたい

conohaのVPSの激弱激安インスタンス上にVPNサーバをデプロイすることで、そこ経由で家のPCにアクセスしたいです。

VPNサーバの設定は難しい & 苦痛

「dockerで簡単にサーバの設定を含めてデプロイできたらなぁー」とか言っていたら、そのものが存在しました。

英語なのと、いくつか情報が多すぎるので簡単化のため、wrapperスクリプトを書いたのでご紹介します。

コード

docker-composeでもいいのですが、インタラクティブにユーザ名、パスワードを設定したいので、以下のようなコードを書きました。

mediumの制限でコードの一部

使い方

LinuxにVPNサーバをdockerでインストールする

45秒もかからない?

Macをクライアントとする

図4. 設定の例1

例えばMacでセットアップする場合、設定のネットワークから、+からVPN(L2TP)を選択し、USERNAMEをterminalで入力したものと同一のものを入力します。

図5. 設定の例2

PASSWORDはパスワードに、PSKのパスワードはMacでは共有シークレットの部分になります。

結局、OSXやiOSやAndroidで使うにはL2TSが使えれば良い

操作感

IPアドレスもGMOのconohaのものになっています。

出先のMacBookから家のiMacへ接続成功(LAN内にはいれた)

作成したコード

--

--

Machine Learning [A]ddict, and a minimalist. github:https://github.com/gink03, website:https://gink03.github.io/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store