我有一台服务器,它分配了多个 IP。我想将其设置为 Xen 虚拟机管理程序,以便每个 VM 都有自己的专用 IP。我现在设置多个 IP 的方式是:
#IP addresses are examples, actual server has public IPs
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
auto eth0:0
iface eth0:0 inet static
address 192.168.1.11
netmask 255.255.255.0
auto eth0:1
iface eth0:1 inet static
address 192.168.1.12
netmask 255.255.255.0
我尝试了多种桥接方法,但说实话,我有点不抱希望自己找到解决方案了。我怎样才能让 Xen 为每个域使用一个特定的 IP?
答案1
每个虚拟机的 IP 地址都应在虚拟机本身中配置,而不是在主机中配置。
它有助于描绘每个虚拟机和主机及其自己的接口,但是只有主机才有从中出来的物理电缆,因此客户虚拟机接口需要桥接到主机接口。
您可以在 /etc/networks/interfaces 文件中创建网桥,如下所示:
auto lo br0 eth0
iface lo inet loopback
iface br0 inet static
bridge_ports eth0
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
这将在网络堆栈启动时(例如在引导时)创建一个新的网桥,并将您的接口添加到其中,并为网桥提供主机的 IP 地址。您可以在此处看到网桥:
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.60a4ecf28d84 no eth0
您可以将 br0 接口视为其包含的 eth0 接口。
然后在客户机配置文件中,你会看到如下一行:
vif = ['bridge=br0, mac=00:16:3E:12:16:19']
这就是说,“给这个虚拟机一个虚拟接口并将其添加到 br0 桥,并给它以下 mac”。
请注意,这里不需要设置 MAC 地址,但我更喜欢这样,这样我就可以使用 DHCP 为客户机分配静态 IP 地址 - 这样我就不需要对主机(和 DHCP 服务器,在我的情况下是 VM 本身)之外的任何 IP 地址进行硬编码。
然后在客户机中,你只需像配置任何其他 Linux 机器一样进行配置:
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
请注意,这是在客人机器网络配置。
启动虚拟机时,您会看到网桥现在有两个接口:
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.60a4ecf28d84 no eth0
vif1.0
vif1.0 是客户端的虚拟接口。现在,客户端将能够 ping 网关并进行通信,就像直接通过一根电缆连接到您的网络一样。