Posted at

高速VPNを最速3分でスタート ConoHaで月額630円

世の中リモートワークが増えてきましたが、固定IPからの接続が必要な作業もあります。

そんなときに便利なのがVPNです。

インターリンクさんのマイIPは安くて簡単です。ただ、自分が契約したときは通信速度が遅くて解約しちゃました…(中の人にはすみません!)

同じような低料金のソリューションとして、低価格VPSでSoftEtherを稼働させる方法がよく紹介されています。

マイIPの最速3分でスタートに対抗して、最速3分でVPSにSoftEtherをセットアップするレシピを考えてみました。

こちらのステキなDockerイメージにより実現しました。

siomiz/softethervpn

https://hub.docker.com/r/siomiz/softethervpn


材料


  • ConoHaのアカウント


  • 事前共有鍵 例: rRhM*HkHcX9U

  • VPNに接続するユーザー名:パスワードの組み合わせ(;区切りで複数可) 例: user01:pass01;user02:pass02;user03:pass03


セットアップ


スタートアップスクリプトの準備

任意のエディタなどで次のスタートアップスクリプトを用意します。

PKS='事前共有鍵'と、USERS='ユーザー名:パスワードの組み合わせ'の部分を先ほど用意した材料で置き換えてください。

#!/bin/bash

cat << EOS > /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker run --privileged --name vpnserver \
-p 500:500/udp -p 4500:4500/udp -p 1701:1701/tcp
\
-e PSK='事前共有鍵'
\
-e USERS='ユーザー名:パスワードの組み合わせ'
\
siomiz/softethervpn:4.27-ubuntu
ExecStop=/usr/bin/docker stop -t 2 vpnserver
ExecStopPost=/usr/bin/docker rm -f vpnserver

[Install]
WantedBy=multi-user.target
EOS
systemctl daemon-reload
systemctl enable vpnserver
systemctl start vpnserver

内容としては、SoftEtherのDockerコンテナを起動するsystemd向けのサービススクリプトを登録して、有効化・起動しているだけです。

ここでは公開ポートをL2TP over IPSecのみとしているので、OpenVPNやSoftEtherのポートも公開したい場合は上記のDockerイメージの説明をご参考ください。

なお、説明では--cap-add NET_ADMINで必要な特権を付与していますが、これだけではdmesgのエラーが出てしまい起動せず、--privilegedに置き換えています。


スタートアップスクリプト付きでVPSを起動

ConoHaでサーバーの追加フォームを開き、Dockerイメージを選択します。

ConoHaコントロールパネル.png

オプションを見るを開き、スタートアップスクリプトに上記のスクリプトを貼り付けます。

ConoHaコントロールパネル.png


2分待つ

セットアップ作業はこれだけです!

あとはじっとサーバーの起動と、スクリプトの完了を待ちます。

初回はDockerイメージのpullがあるので、それなりに時間がかかります。

自分の場合は追加ボタンを押してから実測1分40秒ほどでコンテナが起動しましたが、もちろん前後します。


起動の確認

VPSインスタンスの詳細画面でIPアドレスを確認します。

vpn01___ConoHaコントロールパネル.png

次のコマンドを実行すると、VPNサーバーが起動されたか確認できます。

(ConoHaのrootログインって大胆だなといつも思いつつ…)

ssh root@IPアドレス docker ps

以下のようにsiomiz/softethervpnイメージのDockerコンテナ表示されたら起動済みです。

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES

eb437b346cac siomiz/softethervpn:ubuntu "/entrypoint.sh /usr…" 5 seconds ago Up 4 seconds 0.0.0.0:500->500/udp, 443/tcp, 5555/tcp, 0.0.0.0:4500->4500/udp, 1194/udp, 0.0.0.0:1701->1701/tcp vpnserver


スピードテストの結果

接続方法の前に気になるスピードテストの結果を紹介します。VPNを経由すると下りが半分くらいになりました。

当方、札幌からの接続で物理的な距離もあるのでこれで満足です。


VPNなし

Speedtest_by_Ookla_-_The_Global_Broadband_Speed_Test.png


VPNあり

Speedtest_by_Ookla_-_The_Global_Broadband_Speed_Test.png


クライアントからの接続

あとは起動したVPNサーバーをおいしくいただきましょう。macOSを例に説明します。

Windowsでも同じプロトコルがサポートされているので多分大丈夫です。


ネットワークインターフェースの追加

環境設定のネットワークでL2TP over IPSecのVPNインターフェースを追加します。

ネットワーク_と_「最速3分でスタート_ConoHaで高速VPNサーバー構築_月額630円」を編集_-_Qiita_と_コンテナの自動起動_—_Docker-docs-ja_1_12_RC2_ドキュメント.png


接続先と認証情報

まずはIPアドレスユーザ名を入力します。

ネットワーク_と_「最速3分でスタート_ConoHaで高速VPNサーバー構築_月額630円」を編集_-_Qiita_と_コンテナの自動起動_—_Docker-docs-ja_1_12_RC2_ドキュメント.png

続いて認証設定ボタンを押してパスワード事前共有鍵を入力します。

OKボタンを押して認証設定を閉じ、右下の適用ボタンを押します。

それから接続ボタンを押すと、VPN接続が開始されます。

ネットワーク_と_「最速3分でスタート_ConoHaで高速VPNサーバー構築_月額630円」を編集_-_Qiita.png

ほどなく認証を経て、VPNに接続できます。やったー!

ネットワーク_と_「最速3分でスタート_ConoHaで高速VPNサーバー構築_月額630円」を編集_-_Qiita.png

VPNサーバーのIPアドレスで外に通信できてないなーという場合は、詳細ボタンを押して、すべてのトラフィックをVPN接続経由で送信にチェックを付いているか確認しましょう。

ネットワーク_と___httpd_v3_lightfile-command_—_root_133-130-121-156____—_ssh_vpn01_—_114×92_と_vpn01___ConoHaコントロールパネル.png


ファイヤーウォール

ConoHaのDockerアプリケーションイメージはUbuntuベースなのでufwコマンドでよしなに!

# for cond in 22/tcp 500/udp 1701/tcp 4500/udp; do ufw allow $cond; done

# ufw enable


ConoHa以外のホスティングの場合

Dockerとsystemdが使えるなら、スタートアップスクリプトをroot権限で実行すれば同じことができると思います。