- 我有连接到互联网的 WIFI 路由器,我已经从我的 ISP 订购了静态 IP,这样我就可以通过互联网访问我的本地电脑。
- 我的路由器创建网络 192.168.0.0/24
- 我已将一些端口转发到我的本地 PC 服务器 (192.168.0.101)
- 我在本地电脑上安装了虚拟盒
- 有两个节点通过 vagrant 创建和维护,但我们感兴趣的是第一个节点。
- 每个虚拟机都有两个 NIC,第一个是用于 Vagrant 通信的 NAT,第二个是通过本地 PC 接口 enp3s0 的桥接适配器。
- 所有节点都有特定的 MAC 地址,这些地址绑定在路由器 DHCP 设置中,从而为它们提供静态 IP(192.168.0.110 和 192.168.0.111)
- 本地网络内一切正常,节点接收正确的 IP 地址,我可以通过本地网络访问任何节点端口
- 我的节点的 IP 为 192.168.0.110,运行 Apache 服务器,在本地网络内运行良好。
- 我想从外部访问我的这个节点的 apache 服务器,所以我将外部端口 8888 转发到本地端口 80,再转发到 IP 为 192.168.0.110 的机器,如上面的屏幕截图所示。
但问题是我无法从外部访问节点 apache。连接超时或重置。我尝试使用 Wireshark 捕获流量,但看到以下错误。
有可能实现这个吗?或者只有一个解决方案是将端口转发到 192.168.0.101 PC,然后使用带端口转发的 NAT 将数据包转发到节点?
请帮忙解决这个问题。谢谢。
答案1
我知道这不是您想要的答案,但我绞尽脑汁一天多才得出这个结论。它应该可以工作,但实际上却不能。我是一名 Linux 专家,精通网络。其他论坛说你做得对,我同意,应该可以。我自己在两个完全不同的网络上尝试了完全相同的设置,但就是不起作用。
您必须使用 NAT 适配器和桥接适配器来完成此操作。在 NAT 上设置端口转发并将主机 IP 设置为 0.0.0.0。
在您的路由器中将端口转发到主机 IP 地址,而不是客户端 VM 桥接 IP。因此,按照您的示例,将端口 8888 转发到同一端口 8888 上的主机 IP 地址。
然后在 Vagrant 中 NAT 端口转发将如下所示:
config.vm.network "forwarded_port", guest: 80, host_ip: "0.0.0.0", host: 8888