在 Mac Mini 上打开端口,在本地工作,而不是在 LAN 上

在 Mac Mini 上打开端口,在本地工作,而不是在 LAN 上

我的 Mac mini 在端口 8000 上运行着一个 nodejs 服务器。在 Mac 上,我可以通过 127.0.0.1:8000/something 访问它。我得到了一个“hello world”类型的响应。

在同一个网络上,从另一台机器,我无法在 Mac 上访问此服务器。我遇到了超时问题。我一直在绞尽脑汁试图了解原因。

  1. 我在本地网络上检查机器。例如 192.168.1.7:8000应该从另一台机器解析到该机器和端口。超时。

  2. 我有一个 NAS 管理页面,位于 192.168.1.200:5000(抱歉之前的拼写错误),它解析得很好。端口 5000 从路由器转发到 NAS。

  3. 我为 nodejs 设置了防火墙规则(在路由器上),设置方式与为 NAS 设置的方式完全相同。NAS 可通过路由器规则和 no-ip 动态 DNS 映射在我的网络外部使用。nodejs 服务器以相同的方式转发。没有成功,超时。

有什么想法吗?我的 Mac 上没有防火墙(我可以检测到)。我可以看到服务器在 Mac 上监听 8000。它在本地工作。

我在这里做错了什么?

更新问题的答案。

谢谢大家的反馈,以下是你们问题的答案。

来自 netstat 的输出。

netstat -anp tcp | grep 8000

tcp4       0      0  *.8000                 *.*                    LISTEN

我没有运行 mac 防火墙(至少在系统设置中没有)。我看过一些关于 IPFW 的帖子,但我不知道那是什么。

在 Mac 上,当我点击 192.168.1.7:8000 时,我得到:

Hello World

我对 nodejs 的理解是,我只是将它“绑定”到一个端口。以下是代码,直接取自他们的示例。

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

答案1

我也有类似的问题。

我发现通过更改防火墙选项(甚至完全禁用防火墙)来启用 MAC OS X 外部的节点访问是没有帮助的,至少在我的情况下不起作用。

我的解决方案是更改与node.js服务器绑定的主机名:

  • 使用“0.0.0.0”作为主机名以允许从外部访问
  • 仅使用本地访问的“localhost”

我猜测“localhost”以某种方式用作默认值,希望这个提示对其他人有所帮助。

干杯

答案2

我的机器目前配置如下:

  • 防火墙已关闭-我位于锁定的硬件路由器后面。
  • 系统偏好设置中的所有共享均已关闭。
  • 我有一个静态 IP 地址(网络首选项:“使用 DHCP 和手动地址”)。
  • 我的服务器仍然一样,它在端口 8000 上运行。

现在,我能够使用我的无 IP 域从 LAN 内部和外部访问它。我个人认为这是静态寻址问题 - 虽然我并不是 100% 确定。

答案3

我仍然不确定是否有合适的解决方案,但为了使其工作,我只是这样做了,

  1. 启动 Mac OSX 默认 Web 服务器,然后在 index.html 中,
  2. 在其中添加一个重定向代码,它将指向您的节点 js 端口,您也可以从外部 LAN 系统访问该端口。

实际上,当您托管它时,情况并非如此,因此您可以采用上述方法,并且仍然可以不受阻碍地进行操作,

相关内容