原配置 bind_ip=127.0.0.1,為開放遠端存取改為:
bind_ip=127.0.0.1,10.20.12.33
重啟 mongod 立即報錯:
ERROR: listen(): bind() failed errno:99 Cannot assign requested address for socket: 10.20.12.33:27017
bind_ip 只能綁定「本機網卡實際擁有」的 IP 位址。 10.20.12.33 屬於其他主機,本機無此網卡 IP,核心 bind() 系統呼叫直接失敗(EADDRNOTAVAIL = 99)。
# /etc/mongod.conf
net:
bindIp: 0.0.0.0 # 監聽所有 IPv4 介面
port: 27017
# 1. 預設拒絕所有來源存取 27017
iptables -I INPUT -p tcp --dport 27017 -j DROP
# 2. 允許特定信任 IP(例如 10.20.12.33)
iptables -I INPUT -s 10.20.12.33 -p tcp --dport 27017 -j ACCEPT
# 3. 允許本機回環
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 27017 -j ACCEPT
# 4. 持久化(CentOS 7)
service iptables save
# 或 Ubuntu
iptables-save > /etc/iptables/rules.v4
bind_ip 是「綁定本地介面」,非「存取控制清單(ACL)」。bind_ip=0.0.0.0 + Security Group / 防火牆 只放行應用伺服器 IP 段。# 本機
mongo --host 127.0.0.1 --port 27017
# 遠端信任主機
mongo --host 10.20.12.33 --port 27017
# 非信任主機(應連線超時或被拒絕)
mongo --host 10.20.12.99 --port 27017
bindIp 支援主機名與逗號分隔多本機 IP但仍限於本機介面 IP,無法綁定遠端 IP,核心邏輯不變。