我正在尝试绑定到我的公共 IP。但是,当编辑内容时,nano /etc/mongod.conf
它不起作用。现在我认为这可能是问题所在。运行ifconfig
仅显示我的私有 IP 地址:
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255
现在,如果我想从我的网络外部访问这个数据库,我肯定不想绑定到这个私有 IP 地址,那么我该如何使用我的公共 IP 地址呢?
# network interfaces net: port: 27017 bindIp: 127.0.0.1,public_ip_here
当尝试使用此配置重新启动服务时,我收到以下错误消息:
● mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-06-15 19:04:21 EDT; 1s ago
Docs: https://docs.mongodb.org/manual
Process: 4616 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=48)
Main PID: 4616 (code=exited, status=48)
Jun 15 19:04:21 server systemd[1]: Started High-performance, schema-free document-oriented database.
Jun 15 19:04:21 server systemd[1]: mongod.service: Main process exited, code=exited, status=48/n/a
Jun 15 19:04:21 server systemd[1]: mongod.service: Failed with result 'exit-code'.
我认为问题在于执行命令时我的公共 IP 地址未显示ifconfig
。但是,我并不完全确定。我使用我的一台装有 ubuntu 的旧台式机来托管 mongodb 实例,此外还连接了有线互联网。提前感谢所有回复的人。
答案1
通常,当您想要连接到单个公共 IP(家庭或小型办公室 DSL 或电缆连接等)后面的服务时,您需要做的是将该服务绑定到机器的私有 IP,然后配置路由器以将适当的端口转发到正确的内部地址和端口(它们可以不同)
为了提高安全性,可以使用所谓的 DMZ。这实际上会将内部网络的另一个子网分离出来,路由器可以转发该子网,其余网络可以访问该子网,但该子网中的机器/服务无法启动到内部 LAN 的连接。这样,如果某项服务遭到黑客攻击,攻击者就无法将其用作通往您工作站的桥梁等。
不幸的是,“如何做到这一点”取决于你拥有的路由器、它运行的软件/固件版本等。使用你最喜欢的搜索引擎并使用“端口转发”或“DMZ”等术语 - “RotoRouterv3.14 端口转发”