DockerでOpenVPN Access Serverを使用した独自のVPNサーバーを動作させる

マシンを作成する

最初に、以下のリソースを持つマシンを作成します。 20 GHz CPU 16 GB RAM 20 GB SSD CloudSigmaのライブラリにあるUbuntu 18.04イメージを使用してディスクをマウントします。 Ubuntu 18.04:VirtIOドライバ、superuser、Python 2.7.15、Pip 18.0、OpenSSL 1.1.0i、Cloud-init、および2018年9月30日までの最新の更新がプリインストールされた64bit版。 マシン上のすべての既存のリポジトリとパッケージを更新します。

sudo apt update
sudo apt upgrade

システムが最新の状態になったら、Dockerのインストールに移ります。Dockerの詳細については、こちらをご覧ください。

Dockerをインストールする

次のコマンドを実行してDockerをインストールできます。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce

OpenVPN

Dockerが正常にインストールされたら、OpenVPN Access Serverの稼働を開始できます。次に示すのは、指定した設定でOpenVPN Access Serverの新しいDockerコンテナを作成するコマンドです。

docker create \
--name=openvpn-as \
-v <path to data>:/config \
-e PGID=<gid> -e PUID=<uid> \
-e TZ=<timezone> \
-e INTERFACE=<interface> \
--net=host --privileged \
linuxserver/openvpn-as

次のコマンドはDockerイメージのページに記載されています。

openvpn-asが設定ファイルを保存する場所:

-v /config

GroupIDの指定:

-e PGID

ユーザーIDの指定:

-e PUID

タイムゾーン設定:

-e TZ

openvpn-asのインターフェース設定(デフォルトはeth0):

-e INTERFACE

重要:ほとんどのユーザーは、ホストモードで操作する必要があります。

--net=host

重要:特権モード以外では動作しません。

--privileged

グループIDとユーザーIDを取得するには、次のコマンドを実行します。

id

ここでは、タイムゾーンをCETとします。
インターフェースの取得には、次のコマンドを実行します。

ip r

インターフェースは通常、ens3またはeth0です。今回のシステムの場合は、ens3になっています。
これらの指定をすべて追加して、次のコマンドを実行します。

sudo docker create --name=openvpn-as \
--restart=always \
-v /home/docker/openvpn-as/config:/config \
-e INTERFACE=ens3 \
-e PGID=1004 -e PUID=1000 \
-e TZ=Europe/Warsaw \
--net=host --privileged \
linuxserver/openvpn-as

まだイメージがシステムに存在しないため、イメージはサーバーから取得されます。出力は次のようになります。

Unable to find image 'linuxserver/openvpn-as:latest' locally
latest: Pulling from linuxserver/openvpn-as
56d9dc91333b: Pull complete
1356b0cfc067: Pull complete
155f3c53d4a5: Pull complete
05088c205b6d: Pull complete
112068b0fa4e: Pull complete
2ff5dd4a0d9b: Pull complete
7dd87385ca73: Pull complete
d966d969c7cd: Pull complete
4439dbcda217: Pull complete
5f960f89c64e: Pull complete
Digest: sha256:d65f743bcec24b6b6ad0b19f9d7876cd70d5237690a940301b2366d6d5767a80
Status: Downloaded newer image for linuxserver/openvpn-as:latest
f0a1eb5440b5a423f8f21081d8654aaba2c0bd9995d2dea88a979c97ea977e16

次のコマンドを使用してコンテナを起動します。

sudo docker start openvpn-as

ログインする

起動したら、アクセスサーバーの管理パネルに移動します。 次のURLに移動します。https://<>:943/admin

デフォルトでは、次のユーザー名とパスワードが要求されます。

ユーザー名:admin
パスワード:password

ログインすると、EULA(エンドユーザー使用許諾契約書)に同意するかどうかを尋ねられます。[Agree(同意する)]をクリックし、管理ダッシュボードに移動します。

セキュリティ上の理由から、adminアカウントのパスワードを変更することをお勧めします。次のコマンドを使用してパスワードを変更します。

docker exec -it openvpn-as passwd admin

DNSを設定する

サーバーが稼働したら、DNSを設定します。ドメインネームサーバー(DNS)の詳細については、こちらをクリックしてください。 最も高速なDNSサーバーの1つが、GoogleのDNSサーバーです。クライアントがWebサイトを簡単に見て回れるように、OpenVPN Access ServerでDNSを設定します。 [VPN settings(VPN設定)]を表示し、[DNS settings(DNS設定)]で、[Have clients use specific DNS servers(クライアントに特定のDNSサーバを使用させる)]を有効にします。

次に、DNSサーバーの欄に以下のアドレスを入力します。
Primary DNS Server(プライマリDNSサーバー):8.8.8.8
Secondary DNS Server(セカンダリDNSサーバー):8.8.8.4

設定を保存して、[Update Running Server(動作中のサーバーを更新)]をクリックします。これで、動作中のサーバーが更新されます。 サーバーが正しく設定されたら、システム経由でのVPNの接続に進むことができます。

次のクライアントUIにアクセスします。https://<>:943 adminのユーザー名とパスワードを入力するか、管理パネルの[User Management(ユーザー管理)]セクションで新しいユーザーを作成します。 ログインすると、OSごとのさまざまなオプションが表示されます。ここでは、Windowsを選択し、クライアントソフトウェアをダウンロードします。

インストールが完了したら、スタートメニューから起動するか、自動的に起動します。システムトレイから、先ほど設定したアカウントを使ってVPNに接続できます。

これで、VPNに接続されました。以上です。このようにしてDockerにVPNサーバーを作成します。

TOC