qemu使用tap网卡连接网络

目录

 

1.新建br0接口并进行一些设置

2.带参数启动qemu的命令

3.注销网桥

4.网桥的逻辑拓扑图

参考:


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平行的网卡 。

qemu使用tap网卡连接网络_第1张图片

 

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 

qemu使用tap网卡连接网络_第2张图片

 

 

参考:

https://gist.github.com/extremecoders-re/e8fd8a67a515fee0c873dcafc81d811c

https://blog.csdn.net/Tai4lin/article/details/89788689

你可能感兴趣的:(linux,qemu,tap网卡)