Networking

將第二個公共 IP 路由到多個 VM

  • October 4, 2016

我和一個朋友租了一台專用伺服器,用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。

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