为了宿主机和虚拟机可以很好的通信,当然是选择桥接网络啦!!!
话不多说
===========================配置桥接网络==========================
虚拟机虽然能够上网了,但是宿主机并不能与虚拟机通信,这给开发调试带来了很多的困难。我们希望的是,可以用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
的分享
来源:oschina
链接:https://my.oschina.net/u/4327960/blog/3525670