Oracle Cloud Infrastructure: private subnet に設置した mongoDB server に public subnet からアクセスする

Updated: 2023/3/7

環境:

App server と mongoDB 設置 server は同一VCN内にあり、App server は public subnet, mongoDB は private subnet 内に設置。

OSはともにubuntu@20.04

mongoDB@5.0.3

 

Public Subnet の Security Group

Egress

宛先:Private Subnet のCIDR

 

Priavte subnet instance にSSH接続

踏み台サーバー (public subnet) に鍵ファイルを設置

踏み台サーバーにSSH接続

ssh -i 鍵ファイル  ubuntu@接続したいインスタンスのprivate ip

ref:

docs.oracle.com

qiita.com

 

mongodb-oci.pngの説明が続きます

 

1. Install mongodb

mongoDB の installation は

docs.mongodb.com

 

2. port の開放

ufw の設定

mongoDB server instance で

sudo ufw allow 22 (SSHの許可)

sudo ufw enable >>> yes

 

iptables の設定

mongoDB server instance で

sudo vi  /etc/iptables/rules.v4  下記を加筆

-A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

sudo iptables-restore < /etc/iptables/rules.v4 (設定の反映)

  ここで permisson error で上書きできなかったら 

  sudo su でroot 権限を得てからコマンドを実行

 

servercan.net

 

3. Oracle Cloud Infrastructure の該当 private subnet のセキュリティリストにルールを追加

source >>> VCNのIPv4 CIDR Block

IP Protocol >>> TCP

Source Port Range >>> All

Destination Port Range 27017

 

4. mongoDB の bind ip を編集

mongoDB server instance で

sudo vi /etc/mongod.conf

以下の項目を探して編集

net:

  port: 27017

  bindIp: 127.0.0.1,YOUR_MONGODB_PRIVATE_IP

**** このときbindIpをYOUR_MONGODB_PRIVATE_IPのみではconnection refuesdされる。必ず127.0.0.1(localhost)も紐づける。

docs.mongodb.com

www.digitalocean.com

 

5. 接続の確認

mongodb が正常に起動するか確認

mongoDB server instance で

mongo >>> mongo shell が起動すればOK

mongoDB server instance で

nc -zv YOUR_MONGODB_PRIVATE_IP 27017 >>> Connection to ~ 27017 port [tcp/*] succeeded!

App server instance から

nc -zv YOUR_MONGODB_PRIVATE_IP 27017 >>> Connection to ~ 27017 port [tcp/*] succeeded!

が返答すれば正常に設定完了。

 

trouble shooting

nmap -p T:22,80,443,27017 -Pn YOUR_MONGODB_PRIVATE_IP 解放ポートのスキャン

 

iptables の設定に関して下記mongodB official documentation に従って設定してもコネクションの確立ができなかった。

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27018 -m state --state NEW,ESTABLISHED -j ACCEPT

をすると ip-address の部分がドメイン名で設定されてしまっていたから???(iptables -L で確認時)

docs.mongodb.com

 

ref:

docs.oracle.com