我在 Ubuntu 14.04 服务器上使用 xen 4.4.1,我的 DomU 也运行 Ubuntu 14.04 Server。我之前在桥接模式下运行过这个 DomU,没有问题。但是我想切换到路由设置。
我将 DomU 配置 vif 更改为:
vif=['10.0.1.2,script=vif-route']
并在 /etc/xen/xend-config.sxp 中:
#(vif-script vif-bridge)
#(network-script network-bridge
(network-script network-route)
(vif-script vif-route)
但是,当我尝试启动虚拟机时,它会抛出此错误:
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: /etc/xen/scripts/vif-bridge online [-1] exited with error status 1
libxl: error: libxl_device.c:1085:device_hotplug_child_death_cb: script: Could not find bridge device xenbr0
libxl: error: libxl_create.c:1226:domcreate_attach_vtpms: unable to add nic devices
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: /etc/xen/scripts/vif-bridge offline [-1] exited with error status 1
libxl: error: libxl_device.c:1085:device_hotplug_child_death_cb: script: Could not find bridge device xenbr0
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: /etc/xen/scripts/vif-bridge remove [-1] exited with error status 1
libxl: error: libxl_device.c:1085:device_hotplug_child_death_cb: script: Could not find bridge device xenbr0
为什么即使我在 xend-config.sxp 中注释掉了 vif-bridge 脚本,它仍然会尝试运行它?
答案1
在 debian dom0(wheezy->jessie)上从 xen 4.1 更新到 4.4 后,我们遇到了完全相同的问题。
解决方案是更改 xl.conf:
# default vif script to use if none is specified in the guest config
vif.default.script="vif-route"
答案2
创建带有 ip 的 xenbr0 接口,使用 eth0 来桥接=xenbr0。
配置 vif.default.gatewaydev@xl.conf
答案3
当我将 SLES 10.x 客户虚拟机移至 SLES 12、SLES 12.3 附带的更高版本的 XEN 虚拟机管理程序时,我仍然遇到类似的问题。vif-桥接下面的破解包括搜索br#桥的子目录:
zeus:/etc/xen/scripts # diff -u vif-bridge vif-bridge-hack
--- vif-bridge 2017-09-08 05:26:04.000000000 -0400
+++ vif-bridge-hack 2017-09-28 21:36:32.461458890 -0400
@@ -70,6 +70,9 @@
if [ -e "/sys/class/net/eth${bridge#xenbr}/bridge" ]
then
bridge="eth${bridge#xenbr}"
+ elif [ -e "/sys/class/net/br${bridge#xenbr}/bridge" ]
+ then
+ bridge="br${bridge#xenbr}"
fi
fi
fi
zeus:/etc/xen/scripts #
答案4
扩展 felipe 的回答:
警告!当您创建新的 xenbr0 接口时,您将失去与主机的网络连接,因此您需要有(物理或虚拟)终端连接可用。
使用此命令查看网桥状态。在我的计算机上,它是空的:
brctl show
创建桥梁
brctl addbr xenbr0
将物理接口添加到网桥。注意!现在您将失去互联网连接,除非您有多个网卡:
查看接口
ip link
或者
ifconfig
向网桥添加接口(在我的计算机上,接口名称是 enp5s3,也可以是 eth0)
brctl addif xenbr0 enp5s3
在此之后,我认为虚拟机将获得 IP。但是如果您还需要恢复与主机的网络连接,则可以像这样为桥接接口分配一个 IP:
启动接口并分配 IP
ifconfig xenbr0 10.1.2.3/24 启动
最后你应该通过编辑来保留设置
在较新的机器上
/etc/netplan/01-netcfg.yaml
在较旧的机器上
/etc/network/interfaces