Edited at

ConohaのVPS一台でVPNを立てたうえでローカルアドレスにアクセスしてみる。

More than 3 years have passed since last update.


重要

もしかしたらうまくいってないかも・・・

ツッコミ歓迎です。というか誰かやり方おしえてくだされ・・・


はじめに

前の投稿でPritunlを使ってVPNを構築してみたのですが、イマイチうまい使いみちが思いつかなかったのですが、ConohaのVPSではローカルネットワークが独自に構築できるということを知りました。

なので、VPS一台ではありますが、VPNからローカルネットワークにアクセスできる環境を構築してみました。


Conoha上にローカルネットワークを構築

ここを参照。

サブネットマスクは10.0.0.0/24、IPアドレスは10.0.0.11としました。


構築イメージ

Untitled Diagram.png

Dockerが独自に立てるネットワーク、VPNで構築されるネットワーク、グローバルIP、ローカルネットワークとサーバ一台なのにネットワークが4つ。もう意味がわからない。

otherserviceはDockerで構築する際に10.0.0.11からのアクセスを許容するようにし、pritunlはグローバルIPからのVPN接続を許容、かつローカルネットワークにブリッジさせます。


Docker-Composeの設定

前回からの設定と違い、docker-compose.ymlの記法はversion2を利用します。

version2からはネットワークスタックなどもdocker-compose.ymlに定義できるようになっているので、より自由度の高い構築ができるようになっています。


docker-compose.yml

version: '2'

services:
mongo:
image: mongo
volumes:
- ./mongo:/data/db
networks:
- default
- local
ports:
- "127.0.0.1:9700:443"
- "1194:1194/udp"
- "1194:1194/tcp"
restart: always
pritunl:
image: fridus/pritunl
privileged: true
environment:
- MONGO_URI=mongodb://127.0.0.1:27017/pritunl
restart: always
network_mode: service:mongo

networks:
local:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.0.10.0/24
ip_range: 10.0.10.0/24
gateway: 10.0.10.1


前回と違い、ネットワーク専用のサービスは削除して、MongoDBのサービスのネットワークにPritunlがあいのりするようにしました。

MongoDBはデフォルトのDockerのネットワークおよびNetworksで定義しているローカルネットワークに接続しつつ、Portsで外部に対してVPN用のポートおよび管理コンソール用のポートを開放しています。


Pritunlの設定

ここを参照


その他のサービスの設定

その他のサービスについては、以下のように設定して10.0.0.11へのアクセスが可能なようにしておきます。


docker-compose.yml

version: '2'

services:
service:
image: hogehoge
ports:
- "127.0.0.1:8080:80"
- "10.0.0.11:8080:80"
restart: always


その後はUFWを解放してあげて終了。

Pritunlがつくった192.168.232.0/24からのアクセスだけ許可してあげればいいのかな?

ちょっとココらへんが怪しい

$ sudo ufw allow from 192.168.232.0/24

$ sudo ufw allow from 10.0.10.0/24

あとはdocker-compose upでローカルネットワークにもアクセスできる環境が構築できます。

一応10.0.0.11:8080に対してTelnetが通ることだけは確認。