世の中リモートワークが増えてきましたが、固定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
イメージを選択します。
オプションを見る
を開き、スタートアップスクリプトに上記のスクリプトを貼り付けます。
2分待つ
セットアップ作業はこれだけです!
あとはじっとサーバーの起動と、スクリプトの完了を待ちます。
初回はDockerイメージのpull
があるので、それなりに時間がかかります。
自分の場合は追加ボタンを押してから実測1分40秒ほどでコンテナが起動しましたが、もちろん前後します。
起動の確認
VPSインスタンスの詳細画面でIPアドレスを確認します。
次のコマンドを実行すると、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なし
VPNあり
クライアントからの接続
あとは起動したVPNサーバーをおいしくいただきましょう。macOSを例に説明します。
Windowsでも同じプロトコルがサポートされているので多分大丈夫です。
ネットワークインターフェースの追加
環境設定のネットワークでL2TP over IPSec
のVPNインターフェースを追加します。
接続先と認証情報
まずはIPアドレス
とユーザ名
を入力します。
続いて認証設定
ボタンを押してパスワード
と事前共有鍵
を入力します。
OK
ボタンを押して認証設定を閉じ、右下の適用
ボタンを押します。
それから接続
ボタンを押すと、VPN接続が開始されます。
ほどなく認証を経て、VPNに接続できます。やったー!
VPNサーバーのIPアドレスで外に通信できてないなーという場合は、詳細
ボタンを押して、すべてのトラフィックをVPN接続経由で送信
にチェックを付いているか確認しましょう。
ファイヤーウォール
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
権限で実行すれば同じことができると思います。