我可以通过 SSH 从外部进入虚拟机,但突然停止工作,但在路由器重启后又可以暂时工作。为什么会发生这种情况?

我可以通过 SSH 从外部进入虚拟机,但突然停止工作,但在路由器重启后又可以暂时工作。为什么会发生这种情况?

请温柔一点;我对网络管理完全陌生。

背景: 我在 Synology DS916 上运行 Ubuntu Desktop 20.x VM。一些相关详细信息如下:

  • 虚拟机有一个静态私有 IP 地址,例如 192.168.0.123
  • 路由器具有公共 IP 地址 PUBLIC.IP,它使用 TCP 协议将端口 2200 转发到虚拟机的端口 22,将端口 8800 转发到虚拟机的端口 80。据我所知,不存在冲突/重复的私有 IP 或端口转发冲突,包括任何使用 DHCP 租约的客户端
  • ssh 肯定已在虚拟机上启用,并且sudo systemctl status ssh没有错误消息
  • ufw 未启用

问题:设置虚拟机后,我能够使用 完美地通过 SSH 从外部登录虚拟机。但是,大约一天后,我无法再通过 SSH 登录,尝试时出现一条消息。重新启动虚拟机和虚拟机上的 ssh 服务没有帮助。ssh -p 2200 [email protected]Operation timed out

但是,重启路由器后问题就解决了,我可以再次通过 SSH 登录……但几个小时后,它又停止工作了。以下是其他一些发现:

  • 虽然我无法从外部访问虚拟机,但我仍然能够使用 SSH 从本地网络登录ssh [email protected]
  • 我在路由器的配置页面上找不到任何信息表明它阻止了任何流量(它设置为“允许所有流量”)
  • 路由器是 Netgear V7610
  • 在我能够通过 SSH 进行外部访问的这段时间里,我还在 192.168.0.123:80 上托管了一个网页,我可以使用 PUBLIC.IP:8800 从外部访问该网页。当 SSH 停止工作时,该网页也无法再从外部访问。

我的问题:鉴于我重启路由器后问题暂时自行解决,我怀疑是路由器导致了这个问题?流量在几个小时内都正常,但突然停止,这似乎很奇怪。我完全不知道为什么,如果有人能对这个问题提供任何见解,我将不胜感激。

答案1

我会对上面的帖子发表评论而不是发布解决方案,但没有足够的声誉......

在路由器上,将 MAC 地址保留为您为 VM 静态分配的 IP 地址(您的 VM 软件应该会告诉您 MAC 地址是什么 - 通常是一个虚拟地址)。我推测另一个设备正在通过 DHCP 分配该 IP,因此导致内部 IP 冲突。

解决此问题的另一种方法是分配 DHCP 范围之外的内部 IP,例如...如果您的 DHCP 服务器要使用 192.168.1.100 和 192.168.1.200 之间的地址,则使用 IP 地址 192.168.1.50 并针对该 IP 地址进行端口转发。

相关内容