无法远程连接到虚拟机

无法远程连接到虚拟机

我有一台安装了 Ubuntu 服务器的虚拟机。
尝试通过外部网络使用我创建的域名连接到该虚拟机。
到目前为止,我能够通过 LAN 连接到我的虚拟机
我至今所做的事情

  • 我已经在路由器上打开了两个端口
  • 我已经在我的客户虚拟机(ubuntu 服务器)上打开了两个端口
  • 我有一个通过 NAT 从 ISP 获得的动态公共 IP
  • 我正在使用 no-ip 动态 DNS 服务指向我的动态公共 IP

问题:

  • 当我尝试通过域名(公共 IP)连接时,无法访问我的虚拟机
  • 检查端口https://www.portchecktool.com/尽管我在路由器上打开了端口,但仍显示端口未打开的消息

我该怎么做才能将公共 IP 连接到我的虚拟机?

答案1

检查端口https://www.portchecktool.com/尽管我在路由器上打开了端口,但仍显示端口未打开的消息

您的端口似乎“未打开”,因为端口后面没有任何设备可以应答。

原因:
您的列表中缺少转发端口从路由器(公共 IP)到 VM(本地 IP)。——这必须在连接到公共 IP 的路由器上进行配置。


连接到本地服务器:

  1. 外部客户端尝试通过以下方式连接到虚拟机DomainName:Port
  2. NoIP.com 的 DNS 解析将请求更改为Your_public_IP-Address:Port
  3. 您的路由器收到请求Your_public_IP-Address:Port并将其转发至Local_IP:Port(此处的端口号可以更改为其他端口号)
  4. VM 收到请求Local_IP:Port并应答。
  5. 路由器知道该连接,将Local_IP:Port其转换回来Public_IP:Port并将答案发送回原点。
  6. 客户端得到了答案。
    它只能看到,Public_ IP:Port但对虚拟机的内部网络一无所知。

目前您的列表中缺少第 3 号。


更新:ISP 禁止传入连接

根据 ISP 的说法,NAT 阻止了动态公共 IP 地址。[...] 有没有办法绕过 NAT 服务器保护?或者他们无法路由一对多的 NAT

除了租用静态 IP 外,绕过此 ISP 阻止的唯一方法是从网络内部发起连接。

这取决于拦截的复杂程度。一种可能性是它们拦截传入的SYN数据包。此SYN数据包是启动 TCP 连接所需的数据包。
另一个(可能是您的情况)是网络设计。它类似于具有一对多 NAT 的私有网络,因此从外部看,到您的路由器 IP 的路径不是唯一的,无法路由。

对于这两种情况,解决方案都是相同的:

您的连接必须从您的专用网络内部开始,以便路由器了解此连接的路径。这样,数据包SYN也将来自您的本地网络,即允许的方向。

通过这种技术,远程服务连接、消息服务和视频会议软件可以绕过这个问题和防火墙。特洛伊木马和机器人奴隶也可以做到这一点。

由于您可能在网络的另一端没有静态 IP,因此您也必须对另一个方向使用 No-IP.com 服务。

如果您的客户端有同样的ISP阻塞问题,您需要第三台服务器作为“运营商”服务器来建立连接。

使用 VPN 解决方案可以解决您的问题。

  • 您的互联网路由器可能具有这些功能。
  • OpenVPN 之类的软件能够
  • 也可以考虑通过 SSH 来解决。
  • 还有一些外部服务。

但你首先应该考虑一下你认为客户的网络有多安全。你应该始终记住,VPN 连接是一种直接网络连接(通常绕过防火墙),可以双向使用!

因此,首先考虑一下您的网络设计。

答案2

最后是公网 IP 的问题,我无法从动态 IP 转发端口,NAT 服务器似乎不允许这样做,设置静态公网 IP 后问题就解决了

相关内容