如何使用 ngrok 隧道将流量转发到本地托管的 VM 机器的端口?
Posted
技术标签:
【中文标题】如何使用 ngrok 隧道将流量转发到本地托管的 VM 机器的端口?【英文标题】:How to use ngrok to tunnel a port that forwards the traffic to a VM machine hosted locally? 【发布时间】:2019-03-17 08:15:23 【问题描述】:我可以通过 ip 12.51.50.142
访问我的 VM 的服务器,但我只能 ngrok localhost
端口。有没有办法可以使用 ngrok 并将流量重定向到我的 VM 的服务器?我在 osx 上,但我认为执行此操作的工具对于 mac 和 linux 是相同的。
【问题讨论】:
【参考方案1】:我正在使用 VMWare 运行虚拟机,在所述虚拟机中运行 Ubuntu(在 win 10 下)。该虚拟机在本地 IP 192.168.45.128 上运行,并在端口 80 上运行一个网络服务器,这显然无法访问互联网。我按如下方式使用 ngrok(来自 win 10,而不是来自 VM 内部)来获取一个地址,该地址允许我从 Internet 访问此 Web 服务器:ngrok http 192.168.45.128:80
您可能必须先配置 VMware 的网络设置 - 应该有一个选项来使用本地 IP(如我的,如上所述)或 NAT(实际上对我来说不能正常工作)。
你可能想试试:ngrok http 12.51.50.142:80
希望对您有所帮助。
【讨论】:
【参考方案2】:我相信名为port forwarding
的技术是您正在寻找的东西。
对于 Web 项目,您必须转发端口 80 和 443(从您的 ngrok 发布的机器到您的 vm)。
这是 ngrok 自己不会做的事情,因为他无法单独访问您的虚拟机。
问题是设置因使用的平台而异,所以没有具体细节,我不能提出任何具体的解决方案。
对于 Linux,这通常是通过 iptables
实现的,但我看到了很多其他解决方案。
在 OSX 上,以下问题应该有效: https://apple.stackexchange.com/questions/230300/what-is-the-modern-way-to-do-port-forwarding-on-el-capitan-forward-port-80-to
【讨论】:
它不是一个简单的端口转发,不是吗? b/c 我需要将端口 80 转发到 12.51.50.142:8080,所以它几乎是一个重定向。 它仍然是端口转发 ;) 默认情况下,最简单的端口当然是相同的,所以 80 -> 80,但是有端口转发变化(我相信这称为端口重定向),例如 80 - > 8080,但您仍将流量从一个端口转发到另一个端口,因此一般机制保持不变。 请在问题中添加操作系统(如果是 linux,则添加发行版),我会为您找到一些东西以上是关于如何使用 ngrok 隧道将流量转发到本地托管的 VM 机器的端口?的主要内容,如果未能解决你的问题,请参考以下文章