重要
もしかしたらうまくいってないかも・・・
ツッコミ歓迎です。というか誰かやり方おしえてくだされ・・・
はじめに
前の投稿でPritunlを使ってVPNを構築してみたのですが、イマイチうまい使いみちが思いつかなかったのですが、ConohaのVPSではローカルネットワークが独自に構築できるということを知りました。
なので、VPS一台ではありますが、VPNからローカルネットワークにアクセスできる環境を構築してみました。
Conoha上にローカルネットワークを構築
ここを参照。
サブネットマスクは10.0.0.0/24、IPアドレスは10.0.0.11としました。
構築イメージ
Dockerが独自に立てるネットワーク、VPNで構築されるネットワーク、グローバルIP、ローカルネットワークとサーバ一台なのにネットワークが4つ。もう意味がわからない。
otherserviceはDockerで構築する際に10.0.0.11からのアクセスを許容するようにし、pritunlはグローバルIPからのVPN接続を許容、かつローカルネットワークにブリッジさせます。
Docker-Composeの設定
前回からの設定と違い、docker-compose.ymlの記法はversion2を利用します。
version2からはネットワークスタックなども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へのアクセスが可能なようにしておきます。
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が通ることだけは確認。