こんな感じのネットワークを構築します。

※筆者はVPNについてまるで素人なので、言いたいことがあれば是非是非コメント欄やついったへオナシャス><


0. 前提

  • リモート…Ubuntu Server 14.04.4 LTS
    • ※dockerはインストール済
  • ローカル…Windows10 64bit


1.SoftEtherVPNのdockerコンテナをセットアップ

1
docker run -d --name softethervpn --cap-add NET_ADMIN -p 500:500/udp -p 4500:4500/udp -p 443:443 -e USERNAME=ユーザ名 -e PASSWORD=パスワード -e PSK=事前共有鍵 --restart=unless-stopped siomiz/softethervpn

「ユーザ名」「パスワード」「事前共有鍵」の値はおこのみで設定してください。
また、ポート転送するポートは、必要なものだけにしておいたほうが良さそうです。


2.ufwでポートを開く

1
2
3
ufw allow 443
ufw allow 500
ufw allow 4500

※設定方法の詳細は 「docker run -p hostPort:containerPort」で転送したポートへのアクセスをufwで制限する - くんすとの備忘録 を参照


3.VPN Clientのインストールと設定

インストール

ここからダウンロードしてインストール
http://www.softether-download.com/ja.aspx?product=softether「SoftEther VPN Client」を選択

セットアップ

「SoftEther VPN クライアント接続」で、仮想LANカードと接続をひとつ作成する


4.Dockerコンテナの作成

JenkinsとRedmineのコンテナを作成する

1
2
docker run -d --name jenkins --restart=unless-stopped blacklabelops/jenkins
docker run -d --name redmine --restart=unless-stopped 74th/redmine-all-in-one:JP

※ポートの外部公開はしない


5.DockerコンテナのIPアドレスを調べる

1
docker ps -q | xargs docker inspect -f "{{.Name}} {{.NetworkSettings.IPAddress }}"
1
2
3
/redmine 172.17.0.4
/jenkins 172.17.0.3
/softethervpn 172.17.0.2

こんな感じで、予定通りのIPアドレスが振られています。


6.DockerコンテナへVPN越しに接続する

疎通確認

当然ながら、VPNを接続していない状態では、pingは通りません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
C:\work>ping 172.17.0.3

172.17.0.3 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

172.17.0.3 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

しかし、VPN接続を有効にしてからpingすると…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
C:\work>ping 172.17.0.3

172.17.0.3 に ping を送信しています 32 バイトのデータ:
172.17.0.3 からの応答: バイト数 =32 時間 =210ms TTL=63
172.17.0.3 からの応答: バイト数 =32 時間 =214ms TTL=63
172.17.0.3 からの応答: バイト数 =32 時間 =219ms TTL=63
172.17.0.3 からの応答: バイト数 =32 時間 =223ms TTL=63

172.17.0.3 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 210ms、最大 = 223ms、平均 = 216ms

つながりました!

ブラウザからの接続確認


こっちもOKです!


注意点など

  • SoftEtherVPNについて
    • 今回は443ポートを使いましたが、実運用では変えておいた方がよさそうです。
    • 今回利用したSoftEtherVPNのdockerコンテナは、サーバー管理マネージャは使えないっぽい。
      • dockerコンテナ作成時、サーバ管理用のパスワードにランダム文字列を割り当ててるっぽいので。

参考URL

使用したdockerイメージ

VPN関連情報