qemu使用tap网卡连接网络
参考:https://gist.github.com/extremecoders-re/e8fd8a67a515fee0c873dcafc81d811c
目录
qemu的网络最简单的是user模式:
虚拟一个e1000网卡,与主机的连接采用user模式网络,将主机的8080端口映射到虚拟机的80端口上去(如果不需要映射可以不写这个)。
qemu-system-i386 -cdrom Core-current.iso -boot d \
-netdev user,id=mynet0,hostfwd=tcp::8080-:80 \
-device e1000,netdev=mynet0
这种方式存在一个小问题就是,不支持ICMP协议,虚拟机里面无法ping外面。
如果要能ping,其中一个办法就是使用桥接的网络。
1.新建br0接口并进行一些设置
安装brctl、tunctl等命令工具:
apt install uml-utilities
apt install bridge-utils
新建br0接口的一系列命令:
具体的含义可以参考
https://gist.github.com/extremecoders-re/e8fd8a67a515fee0c873dcafc81d811c
#!/bin/sh
brctl addbr br0
ip addr flush dev eth0
brctl addif br0 eth0
tunctl -t tap0 -u `whoami`
brctl addif br0 tap0
ifconfig eth0 up
ifconfig tap0 up
ifconfig br0 up
命令执行后,会多2个桥接的网络,br0和tap0,相当于多了一个与eth0平行的网卡 。

2.带参数启动qemu的命令
将tap0作为网卡启动qemu。主要看下面脚本的第2行:
sudo qemu-system-i386 -cdrom Core-current.iso -boot d \
-net tap -net nic
#-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
#-device e1000,netdev=mynet0,mac=52:55:00:d1:55:01
主要参考 http://blog.chinaunix.net/uid-22166872-id-4213626.html
注释掉的部分是从参考复制来的,但实测虚拟机中看不到网卡,不太清楚原因。
3.注销网桥
上述命令创建的网桥设备在重启后会自动消失。
如果需要注销网桥可以采用以下命令:
#Remove tap interface tap0 from bridge br0
brctl delif br0 tap0
#Delete tap0
tunctl -d tap0
#Remove eth0 from bridge
brctl delif br0 eth0
#Bring bridge down
ifconfig br0 down
#Remove bridge
brctl delbr br0
#Bring eth0 up
ifconfig eth0 up
#Check if an IP is assigned to eth0, if not request one
dhclient -v eth0
4.网桥的逻辑拓扑图
网桥在系统中的逻辑拓扑图如下所示:
摘自:https://www.cnblogs.com/bakari/p/10529575.html

参考:
https://gist.github.com/extremecoders-re/e8fd8a67a515fee0c873dcafc81d811c
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)