3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

docker上のVPNからしかアクセスできないサービスを作る

Posted at

docker上のネットワークに接続しないとアクセスできないサービスを作りたかったので、pritunlを使ってVPNを作りました。
ほぼpritunlの話です。

docker コンテナ

dockerで使うイメージは、VPN構築のためのPritunlと、説明のためのNginxです。Pritunlはホストマシンとの通信用に、ポートを空けておきますが、NginxはVPN接続時にのみ、アクセス出来るようにするため、portの設定はしません。

docker-compose.yml
version: '3.7'

services:
  pritunl:
    image: jippi/pritunl
    container_name: pritunl
    privileged: true
    ports:
      - "1194:1194/udp"
      - "1194:1194/tcp"
      - "80:80/tcp"
      - "443:443/tcp"
    networks:
      bridge:
        ipv4_address: 172.16.20.2

  nginx:
    image: nginx
    container_name: nginx
    networks:
      bridge:
        ipv4_address: 172.16.20.3

networks:
  bridge:
    driver: bridge
    ipam:
      driver: default
      config: 
        - subnet: 172.16.20.0/24

docker-compose.ymlが用意できたら、サクッとコンテナを立ち上げます。

$ docker-compose up -d

この時点では、Nginxには繋がりません。

access_to_nginx.png

Pritunlへのログイン

dockerが起動したら、localhost:443でpritunlに接続してログインします。

デフォルトのUsernameとPasswordは、どちらもpritunlです。

pritunl_login.png

ログインしたら、Initial Setupの画面が表示されるので、とりあえずUsernameとPasswordを変更しておきましょう。Public Addressは、空欄にしておくとグローバルIPアドレスが自動入力されてしまうため、とりあえず手元で動かすためにlocalhostに変更しておきます。

pritunl_InitialSetup.png

Pritunlの設定変更

ここからPritunlの設定をしていきます。UsersタブからAdd Organizationをクリックし、適当な名前を入力したら、Addを押下して追加します。
pritunl_AddOrganization.png

続いて、Userを追加します。Pinコードはoptionalなので、空欄でも構いません。

pritunl_AddUser.png

今度は、Serversタブに移動し、Add ServerからServerを追加します。PortとProtocolは、docker-composeで設定したudpのポートを指定します。

Virtual Networkに設定したネットワークのipが、vpnクライアントに割り当てられます。
この値を、docker上のbridgeネットワークと同一にしてしまい、Pritunlコンテナに繋げなくなったミスをしたのは、ここだけの話。
なので、dockerのネットワークのサブネットとは全く異なる値にしておいたほうが、トラブルが少ないはず。

pritunl_AddServer.png

サーバが作成できたら、Routeも追加しておきます。Add Routeをクリックし、docker composeで設定したネットワークを追加します。

pritunl_AddRoute.png

サーバが作成できたら、Attach Organizationをクリックして、作成したサーバにOrganizationを紐付けます。

pritunl_AttachOrganization.png

VPNサーバの起動

Serversから作成したサーバのStart Severをクリックすると、VPNサーバが起動します。

pritunl_StartServer.png

Pritunlクライアントの設定

Usersタブに戻り、対象のユーザープロファイルをダウンロードします。

pritunl_download-user-profile.png

Pritunl Clientの公式サイトからクライアントをダウンロードし、起動します。
Import Profileをクリックし、先ほどダウンロードしたプロファイルを読み込みます。

pritunl_client.png

インポートできたら、メニューボタンよりConectを選択し、VPNに接続します。

pritunl_clinet_connect.png

pritunl_vpn_connection.png

VPNに接続できると、先ほど繋がらなかった172.16.20.3でNginxにアクセスできるようになります。

nginx.png

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?