KVM中四种网络模型(三)
1、隔离模型
该模型的特点是宿主机上的所有虚拟机之间可以组建网络,但是虚拟机无法与宿主机进行通信,也无法与其他网络的主机或其他宿主机上的虚拟机进行通信;相当于将虚拟机只是连接到一个交换机上,而这个交换机是在宿主机上虚拟出来的,即我们通常所说的网桥设备。
隔离模型中的虚拟机无法与宿主机的物理网卡和外部通信,但是可以与宿主机中的网桥通信;
图中VM表示虚拟机,每个虚拟机的网卡包含前半段和后半段;前半段vNIC在虚拟机上,后半段VIF在宿主机上。图中虚拟机中vNIC网卡对应的后半段为VIF网卡,VM虚拟机中发往vNIF网卡的数据报文都会发往后半段网卡VIF;
图中br-in是宿主机上的桥设备,也称之为Virtual Switch或者Bridge;在隔离模型中,相当于一个二层的虚拟交换机,要想实现同一宿主机中的虚拟机互相通信,需要满足几个条件:
- 需要在宿主机中创建一个Bridge,图中为br-in;
- 需要互相通信的每个虚拟机的前半段IP地址必须在同一网段内;
- 需要互相通信的每个虚拟机的后半段网卡VIF网卡设备添加至br-in这个桥设备n桥。
注意:如果要实现同网段虚拟机不能通信,即虚拟机之间隔离,则需要创建不同的网桥,并将虚拟机的后半段添加至不同的网桥设备,即可实现隔离。
2、 路由模型
该模型的特点是在隔离模型的基础上,在宿主机开启了ip路由转发功能,此时的宿主机相当于路由器,完成虚拟机与宿主机的数据报文转发。因此,虚拟机可以宿主机的物理网卡进行通信,但是无法与宿主机之外的主机进行通信,因为宿主机没有对源地址转换,报文可以送到外部主机,但是外部主机无法回应。
路由模型中的虚拟机要与宿主机的物理网卡进行通信,要满足以下几个条件:
- 宿主机必须在内核打开IP转发功能,即net.ipv4.ip_forward = 1;
- 宿主机中的网桥br-in需要添加一个与虚拟机同网段的IP地址;
- 虚拟机需要添加一条路由,下一跳地址设置为网桥br-in的ip;
路由模型中的虚拟机无法与外部进行通信;因为虚拟机发送到外部网络的主机时,源地址内网地址,内网地址无法与外部直接通信,且没有对源地址转换为物理网卡的IP地址,因此,外部网络发送的响应报文中的目标地址为虚拟机的IP地址时,无法到达宿主机的物理网卡,故虚拟机无法收到响应报文。
3、NAT模型
该模型的特点是当虚拟机需要与外部进行通信时,需要将源IP地址转换为物理网卡的IP地址,这样外部主机接收到报文后可以正确的将响应报文发送给目标IP地址(宿主机的物理网卡IP地址),因此,实现虚拟机与外部的通信;
注意:该模型仅仅是实现了源地址转换,实现虚拟机与外部网络的通信,但那是外部网络无法访问虚拟机,如果要实现,则需要在宿主机做目标地址转换。
NAT模型与路由模型的通信机制基本一致,唯一不同的就是,NAT模型可以使虚拟机直接与外部网络进行通信;即只需要在NAT模型中,在宿主机SNAT地址转换,将虚拟机的源地址IP转换为物理网卡的IP地址,发送报文至外部网络的主机;外部网络的主机收到报文后构建的响应报文的目标IP地址,为宿主机的物理网卡的IP地址,而后宿主机在将报文发送至虚拟机,实现了虚拟机与外部网络的通信。
4、桥接模型
该模型的特点是通过创建一个虚拟网卡,为该虚拟机网卡分配可以访问外部网络的IP地址;此时的物理网卡相当于一台交换机设备;虚拟机可以分配与外部网络通信的IP地址实现与外部网络的通信;此时,虚拟机相当于宿主机所在的局域网内单独的一台主机,它宿主机的地位是同等的,没有依存关系。
桥接模型不同于隔离模型、路由模型和NAT模型;在模型下,宿主机会虚拟出一块网卡作为该宿主机的通信网卡,而宿主机的物理网卡则成为桥接设备(也可称为交换机),此时,虚拟机相当于宿主机所在的局域网内单独的一台主机,它宿主机的地位是同等的,没有依存关系。
以上是KVM最简单的四种网络模型,在生产环境中使用的最多的是桥接模型,但是桥接模型的安全性是最低的,因为虚拟机直接暴露给了外部网络;而现在的容器技术中,NAT网络模型使用的较多,比如docker。
原文链接:https://blog.csdn.net/ccschan/article/details/88095718
KVM中四种网络模型(三)相关推荐
- java中高效遍历list_Java中四种遍历List的方法总结(推荐)
实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...
- python锁_Python中四种锁的使用示例(代码)
本篇文章给大家带来的内容是关于Python中四种锁的使用示例(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Lock互斥锁 使用前num = 0 def a(): globa ...
- java遍历list_Java中四种遍历List的方法总结(推荐)
实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...
- Java基础:Java中四种访问修饰符
一.背景. 这篇文章主要介绍了Java中四种访问修饰符详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下.放假在家里休息,闲来无事,想 ...
- Android中四种补间动画的使用示例(附代码下载)
场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...
- JavaScript中四种不同的属性检测方式比较
JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...
- C++中四种 cast 转换
四种 cast 转换 C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast const_cast static_cas ...
- java乘法表_Java中四种9*9乘法表的实现方式(附代码)
前言: 初学java,实现99乘法表是必学必会的内容. 需求 : 分别写出上下左右,对应四个角的乘法表. 思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式. 代码如下: publi ...
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...
最新文章
- 最新!2021 中国内地大学 ESI 排名出炉
- python之枚举类Enum
- tomcat对URL合法字符的判断(RFC 7230 and RFC 3986 异常排查)
- 小学五年级就已经开始编程啦吗???
- Python3 Selenium自动化web测试 == 第三节 常用WebDriver API使用示例上(24个API)
- 不迈出第一步,不去尝试,你永远不知道能否成功
- BUPT 2012复试机考 4T
- mysql8建立表格报错
- 用GitHub Issue取代多说,是不是很厉害?
- 计算机辅助设计b实验目的,上海电力学院电路计算机辅助设计1--含有受控源电路辅助分析...
- python大神的成长之路_我的Python成长之路
- Django 静态文件处理
- SQL Server Express无法建立ODBC问题(错误代码67 和17)
- 剑指offer面试题16. 数值的整数次方(二分法)
- Linux中mongodb定时远程备份
- k3cloud6.0文件服务器,K3Cloud系统集成配置详解
- t3财务软件服务器停止运行,用友T3标准版已停止工作应该怎么办
- FC游戏 《三国志2-霸王的大陆》攻略
- HTML简单制作一个网页
- 遥感影像地图编制流程
热门文章
- 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?
- 初学python下载哪个版本-学python下载哪个版本
- 自学python需要多长时间-大家觉得自学python多久能学会?
- python turtle画气球-LeetCode-python 312.戳气球
- python100个必背知识-学Python必须背的42个常见单词,看看你都会吗?
- python列表切片口诀-python学习之“切片操作从入门到精通”
- opencv python 中cv2.putText()函数的用法
- linux与python客户端,《使用python进行unix和linux管理》§5网络 §5.1 网络客户端
- 时间与字符串之间的转换
- Leader/Follower多线程网络模型介绍