QEMU使用网桥模式

配置网桥

  1. 在host上查看可用网络资源

ifconfig

有enp0s31f6、enp3s0u2c4i2、lo 3个网络资源。

lo用于网络自回环的,不管

enp0s31f6是连接公司网的,但是公司linux无法上网,不管

enp3s0u2c4i2连接着我的手机,可以上网,因此使用该eth配置网桥模式。

  1. 建立网桥
sudo su
# 安装网桥工具
apt-get install bridge-utils
brctl addbr br0
brctl addif br0 enp3s0u2c4i2
brctl stp br0 on
ifconfig enp3s0u2c4i2 0
dhclient br0
route

记住这个子网掩码和网关,需要对guest进行同样的配置。

  1. 以特定选项启动虚拟机
# 网络选项为-net nic -net tap,ifname=tap1,即生成一个给guest使用的TAP,连接到br0上
# 其实应该设置qemu-ifup和qemu-ifdown脚本,但是考虑到会默认使用/etc下的这两个脚本,这里不特殊设置
qemu-system-x86_64 -m 2048 -smp 4 -hda kvm-study.img -enable-kvm -net nic -net tap,ifname=tap1 
  1. 编辑guest网络配置

    如果在guest中使用ifconfig发现guest已经和host处于同意IP段,则省略以下配置,应该可以立即互相ping通

    因为我使用的guest是ubuntu18.04 server,网络设置在/etc/netplan/50-cloud-init.yaml文件中,因此在guest中编辑该文件,更早版本的linux可能在/etc/network/interfaces文件中,一个一个来。

    4.1 如果为ubuntu18.04或其他使用netplan作为网络配置的系统,则

其中ens3可以通过在guest中执行ifconfig指令获取除lo之外的网络资源名称。

addressses中的28为子网掩码,即32bit的子网掩码前28bit为1,正好为255.255.255.240,与host的子网掩码相同。因此需要设置为28。

addresses中的172.20.10.14为guest的ip地址,这里可以设置的值从172.20.10.1-172.20.10.15,但是不能设置为.3,因为host为.3。

gateway4与host相同。

其它与图示相同即可。

​ 4.2 如果使用的是ifupdown工具配置的网络,那么需要修改/etc/network/interfaces

sudo vim /etc/network/interfaces

然后将内容修改为以下形式

注意address就是guest的IP

netmask为子网掩码

dns-nameservers是dns

保存退出后无需执行5中的netplan apply

  1. 保存退出后在guest中执行以下命令
sudo netplan apply
sudo systemctl restart network-online.target

之后就可以用ifconfig看到guest的ip和host同域了。互相之间ping也ping得通。

host和guest之间的文件传输

  1. host向guest传送文件
scp 待传输文件路径 username@guest的ip地址:需要放置到guest的位置

2. host从guest下载文件
​```
scp username@guest的ip地址:需要下载的文件在guest中的路径  host中要下载到的位置
posted @ 2021-02-24 11:04  EwanHai  阅读(4931)  评论(0编辑  收藏  举报