
现在的情况是这样的
我在腾讯云上买了一个 mongodb 数据库 M 和一个云服务器 E,两个组成一个私有网络 ,
在云服务器 E 上使用 mongo 客户端连接,是能够连上 mongodb 数据库的。
现在有个问题,我想在本地访问 mongodb 数据库,也就是外网访问云私有网络中的 mongodb 数据库。
所以我的做法是
service mongo-portmap { id = 100 disable = no type = UNLISTED socket_type = stream protocol = tcp wait = no redirect =10.0.0.17 27017 bind = 0.0.0.0 port = 9001 user = cqh group = cqh flags = NODELAY KEEPALIVE NOLIBWRAP IPv4 log_type = FILE /data/log/xinetd/mongo-portmap.log cps = 100 30 } mongo 云服务器 IP:9001/admin -u 用户名 -p 密码 -verbose MongoDB shell version: 2.4.9 Thu Jun 29 10:26:57.684 versionArrayTest passed connecting to: 服务器 IP:9001/admin Thu Jun 29 10:26:57.707 creating new connection to:服务器 IP:9001 Thu Jun 29 10:26:57.707 BackgroundJob starting: ConnectBG Thu Jun 29 10:26:57.741 connected connection! Thu Jun 29 10:26:57.890 User Assertion: 18:{ ok: 0.0, errmsg: "auth failed", code: 18 } Thu Jun 29 10:26:57.891 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:228 Thu Jun 29 10:26:57.891 User Assertion: 12514:login failed Thu Jun 29 10:26:57.891 freeing 1 uncollected N5mongo20DBClientWithCommandsE objects exception: login failed 当然我能确保,用户名和密码是对的,我是直接复制过来的
,现在的问题是我怎么知道哪里错了呢,我连 xinetd 的日志都没有看到,我是 ubuntu16.04 apt-get install 安装 的 xinetd
结贴,发现方式错了,
起初我以为xinet是rinet的升级版,其实就是用错了软件,使用rinet很简单了
再附上答案吧
在/etc/rinetd.conf 添加 一行就好了
0.0.0.0 9001 mongo服务器ip 27017 然后重启rinetd, sudo service rinetd restart
这样就可以通过外网9001端口访问mongo了,这个9001端口在云服务器的安全组要开户链接
1 tempdban 2017-06-29 11:02:07 +08:00 跑个题,iptables |
2 simple2025 OP @tempdban 好的 我试下 |
3 tempdban 2017-06-29 12:09:31 +08:00 via Android iptables 搞端口映射 要两条规则 SNAT DNAT |
4 simple2025 OP @tempdban 好的我先看看春 iptables 先 |
5 simple2025 OP @tempdban 大神能给个例子吗,弄了一整天了,还是不行 |