具有一個主機 IP 和不同機器子網路的 KVM

具有一個主機 IP 和不同機器子網路的 KVM

我已經使用正確的 IP 配置設定了 KVM 主機,但我的主機讓我建立 DHCP 並使用它將 IP 指派給電腦。我想看看是否有更簡單的方法(或更好的方法)。當我第一次著手解決這個問題時,我沒有找到任何能指引我正確方向的東西。我剛剛安裝了 Debian 6.0 x64,所以我沒有安裝任何東西。我已登錄,查詢以下資訊並從我的主機設定一更改密碼。

我有一個 Debian 6.0 x64 系統,具有以下初始網路配置(用 255 代替我真正的第一個八度音程):

# tail /etc/network/interfaces
auto  eth0
iface eth0 inet static
address   255.9.24.80
broadcast 255.9.24.95
netmask   255.255.255.224
gateway   255.9.24.65

# default route to access subnet
up route add -net 255.9.24.64 netmask 255.255.255.224 gw 255.9.24.65 eth0

我希望虛擬機器從我的主機使用一個 /29 子網路:

IP:255.46.187.152 /29
遮罩:255.255.255.248
廣播:255.46.187.159

可用的 IP 位址:255.46.187.153 至 255.46.187.158

我喜歡 Cloudmin 的介面,所以如果可以的話我想嘗試使用它來管理我的訪客。

所以,我的問題是:

如何在主機系統上進行最佳設置,以便我可以在訪客上使用額外的子網路 IP 並透過網路存取它們?

我還需要託管一台 DNS 伺服器,這意味著其中一個虛擬機器必須分配兩個 IP,並且可以從外部世界存取。我該如何使用 Cloudmin 做到這一點?我在這裡有一個關於這個的問題:為一台 KVM 虛擬機器指派多個 IP 位址但我只是重新格式化了整個伺服器,並試圖找出更好的方法來做到這一點。

機器資訊:

# ip route show
255.9.24.64/27 via 255.9.24.65 dev eth0
255.9.24.64/27 dev eth0  proto kernel  scope link  src 255.9.24.80
default via 255.9.24.65 dev eth0

brctl is empty

# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c8:60:00:54:b5:d8 brd ff:ff:ff:ff:ff:ff
inet 255.9.24.80/27 brd 255.9.24.95 scope global eth0
inet6 fe80::ca60:ff:fe54:b5d8/64 scope link
  valid_lft forever preferred_lft forever

感謝您為我提供的任何幫助。

編輯:我已經安裝了 kvm 和 cloudmin:

aptitude install qemu-kvm libvirt-bin
wget http://cloudmin.virtualmin.com/gpl/scripts/cloudmin-kvm-debian-install.sh
./cloudmin-kvm-debian-install.sh

重新啟動,現在我的網路配置如下所示:

# device: eth0
iface eth0 inet manual

# default route to access subnet


iface br0 inet static
    address 255.9.24.80
    netmask 255.255.255.224
    broadcast 255.9.24.95
    network 255.9.24.64
    bridge_ports eth0
    gateway 255.9.24.65

我在 Cloudmin 中將起始 IP 設定為 255.46.187.153,將結束 IP 設定為 255.46.187.158。 CIDR 為 29,閘道為 255.46.187.152。

我已經安裝了帶有 ubuntuserver 12.04 x64 的來賓,它能夠在安裝過程中獲取和檢索互聯網資源,但現在無法訪問任何內容,也無法從任何內容訪問它。其網路配置為:

iface eth0 inet static
 address 255.46.187.153
 netmask 255.255.255.224
 broadcast 255.46.187.159
 gateway 255.46.187.152
 dns-nameservers <host provided nameservers>

且無法透過 DNS 或直接 IP ping google.com,我無法從外部或主機 ping 虛擬機器。現在有什麼想法嗎?

答案1

來賓上設定的網關不是主機的IP,我會在來賓上嘗試以下設定:

auto eth0
iface eth0 inet static
       address 255.46.187.153
       netmask 255.255.255.255
       gateway 255.9.24.80
       pointopoint 255.9.24.80
       dns-nameservers <host provided nameservers>
       up ip addr add 255.46.187.154 dev eth0

同樣在主機上,確保將路由新增到來賓,將其新增至 /etc/network/interfaces

iface eth0 inet static
       (...)
       up route add -host 255.46.187.153 dev br0
       up route add -host 255.46.187.154 dev br0

這樣您就可以為訪客使用網路和廣播位址(255.46.187.152 和 255.46.187.159)

一些資源,抱歉不是英文的:

http://www.ingent.net/ca/2012/03/server-virtualization-kvm-hetzner/(加泰隆尼亞語)

http://wiki.hetzner.de/index.php/KVM_mit_Nutzung_aller_IPs_-_the_easy_way(德文)

答案2

如果虛擬機器與主機不在同一網路上,您可能需要將主機設定為虛擬機器的路由器:

iptables --table nat --append POSTROUTING --out-interface br0 -j MASQUERADE
iptables --append FORWARD --in-interface br0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

編輯:對“假面舞會”感到抱歉,我只是複製並貼上了我周圍的腳本。就您而言,您不需要它。但它在不同的情況下可能很有用,例如當您想要為虛擬機器提供私人 IP 時。

相關內容