1

我正在编写一个 GUI 工具来测试一些 Meshnetworkingthings。

为此,我使用 Virtualbox、VDE2 和 Wirefilter。我的尝试是使用 Virtualbox 生成n 个openwrt 实例,在抽头模式下将它们与 vde_switch 连接,并使用wirefilter 模拟pocketloss 等。

这就是我试图做到这一点:

sudo ip tuntap add tap<i> mode tap
sudo ifconfig tap<i> <some ip> up
vde_switch -d -x -s /tmp/tap<i>/ -m 666
VBoxManage clonevm openwrt --name tap<i> --register
VBoxManage modifyvm tap<i> --nic1 generic --nicgenericdrv1 VDE --nicproperty1 network=/tmp/tap<i>/ --macaddress1 <mac>
VBoxManage startvm tap<i>

但是当我尝试运行 openwork 实例时出现以下错误:

Failed to open a session for the virtual machine tap.

VDEplug library: not found (VERR_PDM_HIF_OPEN_FAILED).

Failed to attach the network LUN (VERR_PDM_HIF_OPEN_FAILED).

Result Code: NS_ERROR_FAILURE (0x80004005)
Component: Console
Interface: IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}

开发环境:我使用的是 MacBook Pro,Ubuntu 14.04 在 Virtualbox 中运行。在这个 Ubuntu 中,我正在开发我的工具。这意味着我在 Virtualbox 中运行 Virtualbox。

4

1 回答 1

1

我解决了。首先要做什么:

将 libvdeplug.so.2 复制到 libvdeplug.so

cp /usr/lib/libvdeplug.so.2 /usr/lib/libvdeplug.so

然后我在 vde_switch 调用中忘记了一些东西:

vde_switch -d -x -s /tmp/tap<i>/ -m 666

必须

vde_switch -d -x -s /tmp/tap<i>/ -m 666 --tap tap<i>
于 2015-03-19T14:44:19.450 回答