我想对 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
为了实现这一目标:
- 主机系统需要配置您的“真实 IP”
- 您的客户操作系统需要配置 NAT 网络
- 您希望从客户机获得的服务需要由主机进行端口转发。
这是我能想到的唯一可以实现你想要的方法,你不能让两台物理或虚拟机器共享同一个 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。