本文介绍如何为由qemu启动的VM(虚拟机)配置网络,使得VM可以访问host网络和外部网络,以及可以让host以及外部通过网络访问VM的服务(比如web/http).
这里使用tun/tap虚拟设备为VM配置网络,qemu的命令参数如下,关于tun/tap,参考blog,和物理网卡一样可以配置IP、可以发送数据。
-device e1000,mac=00:16:3e:01:01:01,netdev=net0
-netdev tap,id=net0,ifname=tap1,script=no,downscript=no
-device e1000创建一个VM中的网络设备,-netdev tap连接到host上的一个tap设备(tap1,需要提前在host创建好),和VM中的e1000对应。VM操作e1000,数据会出现在tap1上,host或者外部网络的数据到达tap1时,数据也会出现在e1000上。这样VM就和tap1连通了,tap1再和外部网络连通,VM就可以访问到外部网络了。qemu网络参数的文档。
tap1连接外部网络是通过一个bridge实现的,bridge连接tap1,同时也连接另外一个host上的真实物理网卡(例如eth0),并且这个网卡可以访问外部网络。多个VM的tap设备可以连在同一个bridge上面。bridge的实现有2种方式:NAT和bridge……NAT的实现方式,使得tap1像是连在了一个路由器上;b