我正在考虑订购一台功能强大的服务器机器用于虚拟化。我计划运行带有 KVM+QEMU 的 Debian 进行虚拟化,并使用硬件 RAID6 来存储虚拟机。我还希望能够使用相同的 IP 路由到不同的虚拟机,具体取决于域或端口等内容,因为我的主机托管提供商会针对我需要的每个额外 IP 收取额外费用。
实现这一目标的最佳做法是什么?或者您是否有一些针对此类设置的一般技巧和窍门?我认为我需要某种防火墙来进行路由,但我应该创建一个连接到物理接口的桥接设备来放置虚拟机,还是应该坚持使用自动创建的虚拟桥接?
任何帮助都将不胜感激!
如果这个问题太笼统,我深感抱歉,但我不知道在哪里可以发布它。
答案1
将您的客户网络接口与内部桥接中的私有 IP 保持在一起,iptables
在主机上配置将其外部接口上的端口 NAT 为内部桥接中的 IP 和端口。
例如,假设您的主机的互联网 IP 是1.2.3.4
。设置一个网桥(我们称之为virbr0
),并在此网桥中为主机提供一个 IP,如192.168.0.1/24
。当您创建新的虚拟客户机时,将其网络接口桥接到virbr0
,并为客户机操作系统提供一个在 内的 IP 地址192.168.0.0/24
。在主机上,创建一个 NAT,将类似 的内容定向到1.2.3.4:10022
。192.168.0.10:22
要从外部 ssh 到该客户机,您需要 ssh 到主机上的外部端口。
您还需要一个传出 NAT 规则,以便访客将192.168.0.1
其用作其默认网关,并且主机接受来自访客的任何请求并将它们通过 NAT 转出其外部接口。
传入 NAT(称为 DNAT)涵盖以下内容:
传出 NAT(称为 MASQUERADE)涵盖以下内容:
答案2
我认为避免使用桥接并使用带路由的仅主机网络可以使配置更容易理解。
如果客户机是 Linux 系统,那么我建议为它们配置一个串行控制台(可以通过 访问virsh console $domain
)。
答案3
如果你打算使用 libvirt 来管理 kvm,请阅读 Red Hat 的虚拟化管理指南(RHEL 6)或虚拟化部署和管理指南(RHEL 7)。即使在 Debian 上它也会很有用。