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:
1. Install mongodb
mongoDB の installation は
2. port の開放
ufw の設定
mongoDB server instance で
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 権限を得てからコマンドを実行
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)も紐づける。
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 で確認時)
ref: