qemu 与 tun 虚拟网络问题

ndp*_*ndp 5 openwrt linux-networking qemu

我正在尝试使用 open-wrt ​​qemu 和 vde2 设置虚拟网络环境启动两个 qemu 实例并将它们连接在一起的脚本如下

IMAGE=/home/northpole/openwrt/trunk/bin/x86/openwrt-x86-generic-combined-jffs2-128k.img

sudo killall -q qemu
sudo killall -q wirefilter
sudo killall -q vde_switch

vde_switch -d --hub --sock num1.ctl -f colourful.rc
vde_switch -d --hub --sock num2.ctl -f colourful.rc
cp ${IMAGE} num1.image
cp ${IMAGE} num2.image

sudo qemu \
    -no-acpi -m 32M \
    -net vde,sock=num1.ctl,port=1 -net nic,macaddr=fe:fe:00:00:01:01 \
    -net nic -net tap,ifname=tapwrt1 \
    num1.image&

sudo qemu \
   -no-acpi -m 32M \
   -net vde,sock=num2.ctl,port=2 -net nic,macaddr=fe:fe:00:00:02:01 \
  -net nic -net tap,ifname=tapwrt2 \
 num2.image&

sudo ifconfig tapwrt1 inet 192.168.2.1 up 
sudo ifconfig tapwrt2 inet 192.168.3.1 up
wirefilter --daemon -v num1.ctl:num2.ctl
Run Code Online (Sandbox Code Playgroud)

qemu num2.image 正常启动

但是这个脚本在运行时出现问题

警告:无法配置 /dev/net/tun:没有虚拟网络模拟

我不太熟悉所有的 qemu vdewirefilter 和 bash 脚本,所以任何额外的提示/指南将不胜感激

以下附有诊断信息

bash -v ./test.sh 
IMAGE=/home/northpole/openwrt/trunk/bin/x86/openwrt-x86-generic-combined-jffs2-128k.img

sudo killall -q qemu
sudo killall -q wirefilter
sudo killall -q vde_switch

vde_switch -d --hub --sock num1.ctl -f colourful.rc
vde_switch -d --hub --sock num2.ctl -f colourful.rc
cp ${IMAGE} num1.image
cp ${IMAGE} num2.image

sudo qemu \
-no-acpi -m 32M \
-net vde,sock=num1.ctl,port=1 -net nic,macaddr=fe:fe:00:00:01:01 \
-net nic -net tap,ifname=tapwrt1 \
num1.image&

sudo qemu \
   -no-acpi -m 32M \
   -net vde,sock=num2.ctl,port=1 -net nic,macaddr=fe:fe:00:00:02:01 \
  -net nic -net tap,ifname=tapwrt2 \
 num2.image&

sudo ifconfig tapwrt1 inet 192.168.2.1 up 
sudo ifconfig tapwrt2 inet 192.168.3.1 up
warning: could not configure /dev/net/tun: no virtual network emulation
warning: could not configure /dev/net/tun: no virtual network emulation
wirefilter --daemon -v num1.ctl:num2.ctl
Run Code Online (Sandbox Code Playgroud)

bash -x 输出相同

ndp*_*ndp 1

我修好了它:

由于某种原因缺少 tun 模块,并且我不需要 qemu 的网络配置脚本(/etc/qemu-ifup),因此 modprobe'd tun 删除了该脚本并以 root 身份运行,它工作了