我在本地 IP 地址为 192.168.1.6 的机器上运行 OS X Mountain Lion(由网络实用程序和 ifconfig 报告),并且在我想连接的端口 8000 上运行本地 (Django) 开发 Web 服务器来自在同一台机器上运行来宾操作系统的虚拟机。
在主机操作系统上(即运行在地址为 192.168.1.6 的机器上的 OS X)我可以通过浏览器导航到 127.0.0.1:8000 连接到我的测试 Web 服务器;或本地主机:8000;但在使用机器的本地 IP 地址时不会。这就是使这更加令人困惑的原因:
- 路由器没有过滤端口;而且,可以肯定的是,我已将其设置为将端口 8000 和 22 显式转发到 192.168.1.6;说到 22 端口,
- 当我启动 SSH 服务时,我可以通过 ssh 192.168.1.6 连接(从命令行)
- 这不是浏览器问题,因为我也无法远程登录到 192.168.1.6 端口 8000(连接被拒绝),而我可以远程登录到 127.0.0.1 端口 8000,我也可以远程登录到 192.168.1.6 端口 22
- 防火墙设置为关闭(如系统偏好设置中所述)但为了更加安全,我还设置了 ipfw 规则以允许所有内容通过
以下是ipfw规则:
00100 allow tcp from any to any dst-port 8000
65535 allow ip from any to any
这是我的测试服务器确实正在监听该端口的额外确认:
netstat -an | grep 8000
tcp4 0 0 127.0.0.1.8000 *.* LISTEN
那么这里发生了什么?不知何故,端口 22 的处理方式与端口 8000 不同,但我能想到的每个地方都找不到我找不到的那些差异。为什么我不能使用它的本地 IP 地址进入这台机器的 8000 端口?