読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

MongoDBでサーバー外部からアクセスできるようにする

1. bind_ipを変更する

cd /etc/mongod.conf
bind_ip=127.0.0.1

これにコンマ区切りで通信を許可したいIPを追記する

bind_ip=127.0.0.1,64.42.32.12

すべてのIPアドレスからの通信を受けいれる場合(非推奨)は

bind_ip=0.0.0.0

2.設定を反映する。

再起動すると接続が可能になります。

service mongod restart

3.iptablesを変更する。

iptablesでMongoDBが使用するポート(デフォルトでは27017)を開けておきましょう。

iptablesの設定ファイルで以下を追記

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

この設定だとどの場所からも制限なく27017ポートにアクセスできてしまいます。

-sオプションでIPアドレスを制限すると良いでしょう。 この場合の設定は

-A INPUT -s {通信を許可するIPアドレス} -p tcp -m state --state NEW --dport 27017

外部からアクセスしてみましょう。ここでは例としてサーバーのIPを23.41.23.56としてみます。

アクセスの構文は

mongo {MongoDBサーバーのIPアドレス}:{MongoDBのポート番号}/{アクセスしたいテーブル名}

ここではポートをデフォルトの27017番、データベースのテーブル名をtestとしています。セキュリティの観点から27017ポートを試用するのは非推奨なので適宜変更してください。その場合はサーバーのMongoDBインスタンスでの指定を忘れずに行ってください。

mongo  23.41.23.56:27017/test

以下のように表示されたら成功です。

MongoDB shell version: 3.2.1

connecting to: 23.41.23.56:27017/test

SSLを有効化する

デフォルトの設定ではMongoDBをリモートでアクセスした場合、通信内容は平文でやりとりされてしまいます。 このためSSLを有効化すべきでしょう。