SoftEther VPN Serverを構築します(Docker使用、Linux版)

Dockerを使用してVPN Serverを立ち上げます。調べているとイメージがあったので使用させていただくことにしました。Google Cloudの無料プランのインスタンスにインストールします。e2-microのプランでubuntuがOSとなっています。

https://github.com/siomiz/SoftEtherVPN

スマホやOpenVPNの接続を使用しないのでポート番号は5555だけを使用するようにコマンド入力をします。docker psで確認するとコマンドで入力していないポート番号がありますが、ホストには関係ないので気にしないことにします。また、ホストではファイヤーウォールは無効にしておきます。

docker run -d --name vpn --cap-add NET_ADMIN -p 5555:5555/tcp siomiz/softethervpn

コンテナにはいります。というのも以前VPN ServerをDocker無しで一から設定した時、ubuntuでは接続に失敗したのでOSが何かを確認するためです。ただそれだけの理由です。

docker exec -it vpn bash

aptは使えませんでしたが、yumとdnfは使えました。公式の推奨OSにVPN Serverを構築してあるようです。

コンテナがうまく立ち上がったので、接続できるように設定をします。Linuxでのコマンドによる作業は困難なので自宅にあるWindowsに管理ツールをインストールして作業を進めます。この方法はGitHubには記載してなかったのですが、以前自分で設定した時はこの方法を使用したので試してみます。

https://www.softether-download.com/ja.aspx?product=softether

上の公式ページで、SoftEther VPN Manager for Windowsを選択して、最新のSoftEther VPN Server and VPN Bridgeのリンクをクリックしてダウンロードします。ダウンロードしたファイルを実行してインストールします。インストールするソフトウェアはサーバー管理マネージャを選択します。

インストール完了後にやるべきことがあります。Google CloudのVPCネットワークにあるファイヤーウォールでポート番号5555のトラフィックを許可しておくことです。

準備ができたのでサーバー管理マネージャを起動して設定をしていきましょう。「新しい接続設定」をクリックしてホスト名、ポート番号を入力します。ホスト名はGoogle Cloudの外部IPアドレスです。管理パスワードを決めて接続してみましょう。失敗しました。

githubの説明によると、ログを確認するとユーザー名とパスワードが見えるらしいのでコマンドを入力してみます。

docker logs vpn

確かにユーザー名とパスワードがあるが、おそらくこれはVPNに接続するユーザーの事で、管理者パスワードが不明なので調べてみることにする。これが無いと管理ツールでログインできません。サクッと読んだだけだったので見落としてましたが、Docker runのオプションで設定できるようです。

コンテナを停止して削除します。

docker stop vpn
docker rm vpn

管理者パスワードが設定できるDockerコマンドを入力します。

docker run 
 --name vpn 
 --cap-add NET_ADMIN 
 -p 5555:5555/tcp 
 -e SPW=test 
 -e HPW=test 
 -d siomiz/softethervpn

サーバー管理マネージャで再度、設定したパスワードを使用して接続してみます。今度はうまくいきました。

接続ができたので使用しない機能を無効にします。docker runコマンドで使用するポートは5555のみにしたのでそれ以外は無効にします。IPsec/L2TP/EtherIP/L2TPv3サーバー機能の設定ではすべてチェックを外します。スマホなどで接続する方は読み替えて下さい。

同様にして使用しないポート番号を停止し、ダイナミックDNS機能やOpenVPN/MS-SSTPも無効にしました。

次は接続するユーザーを作成します。仮想HUBの管理から進みます。一人作成されていますが削除して新たに作成します。

ここまでで接続できる準備ができました。

SoftEther VPN Clientを起動して必要な項目を入力します。

接続することができました。

念のためブラウザで自分のIPアドレスを教えてくれるサイトにアクセスします。Google Cloudの外部IPアドレスが表示されていれば成功です。

最後にコンテナに入ってサーバー管理マネージャで設定したことがコンフィグファイルに反映されているか見てみます。VPNで使用するポート番号の部分を確認しましたが、うまくいっているみたいです。

教育

Posted by admin