KVM---虚拟机网络管理
在上篇博客中我们完成了 KVM 虚机的安装,但是我发现虚机内的网络是不通的(当然了,在写这篇博客的时候已经把上篇博客中的配置文件修改好了,网络也是通的了,嘻嘻),所以这篇博客总结了一下虚机的网络连接方式及其配置。在虚机中,常见的虚拟机的连网方式有两种,一种是 NAT 方式,另一种是 bridge (桥接模式),其它的模式比如 host-only 模式在这里就不讨论了。
前置知识
当我们安装了 KVM 之后,如果你用 ifconfig 看一下,其实发现我们的宿主机上已经多了一块虚拟网络接口,这是因为 libvirt 启动后会在 host 上生成一个 virbr0(虚拟网桥),host 上面的所有虚拟机都是通过这个 virbr0 连接起来。默认情况下 virbr0 使用的是 NAT 模式,所以这种情况下,guest 只能通过 host 才能访问外部。

对于 virbr0 产生的作用和默认连接方式,我截取下方参考博客中的一张图片来说明:

有的小伙伴可能纳闷了,为什么 virbr0 中的 inet(IP地址) 为上图中红色方框中的呢?让我们来看一下主机中的虚拟网络(虚机的网络连接)情况,如下图所示:

我们发现有一个名称为 default 的虚拟网络,让我们打开一下它的配置文件看一下,输入下面命令进行查看:

注:该 default 网桥的配置文件 default.xml 可通过 sudo find / -name default.xml 命令进行查找,我的在: /etc/libvirt/qemu/networks 目录下,如果找不到,新建即可,内容如下图。
查看结果(一般下图中的配置文件名称要和网桥名相同,这样用 brctl show 命令和用 virsh net-list 命令查看就一样了):

NAT模式连接
这下明白了吧,这个配置文件是默认安装的时候已经写死的,这里面的 ip 地址就是我们在 ipconfig 命令中看到的;上篇博客中的 centos_config.xml 虚拟机配置文件中有关网络部分中指定了 source 选项为 default 的原因明白了吧,就是把虚拟机开启后生成的虚拟网卡绑定到这个网桥上面(虚机在配置文件中指定了 mac 地址,当此网桥文件开启后,此服务会启动一个 dhcp 服务,该服务是 libvirt 模拟实现的,客户可通过 dhcp 服务在该配置中指定的 ip 地址范围内随机分配一个 ip)。从上图中可以看出该配置模式为 mode='nat',这样就可以通过主机进行与外网进行通信了。当然我们也可以自己定义自己的上述配置文件从而生成另外一个网卡,然后通过 在主机网络配置文件中 修改 source 中填上你新建的网络名称就可以进行绑定了,前提是你定义的网桥必须要跑起来(virsh net-define 命令定义一个网桥,virsh net-start 网桥名 命令进行网桥服务开启,可通过 virsh net-list 命令进行查看网桥状态,像上图中所示,如果 State 为 active 表示已开启成功,具体操作可以类比下面的桥接网络的操作过程)。
我们登录进去客户机之后可以 用命令 ip a 查看(类似于 Ubuntu ifconfig),发现网络 ens3 并没有被分配 ip 地址:

此时我们可以用命令 dhclient 进行向 dhcp 服务器申请 IP地址,然后再次进行查看:

此时测试网络是否是能和外网连通的:

桥接模式
如果你想通过 ssh 连接你的客户机,可能就需要通过 桥接模式进行连接了,下图是桥接模式的大概方式,首先建立一个网桥,然后虚拟机的虚拟网卡都挂载(插入)到该网桥上,另一端接到物理网卡上,这样根据 网桥的二层转发的工作模式,就可以把帧转发到各个虚拟机所在的网桥插口上了。那如果我们虚拟机想要通过网桥进行连接,则需要三步:

step 1: 建立一个网桥:
编辑一个网桥配置文件,命名为:demo0.xml ,内容如下图所示

定义这个网桥:

开启这个网桥:

查看是否已经开启(可以看到已经开启):

用 ifconfig 查看一下:

用 brctl show 命令看一下:

step 2: 首先开启虚拟机(再做上述操作之前,我已经把虚拟机 undefine 了,然后修改了配置文件,把网络部分的配置 source 的名称改为了 demo0,下图只截取了虚拟机配置文件中部分,完整版本请看上篇博客):

重新定义并且开启虚拟机:

此时用 brctl show 命令看一下(可以看到 虚拟机开启后产生的虚拟网卡已经插入了demo0 网桥):

step 3: 把物理网卡也插入网桥(通过上述 ifconfig 命令可以看到我的物理网卡名称为 ens33):

此时,虚拟机就能和物理机一样的访问外网了,我们进入虚机试一下(如果看不到 虚拟机的网络有 ip 地址,和上面一样执行 dhclient 命令即可):

注:从上图中可以看到 此时虚拟机的 IP 地址是和 物理机的 IP 地址是同一网段的,具体原因请搜索 网桥和NAT 连接的方式进行查看。
查看一下是否能通外网:

至此,我们就完成了虚机和客户机的网络连接了!
参考资料:
https://blog.csdn.net/hzhsan/article/details/44653403
https://www.linuxidc.com/Linux/2013-08/88720.htm
https://www.linuxidc.com/Linux/2013-08/88517.htm
VMware 虚拟网络拓扑图讲解:
https://blog.51cto.com/wangchunhai/381225
另外也感谢同事 振浩 的热情讲解!
KVM---虚拟机网络管理的更多相关文章
- kvm虚拟机网络管理
一.Linux Bridge网桥 管理 # brctl show 显示当前网桥连接状态 # brctl addbr br1vlan-10 添加网桥 # brctl delbr br1vlan-10 删 ...
- KVM -> 虚拟机磁盘管理_03
1.KVM磁盘管理 1.KVM qcow2.raw.vmdk等镜像格式说明:http://blog.csdn.net/zhengmx100/article/details/53887162 raw: ...
- OpenStack入门篇(四)之KVM虚拟机介绍和管理
1.查看虚拟机,启动虚拟机 [root@linux-node1 ~]# virsh list --all Id Name State --------------------------------- ...
- 基于本地存储的kvm虚拟机在线迁移
基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...
- QEMU/KVM虚拟机安装配置
1.安装相关组件: [root@KVM ~]# yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v ...
- kvm虚拟机静态和动态迁移
一.kvm虚拟机静态迁移 1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移. (1)虚拟主机各自使用本地存储存放虚拟机磁盘文件 本文实现基于本地磁盘存储 ...
- zabbix 自定义探索规则发现服务器上面的kvm虚拟机和对应的网卡
安装完zabbix服务器之后 只有两个探索规则模版,挂载点探索和网卡探索 场景描述:想使用zabbix监控kvm虚拟机的网卡的流量情况, 获取虚拟机和网卡对应关系 虚拟机 S-1 virsh domi ...
- Centos7下搭建KVM虚拟机
PRE-INSTALL ============================================================= kvm相关安装包及其作用 qemu-kvm 主要的K ...
- 11.安装KVM虚拟机
安装KVM虚拟机是一大难题,不按照虚拟机物理机128G内存和强劲的CPU无法充分利用.也不便于后面的jenkins自动部署.安装KVM虚拟机过程我是借鉴了网上下载的马哥linux KVM那块的内容 ...
- 如何克隆kvm虚拟机
关于如何使用kvm虚拟化技术创建虚拟机,这里有一系列博客讲的已经非常清楚了,这里不再赘述,不过其中有些小坑可能需要大家注意: 0. 写在创建虚拟机之前(即教程的系列三之前) 1. 确认防火墙是否关闭, ...
随机推荐
- 【转】AutoMapper对象映射
什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...
- hdu 2583 How far away ? 离线算法 带权求最近距离
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 51nod 1006:最长公共子序列Lcs
1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). ...
- POJ 1944:Fiber Communications
Fiber Communications Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4236 Accepted: 1 ...
- Arduino - Nano针脚分配时需要注意的事项
0.1为Rx.Tx 针脚,这两个针脚一般作为串口使用,非串口设备尽量不占用该针脚.2.3为中断口,分别对应中断0.中断1,需要中断功能的设备,必须接入此.2-13.A0-A5,共18个针脚,都可以作为 ...
- (1) JVM内存管理:内存模型
引子 一段简单的代码结果引发疑问,==到底比较的是什么?equals呢? public static void main(String args[]){ String s1="abc&quo ...
- java多线程并发(一)-- 相关基础知识
java多线程的知识是java程序员都应该掌握的技能,目前我接触的项目上用的不多,花点时间熟悉熟悉. 一.基础知识 1.什么是进程? 进程是具有一定独立功能的正在运行过程中的程序,是操作系统进行资源分 ...
- ACM蒟蒻防bug专用 ( •̀ ω •́ )✧
/*********************************************** * _ooOoo_ * * o8888888o * * 88" . "88 * * ...
- 查看 vps 进程网络流量
弄好了 vps 以后,感觉网络流量走的有点多,决定查查看到底什么情况. 首先安装 sar 来看看各个设备消耗的流量 apt-get install sysstat sar 的参数 DEV 表示网口, ...
- 【转载】Emdedding向量技术在蘑菇街推荐场景的应用
花名:越祈 部门:算法中心搜索策略组 入职时间:2017/06/01 主要从事蘑菇街推荐算法相关研发工作 蘑菇街是一家社会化导购电商平台,推荐一直是其非常重要的流量入口.在电商平台中,推荐的场景覆盖到 ...