Linux

如何使用 KVM/QEMU 在 Debian 主機和 Windows Server 來賓中實現 Host-and-Internet-Only 網路?

  • April 12, 2019

我有一個執行 Debian 9 (Stretch) 的物理/專用伺服器。伺服器有足夠的資源來支持自己的負載和一些虛擬機的負載(在這個問題中:Windows Server 2016 Standard edition)。

為了簡化這個問題,我將使用Debian 主機來指代執行 Debian 9 (Stretch) 的物理/專用伺服器,並使用 Windows VM來指​​代執行在Debian 主機

Debian 主機使用 KVM/QEMU/virsh 來提供虛擬化能力及其配置。Debian 主機目前沒有配置任何虛擬機(或網路)。Debian 主機只有一個映射到網路介面的物理網卡 (NIC) eth0。Debian 主機本身提供了 Debian 主機在託管其他虛擬機時也應該提供的各種服務。

Debian 主機應該(這個問題的範圍)託管一個 Windows 虛擬機。Debian 主機及其服務應該能夠通過私有 IPv4 網路/地址訪問 Windows VM。Windows VM 應該能夠通過相同的 IPv4 網路(Debian 主機的私有 IPv4 地址)訪問 Debian 主機。不應通過公共 IPv4 或 IPv6 網路/地址訪問Windows VM 。Windows VM 應該能夠訪問 Internet(傳出連接)。Windows VM 不應分配公共 IPv4 或 IPv6 網路/地址。Debian 主機上的代理應代理特定傳入連接到 Windows VM 的私有 IPv4 地址。

Debian 主機應該進一步(與這個問題相關)能夠託管更多的虛擬機(其他 Debian 實例)。Debian 主機上的所有虛擬機都應該相互隔離。意思是 Debian 主機可以到達所有的虛擬機,所有的虛擬機都可以到達 Debian 主機和 Internet,但是虛擬機之間不能(直接)互相訪問。

我發現了一些關於 VM 網路的概念。但是,我找不到符合我需求的解決方案。我能找到的最接近(但不匹配)的概念是:橋接網路。有了這個,Windows VM 將連接到“網際網路”。這是不希望的。其他概念(NAT,僅主機)要麼不允許主機 -> 訪客訪客 -> 網際網路訪問。

我的問題是:我計劃的網路設計是否可以使用一個虛擬 NIC?如何在 Debian 主機和 Windows VM 上使用 KVM/QEMU 實現這樣的網路設計?

由於託管服務提供商方面的網路限制,我無法在虛擬機內使用公共 IP 地址(IP 到 MAC 過濾器)。另外:我不希望虛擬機可以直接從 Internet 訪問。

KVM (dnsmasq) 提供的標準“私有”網路堆棧允許您執行此操作,預設為 192.168.122.0/24 的私有子網。您的所有 VM 流量都被 NAT 出主機,並且在外部看起來就像是您的主機的公共 IP 地址(就像路由器一樣)。如果使用 virt-manager,您只需轉到主機詳細資訊並配置更多專用網路,然後將新 VM 的網路介面附加到您為其定義的子網。

引用自:https://serverfault.com/questions/962804