我知道网上有各种文档提供了执行此操作的步骤,但我无法解决这个问题——我有一个angularjs在本地主机上运行的项目(操作系统是 ubuntu 14.04),我想通过外部 ip 访问它。
以下是项目配置文件的片段 -
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
//hostname: 'localhost'
...
...
}
我已更改localhost
为0.0.0.0
现在允许我通过内部 IP 访问应用程序 -
192.168.X.X:9000
问题是我无法使用外部 IP 访问。我有一个路由器,并在路由器配置中设置了端口转发,我希望这可以解决问题,但事实并非如此。
我还尝试在 /etc/hosts 中添加以下行 -
<my external ip> localhost
<my external ip> 127.0.0.1
这没什么区别。我不知道哪里出了问题,即使花了几天时间寻找解决方案也找不到答案。
更新--
这似乎是互联网连接的限制,不允许进行这样的端口转发。虽然我可以成功进行 ssh 端口转发。
我在不同的网络上尝试了同样的操作,并能够通过外部 IP 访问本地主机。
答案1
许多路由器不会接受/转发从外部发回的数据包(即那些发往其自己的公共 IP 的数据包)。我以前也遇到过这样的问题。
此外,据我所知,您不能使用 hosts 文件将流量从一个 IP 重定向到另一个 IP。这实际上只是为了定义您的 PC 不会向名称服务器请求获取其 IP 的主机名。
尝试以下服务网络嗅探器访问您的服务器或只是一些端口扫描服务。它能做到吗?
编辑:如果您确实必须使用动态/公共主机名,例如测试某些服务器,请将其添加到本地主机文件中,但让它指向 LAN IP 而不是公共/外部 WAN IP。