物理到虚拟 (kvm) 迁移,保存客户机 IP 并在主机上重复使用

物理到虚拟 (kvm) 迁移,保存客户机 IP 并在主机上重复使用

我想对 BSD 服务器进行物理到虚拟的迁移,并保存 IP 地址。目标虚拟主机是 Linux/KVM。

当前设置:我有一台 BSD 服务器,但硬件出现故障。我刚刚用一台新服务器替换了它,而且它的硬件太新,无法直接供 BSD 使用。

因此,我在新服务器上安装了 Linux,并想使用 KVM 将 BSD 移入虚拟化。

我有旧服务器的完整硬盘转储。

问题是:我只有单一真实 IP,我应该在客户机和主机中都使用这个 IP。

我想在客户机上使用 IP,因为它是一个邮件服务器,并且我希望在邮件头中使用我的真实 IP。

使用主机上的IP是因为我没有其他IP。

机器的TCP服务包括:

  • 主机上的非标准端口上的 sshd;
  • 来宾上的 sshd
  • 客人的 smtp,客人的 POP3/IMAP。
  • 必须从访客启用传出 SMTP、HTTP、FTP 请求。

端口 22、25、53、110 将使用 iptables 从主机转发到客户机。如果可能的话,我还会将客户机的 DNS 服务器转发到 realIP。

我应该如何配置 KVM 网络和 libvirt 以在客户机和主机中使用相同的 IP?

答案1

呃...这绝对不是建议的做法,但应该采取以下做法:

  • 在主机中打开 IP 转发
  • 为主机分配真实 IP
  • 为客户机上的环回接口分配真实 IP
  • 在主机和客户机之间的私有子网上分配 IP
  • 在主机上设置 NAT,将传入连接 DNAT 到客户的私有 IP
  • 在主机上设置 NAT,将来自客户机私有 IP 的传出连接通过 SNAT 转换为真实 IP
  • 在客户机上设置 NAT,将传入连接 DNAT 到真实 IP
  • 在客户机上设置 NAT,将传出连接通过 SNAT 转移到客户的私有 IP

虽然这很复杂,也很丑陋,但应该可以行得通。这样,真实 IP 就可以显示在邮件标题等中,而访客会认为它是真实 IP 的所有者。

答案2

为了实现这一目标:

  1. 主机系统需要配置您的“真实 IP”
  2. 您的客户操作系统需要配置 NAT 网络
  3. 您希望从客户机获得的服务需要由主机进行端口转发。

这是我能想到的唯一可以实现你想要的方法,你不能让两台物理或虚拟机器共享同一个 IP 地址。

答案3

您无需为主机配置真实 IP,而为客户机配置私有 IP,您可以反过来做:为客户机配置真实 IP(因为它运行服务),并在主机和客户机之间设置私有网络。主机不需要将(真实)IP 地址绑定到将真实网络接口连接到客户机的桥接接口。要访问主机,您需要先通过客户机。

此解决方案的优点在于您不需要 NAT,因此您的客户机可以毫无问题地运行任何协议,而无需在主机中配置 NAT 规则。另一点是您的主机将更加安全,因为它无法直接从互联网访问。

缺点是,如果您的客户端无法工作,您就无法使用它连接到主机来解决问题。如果您没有其他方式访问机器(例如,如果机器在托管提供商处),这可能会成为一个问题。在这种情况下,使用 IP-KVM 在紧急情况下访问主机可能是远程访问的解决方案。

答案4

您是否需要 IP 地址上的主机仅用于管理目的?

您可以考虑类似这样的设置:

  • 将真实 IP 附加到 BSD VM 中的虚拟 NIC
  • 向 BSD VM 添加第二个虚拟 NIC,为此创建一个(私有 IP)子网,并为 VNIC 分配此范围内的静态 IP
  • 将主机网卡连接到不同 IP 上的私有子网

根据您的虚拟化平台,这可能涉及不同数量的工作。当我无法访问硬件防火墙时(将虚拟机放在公共 IP 上,ESXi 主机只能通过 vswitch 网络访问),我做过类似的事情来对暴露在公共 IP 上的 ESXi 主机进行防火墙保护。

非常重要 - 使用此设置,您需要通过 BSD VM 进行连接,以便对主机本身进行远程维护。如果主机出现问题并且您失去连接,则需要 KVM 访问才能解决问题。这也不是一个好的解决方案。

[编辑] 我刚刚意识到 snap 在我上面发布了同样的答案 - 哎呀,我在回复之前没有读完所有的帖子...我会给他的帖子+1。

相关内容