总结
本文讲述了如何在femu中使用虚拟网卡的方式让其拥有独立的IP地址,方法是实验室学弟的,我记录一下
1. 安装
femu是在QEMU上进行使用的,可以更加精确地模拟一个NVMe的SSD盘,所以整个femu运行起来其实很像在虚拟机上对虚拟出来的SSD进行测试。所以还是需要一个虚拟的操作系统的
安装的话,直接在Github上读它们自己的Readme就可以,这里是femu网址,跟着上面的命令来就可以。虚拟机的镜像文件可以直接用他们自己做好的
2. 网络
在run-blackbox.sh中,可以看到网络连接是使用本地NET连接的,将主机的8080端口与femu虚拟机的22端口做绑定,这样femu的网络流量可以走22端口转发到主机的8080端口,再有8080端口做流量转发
使用端口转发,可以使用
1
| ssh -p 8080 femu@localhost
|
进行ssh远程登录femu,femu也可以连接外网。femu本身的IP地址并没有太多的功能。
如果要使用IP地址进行访问的话,需要使用网络桥接功能
可以使用
来观察端口的状态
3. qemu使用桥接
- 主机端运行以下命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #!/bin/sh
sudo apt-get install bridge-utils sudo apt-get install uml-utilities
sudo ifconfig "$1" down # 关闭网卡 sudo brctl addbr br0 # 添加网桥br0 sudo brctl addif br0 "$1" # 将$1网口的配置复制一份到br0 sudo brctl stp br0 off # 关闭网桥 sudo brctl setfd br0 1 # 设置网桥的fd(标识符) sudo brctl sethello br0 1 # 设置hello协议的时延 sudo ifconfig br0 0.0.0.0 promisc up # 开启网桥br0 sudo ifconfig "$1" 0.0.0.0 promisc up # 开启$1网卡 sudo dhclient br0 # 向路由器获取IP地址 sudo brctl show br0 # 打印网桥信息 sudo brctl showstp br0 # 打印网桥stp信息 sudo tunctl -t tap0 -u root # 新建一个tap0网卡 sudo brctl addif br0 tap0 # 将tap0网卡加入到br0上 sudo ifconfig tap0 0.0.0.0 promisc up # 开启tap0网卡 brctl showstp br0 # 打印网桥stp信息 sudo systemctl restart zerotier-one.service # 重启zerotier # 如果zerotier连接不上再去服务器那边重启ssh服务
|
- 在run-blackbox.sh中修改net的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| sudo x86_64-softmmu/qemu-system-x86_64 \ -name "FEMU-ZNSSD-VM" \ -enable-kvm \ -cpu host \ -smp 8 \ -m 32G \ -device virtio-scsi-pci,id=scsi0 \ -device scsi-hd,drive=hd0 \ -drive file=$OSIMGF,if=none,aio=native,cache=none,format=qcow2,id=hd0 \ -device femu,devsz_mb=4096,femu_mode=3 \ -net tap,ifname=tap0,script=no,downscript=no \ # 新添加,告诉femu使用桥接模式,网卡选择tap0 -net nic,macaddr=`dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(.\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\14:\2:\3:\4:\5:\6/g'` \ # 使用随机的mac地址 -nographic \ -qmp unix:./qmp-sock,server,nowait 2>&1 | tee log
|
在主机端新增一个网桥br0,以及新增一个虚拟网卡tap0,原先的网卡还是用于与主机通信,tap0虚拟网卡用于与femu进行通信,femu启动时获取的ip地址与主机在同一个网段下,相当于将femu看成主机的子设备,并且在同一局域网的设备时可以通过ssh远程访问的