將第二個公共 IP 路由到多個 VM
我和一個朋友租了一台專用伺服器,用KVM和libvirt創建了虛擬機供我們使用。(我們在主機上使用 debian jessie)
我們購買了兩個額外的 IP 地址(我們每個人一個),總共提供了三個 IP 地址,包括原始主機 IP。
主機 IP 為 195.154.XXX.221,網關為 195.154.XXX.1,我們的額外 IP 為 212.129.XXX.XXX,位於具有相同網關的不同子網上。我們的提供商為我們提供了 MAC 地址,這些地址必須在分配了額外 IP 的設備上使用。
我們可以輕鬆地將 IP 分配給單個虛擬機,但是我們不知道如何在一個 IP 上擁有多個 VM。由於所有虛擬機都需要具有相同的 MAC 地址,因此無法使用網橋。
這是很久以前發布的,但我現在已經在 online.net 上多次使用過這個配置,而且我知道其他提供商使用相同的配置,所以我會更新解決方案。
對於這種情況,我將擁有一台主機和兩台客戶機。我將展示 Debian 的網路配置,請根據您的作業系統進行調整。
**** 如果您的其他 IP 在您的網關 IP 子網之外,請在設置網橋後查看文章底部 ****
當您獲得 IP 時,您將生成或獲得與它們一起使用的 MAC 地址,例如
XXX.YYY.ZZZ.101 - 52:54:00:00:00:01
XXX.YYY.ZZZ.102 - 52:54:00:00:00:02
XXX.YYY.ZZZ.103 - 52:54:00:00:00:03
在您的主機上,在您的網路中設置一個網橋,並像這樣分配您的主機 IP。
iface eth0 inet manual auto vmbr0 iface vmbr0 inet static address XXX.YYY.ZZZ.101 netmask 255.255.255.0 gateway XXX.YYY.ZZZ.1 bridge_ports eth0 bridge_stp off bridge_fd 0
現在,當您創建 VM 時,使用網路介面 vmbr0 設置它們。在每個 VM 上為您的網路設置以下配置。
auto eth0 iface eth0 inet static address XXX.YYY.ZZZ.102 netmask 255.255.255.0 gateway XXX.YYY.ZZZ.1
這應該將您的額外 IP 傳遞給您的虛擬機!驚人的!
但是,您可能會遇到問題,即您獲得了帶有子網外部網關的其他 IP,例如
網關IP:XXX.YYY.100.1
附加IP1:XXX.YYY.200.1
如果您在 VM 上發現自己處於這種情況,您將需要手動添加到網關 IP 的路由,並在啟動時將 IP 分配給您的介面。
在 debian 中,您將在 /etc/network/interfaces 中執行以下操作來實現此目的:
auto eth0 iface eth0 inet manual pre-up ip l set dev eth0 up pre-up ip a add XXX.YYY.200.1 dev eth0 pre-up ip r add XXX.YYY.100.1 dev eth0 pre-up ip r add default via XXX.YYY.100.1 post-down ip l set dev eth0 down
希望這很簡潔,可以幫助某人。
您必須在主機上設置 DNAT 以將埠從外部 IP 地址轉發到您設置的專用 VM 網路中的 VM。
您不能在第 3 層共享 IP。