dockerでvpnサーバーをたてる

  • 49
    Like
  • 0
    Comment

え、Dockerで?

いくらdocker好きだからって、これは意味が無いだろうと思った人、かなり正解かもしれません。
そもそも、pritunl自体インストールが容易なので、dockerを使うと発生する作業のオーバーヘッドの方が大きいと思うかもしれません。
わたし自身これについてはあまり大きな意義を見いだしていませんが、やってみたら結構簡単にできたのでっと言い訳しておきます。

きっかけ

この記事( http://qiita.com/sue71/items/7b30766ddf070d4e3f25 )が目に入ったからです。
そもそもVPNサーバーを立ち上げたいと考えていたのですが、http://centossrv.com/openvpn.shtml このサイトを探しただけで止まっていました。証明書をいっぱい作るってだけで抵抗感w

目から鱗

pritunlを使うとかなり簡単に構築できそう!
http://pritunl.com
管理がをwebベースでできるオープンソース(PythonとJavascript)
https://github.com/pritunl/pritunl

なので、ファイアウォールさえ気をつけて、どのポートを利用するかを考慮するだけになります。

とはいえ、まだそれ専用マシンを用意できません。

ググれ → [pritunl docker]

dockerイメージ発見です
https://github.com/lifeeth/docker-pritunl

dockerでやる

やっと本題のようです。

ローカルに持ってくる
$ sudo docker pull lifeeth/pritunl

最低二つのTCPポート&VPNで利用するUDPポートが動作には必要。ファイアウォールの関係があるので、あらかじめ明確にしておくと後々楽です。
管理用のポートはデフォルトで以下の通り
(1) 9700:pritunlが利用するweb用のポート
(2) 1194:OpenVPNが利用するポート
dockerの場合、ポートマッピングが容易なので、都合の良いTCPポート2つあればOK
VPNで利用するポート番号も設定で決められるので、あらかじめ決めておくだけ。
※とはいえ、とりあえずデフォルトで話を進めます。

例えばDMZとかに置く場合、TCPポートは内向きのみあけておけばOK
※外から管理する場合は別ですが。

VPNで利用するUDPポートを1150とかにしておきます。

整理

service protocol port
web tcp 9700
OpenVPN tcp 1194
VPN udp 1150

firewall

centos7の場合以下のように簡単に穴をあけられます。

$ sudo firewall-cmd --add-port 9700/tcp
$ sudo firewall-cmd --add-port 1194/tcp
$ sudo firewall-cmd --add-port 1150/udp

※その他の場合は個別に調べてね :grin:

注意点

dockerでインスタンス生成する前に、Webで設定した情報は/var/lib/pritunl以下に保存される
dockerインスタンス内に保存された場合、dockerが落ちたりすると、設定を再度やり直す必要がでてきます。
設定のバックアップなども取れないので、これらの情報はホスト側に保存されるようにします。

格納場所:[ホスト側のカレントディレクトリ]/vpn

インスタンス生成

ホスト側では以下のコマンドで実行する

$ sudo docker run -d -v `pwd`/vpn:/var/lib/pritunl --privileged -p 1150:1150/udp -p 9700:9700 -p 1194:1194 lifeeth/pritunl

その他

後はブラウザで以下にアクセスして各種設定を行ないます。
https://[hostname]:9700/
以降の使い方はぐぐれば結構でてくると思います。
http://christina04.hatenablog.com/entry/2014/11/01/141627

Organizationsでユーザーをグルーピングして、Serversでネットワーク設定。
ServerにOrganizationをアタッチするれば、ネットワークの利用ユーザーを
管理できるのはすごい分かりやすいです。

また、利用できるクライアントも幅広く対応
http://pritunl.com/tutorial.html
ubuntu、Windows、Android、iOS、Tunnelblick(mac)

webでユーザー設定をすると、keyをダウンロードできるようになります。
拡張子は.ovpn
このファイルを各クライアントアプリに設定すれば良いのです。
スマホの場合、対応するクライアントをインストールした後で、gmailとかで送付してダブルクリックすれば良いです。
macの場合、拡張子が、.ovpnだとTime Machineが起動したりするので、その場合、拡張子をtblkとかconfとかに変更すると良いようです。

謝意

重ねてになりますが、pritunlを紹介してくれたsue71( http://qiita.com/sue71 )さんに感謝いたします。