即使使用单独的 IP,通过 SSH 连接到我的 XCP-ng 服务器也会连接到虚拟机管理程序而不是虚拟机

即使使用单独的 IP,通过 SSH 连接到我的 XCP-ng 服务器也会连接到虚拟机管理程序而不是虚拟机

我有一台旧的 HP ProLiant DL385 G5p 服务器,以前我仅将其用作高级 NAS,但现在我想用它做更多的事情,例如为我的网络设置缓存 DNS 服务器。

我希望能够通过 XCP-ng 管理程序在单独的虚拟机上运行我的文件服务器和 DNS(以及我能想到的任何其他东西)。

在过去的几天里,我开始进行设置,启动并运行了两个 Debian VM,甚至设法使缓存 DNS 正常工作。但是,当我尝试通过 SSH 连接到我想用于文件服务器的 Debian VM 时,问题出现了。我将该 VM 的 IP 放入 PuTTY(我有两个以太网连接到服务器;一个用于文件服务器,一个用于其他所有服务器),它连接到虚拟机管理程序时一切正常。这就是问题所在,我真的不知道这里发生了什么。我如何让 PuTTY 以及我将用于将文件传输到主 PC 的 SFTP 驱动器连接到 VM 而不是虚拟机管理程序。

我的一个朋友提到,我可能需要在虚拟机管理程序上使用端口转发才能通过 SSH 连接到他们,我已经研究过这个问题,但没有发现任何似乎有帮助的东西,尽管我不是 100% 确定什么我在找。

此后,我重新安装了 XCP-ng,并在一个以太网连接上设置了缓存 DNS 和 tor 中继节点,但仍然需要为文件服务器创建另一个 Debian 安装。

提前致谢。

编辑:这是我在虚拟机管理程序上运行时获得的输出route

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 0 0 0 xenbr0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 xenbr0

这是 VM 输出:

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 eth1 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

希望这可以有用。

编辑(1):这是在虚拟机管理程序上运行的输出route -n

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 xenbr0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 xenbr0

答案1

我们必须了解您在虚拟机管理程序中使用的网络模型。

如果虚拟机与虚拟机管理程序在同一个 IP 网络中运行,即虚拟机管理程序不执行 IP 网络路由,则无需进行端口转发。

但这不是最常见的情况。通常,当你设置虚拟机时,你会将它们放在一个单独的网络中,并在虚拟机管理程序上使用某种端口转发,通过最大限度地减少暴露的机器数量来稍微提高安全性。

因此,您很可能需要设置端口转发规则,iptables将虚拟机管理程序 IP 中的端口 2022 映射到 VM 的端口 22。

在以下示例中,假设您的虚拟机管理程序设置了一个子网 192.168.1.0,其网络掩码为 255.255.255.0(24 位,C 类)。此外,假设您的虚拟机的地址为 192.168.1.2。然后,如果您在虚拟机管理程序上正确设置了防火墙,默认情况下拒绝所有连接,则以下两行应该可以执行该任务:

$ iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2022 -j DNAT --to 192.168.1.2:22
$ iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 22 -j ACCEPT

参考:

[1]https://www.systutorials.com/816/port-forwarding-using-iptables/

答案2

好的,经过大量的挖掘和 Marcelo 的帮助(他试图回答我的问题)之后,我发现了无法连接到虚拟机的原因。

剧透:它简单得令人尴尬。

长话短说,我找到了一种方法来检查分配给我试图使用的以太网端口的 IP 地址ip a show eth1,如果知道它的存在会很方便。

事实证明,出于某种原因 - 可能是由于虚拟机管理程序做了一些复杂的事情 -甚至当我将要使用的 IP 设置/etc/network/interfaces为静态时,它决定为其指定一个不同的 IP。一旦我知道它正在使用的 IP,我就可以毫不费力地通过 SSH 进入虚拟机。

相关内容