- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-07-02T03:26:42+00:00","","")
#author("2020-10-25T22:19:42+00:00","","")
#topicpath
----
PritunlはいわゆるOpenVPN ServerのWrapperみたいなもので、なかなかめんどくさかったOpenVPN サーバの構築をあっという間におこなえる便利なライブラリです。公式サイトを見ると、AWS上にいれてEC2への接続をセキュアにするなんて事も出来るようです。
https://pritunl.com/
#ref(top.png)
#contents
サイトのSubscription Plansの欄をみると、フリープランやらEnterpriseプランなどあるっぽいですが、フリーのプランではOpenVPNのブリッジ接続はつかえないようで、OpenVPNサーバによるNAT接続( VPN接続はすべてOpenVPNサーバがNAT変換する) となるようです。ようするに
#ref(before.png)
こんなネットワークに対して、
#ref(after.png)
こんな感じのネットワークが構築され、192.168.0.50 のPritunl Serverが、クライアントの接続を中継する方式となります。((通信的には微妙に異なるけどまあ概念的にあってればよしとしますか))
**やってみる [#j1073c22]
今回は下記の Ubuntu Server にインストールします。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
環境などその他の前提事項は以下の通り。
VPNサーバ: 192.168.0.50
ルータのグローバルアドレス: 111.101.12.xxx
ルータ内のネットワーク: 192.168.0.0/24
Pritunlサーバが構築する仮想ネットワーク: 192.168.238.0/24 ← Pritunlサーバが勝手に決める(指定もできる)
Pritunlの管理WEB画面のSSLポート番号:443
とします。
OpenVPNサーバはルータのなかのLAN上に存在するので、 管理画面等を外から操作するにはPort Forwardingが必要です((もちろん管理画面はLAN内でのみとするなら不要です。))。
具体的には外のルータの設定として「ルータ外のポート443 → 192.168.0.50のポート443 にPort Forwardingする」を追加しておきます((すでにWEBサーバとしてなど別用途で使ってたら、外のポートはあいてるポートを適宜使用してください))。
管理画面でなくVPNサーバとして使用する観点でももちろんPort Forwardingが必要なのですが、まだポート番号が未定(設定時きまる)なので、後述します。
さて構築なのですが、公式が超ていねいなので、順次それを追いかけていこうと思います。
https://docs.pritunl.com/docs/installation
**インストール [#qe391bb5]
下記のshをつくって実行しなさいとあるのでその通りに。下記のshは 2018/07/08時点なので、適宜公式を確認してください。
$ cat install.sh
#!/bin/bash
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" \
> /etc/apt/sources.list.d/mongodb-org-3.6.list
echo "deb http://repo.pritunl.com/stable/apt xenial main" > /etc/apt/sources.list.d/pritunl.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A
apt-get --assume-yes update
apt-get --assume-yes upgrade
apt-get --assume-yes install pritunl mongodb-org
systemctl start pritunl mongod
systemctl enable pritunl mongod
$ chmod 755 install.sh
$ sudo ./install.sh
インストールは完了です。
$ sudo systemctl status mongod
$ sudo systemctl status pritunl
でサービスがrunningになってればOkです。
*** セットアップキーを取得 [#o731d83a]
ブラウザで、 https://192.168.0.50/ にアクセスすると、データベースのセットアップ画面が表示されます。
#ref(01.png)
Setup Keyというのが必要なのですが、画面に書いてあるとおり
$ sudo pritunl setup-key
xxxxxxxxxxxxxxxxxxxxx
と打つことでキーが取得できるので、その値を使用すればOKです。
DBセットアップが完了すると、ログイン画面が表示されます((なんかときどき出ないこともありますが、リロードすればOKぽい))。
#ref(02.png)
初回は pritunl/pritunl でログインします。
ログインすると、初期セットアップ画面が表示されます。
#ref(03.png)
UsernameとNew Password は適宜入力、Public Addressは、OpenVPNクライアントが接続するIPとなるので、今回の例だとルータの外の111.101.12.xxx を入力。ポート番号は、このサーバが起動しているSSLのポート番号(通常443)を指定します。
以上で基本的な初期セットアップは完了です。
**環境設定 [#t862391a]
Pritunlのしくみですが、まず OpenVPNサーバ(Servers) を立てて、別途組織(Organizations )というものを作成し、そのなかにユーザ(Users)を作成します。そして、Server に Organization を関連付けることで、あるユーザがOpenVPNサーバを利用出来るようになります。
#ref(dashboard.png)
*** 組織とユーザを作成する [#h7940496]
上部メニューの 「Users」をクリックし、「Add Organization」を選択。適当な名前(ここではtestOrg)を入れて「Add」を押します。
#ref(04.png)
つづいてユーザの作成です。「Add User」を選択。Nameはとりあえず「user01」、Organizationはさきほどの「testOrg」を選択、Pinはパスワードなので任意の文字(数字のみ?っぽい)を入れておきます。
#ref(05.png)
下記の通り表示されれば、ユーザの作成は完了です。
#ref(06.png)
*** サーバを作成する [#q07d0f5c]
ようやくOpenVPNサーバを作成します。 上部メニューの 「Servers」をクリックし「Add Server」を選択します。
Nameは「test server」、OpenVPNが待ち受けるPortは自動選択されるっぽいですが、18680/udpを選択しました。
このUDPポートはOpenVPNとの通信に使用するので、ルータにPort Forwardingの設定が必要です。さきほどルータに443のPort Forwadingする説明をしましたが、この 18680/UDP も、Port Forwardingに設定しておきましょう。
Virtual Networkは OpenVPNサーバが適当に設定されます。ここでは 192.168.238.0/24 となっていました。
最後に「Add」を押せばOK。
#ref(07.png)
下記のようになっていればOKです。
#ref(08.png)
つづいてこのサーバがNATするネットワークを指定します。このOpenVPNサーバは、なかのネットワーク: 192.168.0.0/24にNATすればよいので、「Add Route」をクリックし、Networkに 192.168.0.0/24 を記述し「Attach」を押下すればOKです。
#ref(09.png)
下記の通りRouteが設定されました。
#ref(10.png)
*** ServerとOrganizationを関連付け [#sa0d9564]
さいごに ServerとOrganization を Attach します。右上の「Attach Organization」を選択し、organizationとserverをそれぞれえらんで Attachを押せばOK。
#ref(11.png)
右上の「Start Server」が押せるようになったので、押下してサーバを起動してください。
#ref(12.png)
サーバの構築は以上です。
** クライアント側の環境構築 [#i24f062d]
OpenVPNの公式のクライアントでもよいんですが、ここでは http://client.pritunl.com/ よりPritunl Clientを使用します。OSにあったインストーラを使用してインストールしてください。
***プロファイルの取得 [#gecdc4d5]
さきほどのユーザ画面よりユーザのプロファイルを取得します。右上の Users をクリックし、画面の 下矢印アイコンをクリックして、プロファイル( testOrg_user01_testserver.ovpn をアーカイブしたtarファイル)をダウンロードします。
#ref(user01.png)
このファイルは、さきほどインストールしたアプリに ドラッグ & ドロップするか「Import Profile」などで取り込んでください。
最後に、GUIからConnectを選択し、さきほど設定したPIN番号を入力すればOK.
#ref(13.png)
接続できたら、
ping 192.168.0.50
ping 192.168.0.12 ← 初めの図のWEBサーバです
などに疎通ができればOKです。
おつかれさまでした。
**関連リンク [#c6ede753]
-[[Pritunl - Open Source Enterprise Distributed OpenVPN and IPsec Server>https://pritunl.com/]]
-[[pritunlでCentOSにVPNサーバー構築 - Qiita>https://qiita.com/sue71/items/7b30766ddf070d4e3f25]]
-[[PritunlでVPCへのOpenVPN接続を用意する | Developers.IO>https://dev.classmethod.jp/cloud/aws/intro-pritunl-feb-2017/]]
----
この記事は
#vote(おもしろかった[2],そうでもない[0])
#vote(おもしろかった[3],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}