KVM 具有一个主机 IP 和不同的计算机子网

KVM 具有一个主机 IP 和不同的计算机子网

我已经设置了具有正确 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 VM 分配多个 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 VM。现在有什么想法吗?

答案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

编辑:抱歉,我使用了“MASQUERADE”,我只是复制粘贴了我手头的一个脚本。就你的情况而言,你不需要它。但它在不同情况下很有用,例如当你想为你的虚拟机提供私有 IP 时。

相关内容