web-dev-qa-db-ja.com

Mongodbがすべてのインターフェースをリッスンしていない

インフラストラクチャ:同じLAN上のDMZ=に3つの仮想マシンIPがあります。それらの1つがmongodbを実行しています。OS:RHEL

Mongod.conf:bindIPオプションをコメントアウトしました

しかし、それでもmongodbはLAN上の他のサーバーからの接続を要求していません。 Telnetが他の2つのサーバーから失敗する

netstatの出力は

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      24251/./mongod
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1508/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1621/master
tcp6       0      0 :::22                   :::*                    LISTEN      1508/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1621/master

27017ポートの外部アドレスも "::: *"のようになるはずだと思います。ここでは問題を捕捉できません。助けてください!

1
Tarik Setia

ファイアウォールを実行している場合は、ポート27017、MongoDBのデフォルトポートでの接続を許可します。

実行しているRHELのバージョンがわからないため、以下のコマンドが変更される可能性があります。

1。すべての接続がポート27017でMongoDBに接続できます

iptables -A INPUT -p tcp --dport 27017 -j ACCEPT

2。特定のIPのみがポート27017でMongoDBに接続できます

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


For Eg:

    iptables -A INPUT -s 192.168.6.100 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -d 192.168.6.101 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

また、個人的にはコメントバインドオプションは良い考えではないと思います。

代わりに、以下を/etc/Mongod.confで使用できます。

# Listen to local and LAN interfaces.
bind_ip = 127.0.0.1,x.x.x.x, x.x.x.x

その後

service mongod restart
3
Sachin Singh

上記の回答とともに@Sachin Singh

/ etc/hostsファイルを確認してIPアドレスとホスト名を追加してください。実行しているRHELのバージョンがわからないため、以下のコマンドが変更される可能性があります。

例:

 192.168.6.100        hostname.domainname.com       hostname 
0
Priyanka Kariya