在qemu-kvm配置桥接网络

  为了宿主机和虚拟机可以很好的通信,当然是选择桥接网络啦!!!

话不多说

===========================配置桥接网络==========================

虚拟机虽然能够上网了,但是宿主机并不能与虚拟机通信,这给开发调试带来了很多的困难。我们希望的是,可以用ssh连上虚拟机。这就要求虚拟机就像一台物理机一样,与宿主机存在于同一个网段内。

首先,在宿主机上,安装必要的工具(为了tunctl命令):

以下命令均是在su下进行若是认证失败,请输入sudo passwd root 进行密码更新重新进入su

 apt-get install uml-utilities

接着,创建一张虚拟TUN网卡:

 tunctl -t tap0 -u lfc

这里的lfc换成你的Linux用户名。然后,将网卡设置为任何人都有权限使用:

 chmod 0666 /dev/net/tun

之后,为tap0网卡设置一个IP地址,不要与真实的IP地址在同一个网段。比如我的真实IP地址是192.168.1.2(输入ifconfig -a 查看),那么我就给tap0设置192.168.2.1:

 ifconfig tap0 192.168.2.1 up

宿主机需要为虚拟机开启IP数据包转发,即在192.168.1.*网段和192.168.2.*网段转发数据:

 echo 1 > /proc/sys/net/ipv4/ip_forward   #可能sudo也会权限不够,在su以后执行即可
 iptables -t nat -A POSTROUTING -j MASQUERADE
宿主机的配置到此结束。
然后启动虚拟机
有图形的直接进去,没有的命令进去。
进入虚拟机以后:
ifconfig -a

可以看到ens3网卡,但是没有启用。给它配置一个IP地址,比如192.168.2.2,只有与宿主机的tap0网卡在同一网段即可:

ifconfig ens3 192.168.2.2 up
注:若是其他名称就改为相应的名称,若是已经启动了,就是有了相应的ip地址,则不需要进行这一步(配置ip地址这一步)

之后就能发现,宿主机与虚拟机可以相互ping通了!但是此时,虚拟机还不能上外网,因为虚拟机缺少网关。现在把虚拟机的tap0的地址,192.168.2.1,设置为虚拟机的网关:

route add default gw 192.168.2.1
上面这步可以不做!!!!

这样,也可以ping通外网了,比如ping 115.239.211.112。但是ping www.baidu.com却不行,因为缺少DNS服务器!现在就把8.8.8.8指定为虚拟机的DNS服务器:

 vim /etc/resolv.conf
若是需要apt-get install vim 却发现下载不了 可以用 vi /etc/resolv.conf

尽管文件警告说不要手工编辑,但是我临时用用也就无所谓,追加一行:

nameserver 8.8.8.8

写入文件之后,DNS立即生效了。现在,虚拟机既能上外网,又能与宿主机通信了

 

 

 

 

感谢博主

https://zhoujianshi.github.io/articles/2018/%E5%AE%89%E8%A3%85qemu-kvm%E4%BB%A5%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%A1%A5%E6%8E%A5%E7%BD%91%E7%BB%9C/index.html
的分享
posted @ 2019-05-24 14:51  娄方成  阅读(3577)  评论(0编辑  收藏  举报