• 第一种隔离模型
         每一个虚拟机实例的网卡都有两个接口,一端接在虚拟机内部,一端接在宿主机内部,如上图所示eth0就是接在虚拟机内部的,而vnet0就是接在宿主机内部的,只要再创建一个虚拟网桥(virtual Bridge)就可以虚拟机实例之间通信 
   
 
      启用隔离模型
# 由于安装管理kvm虚拟机的包组的时候,已经将bridge-utils-1.5-9.el7.x86_64包作为依赖安装了,因此可以直接使用brctl命令
 
# 获取帮助
brctl --help
 
# 创建虚拟桥
brctl addbr host_only_br0
 
# 激活虚拟桥
ifconfig host_only_br0 up
 
# 创建虚拟磁盘文件
mkdir /root/vm/
cp /root/cirros-0.3.3-x86_64-disk.img /root/vm/disk1.qcow2
cp /root/cirros-0.3.3-x86_64-disk.img /root/vm/disk2.qcow2
cp /root/cirros-0.3.3-x86_64-disk.img /root/vm/disk3.qcow2
 
# 修改创建的那两个脚本文件,将桥设备从 br0 改为 host_only_br0
###################################### 启动脚本的内容 ########################
 
#! /bin/bash
 
# 把这里修改为host_only_br0
bridge=host_only_br0
# 如果$1的值不为空
if [ -n "$1" ];then
# 启动网卡接口地址
ip link set $1 up
sleep 1
 
# 将网卡接口连接至物理桥上,此时为桥接模式
brctl addif $bridge $1
 
# 确保以上命令执行成功后退出
[ $? -eq 0 ] && exit 0 || exit 1
 
else
echo "Error: RONG interface" && exit 1
 
fi
 
###################################### 启动脚本的内容 ########################
 
chmod +x /etc/qemu-ifup
 
# 2:/etc/qemu-ifdown脚本, 且给脚本一个执行权限
 
###################################### 停止脚本的内容 ########################
#! /bin/bash
 
# 这里也需要修改为host_only_br0
bridge=host_only_br0
# 如果$1的值不为空
if [ -n "$1" ];then
# 停止网卡接口地址
ip link set $1 down
sleep 1
 
# 将网卡接口从物理桥上删除
brctl delif $bridge $1
 
# 确保以上命令执行成功后退出
[ $? -eq 0 ] && exit 0 || exit 1
 
else
echo "Error: RONG interface" && exit 1
 
fi
###################################### 停止脚本的内容 ########################
 
chmod +x /etc/etc/qemu-ifdown
 
 
 
# 创建第一个虚拟机实例,这里在创建实例的时候,ifname:为宿主机这端网卡的名称。script:指定创建虚拟机的时候,虚拟网卡连接的是哪个桥设备。downscript:执行在停止虚拟机的时候,如何删除虚拟网卡与桥设备的连接
qemu-kvm -name kvm_linux1 -m 200 -smp 2 -drive file=/root/vm/disk1.qcow2,media=disk,if=virtio,format=qcow2 -net nic,model=virtio,macaddr=52:54:00:01:01:01 -net tap,ifname=virtual_eth1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -vnc :1 -daemonize
 
# 创建第二个虚拟机实例
qemu-kvm -name kvm_linux2 -m 200 -smp 2 -drive file=/root/vm/disk2.qcow2,media=disk,if=virtio,format=qcow2 -net nic,model=virtio,macaddr=52:54:00:01:01:02 -net tap,ifname=virtual_eth2,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -vnc :2 -daemonize
 
# 连接到虚拟机的控制台(在windows上调用xmanager,在Mac上调用XQuartz)
 
# 使用vnc连接第一个虚拟节点
vncviewer :1
sudo ifconfig eth0 192.168.23.10/24 up
 
# 使用vnc连接第二个虚拟节点
vncviewer :2
sudo ifconfig eth0 192.168.23.11/24 up
 
 
  • 第二种路由host-only模型

开启host-only模型很简单,在隔离模式上,给host_only_br0一个IP地址即可

ifconfig host_only_br0 192.168.23.1/24 up
 
 
 
 
 
  • 第三种NAT模型

  • 在原有的基础之上,启用NAT模型
# 给虚拟主机实例添加一个网关
route add default gw 192.168.23.1
 
# 在宿主机打开网卡间转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# 再ping宿主机的IP发现可以ping通了,因为网卡间转发功能打开
 
# 但是此时ping其他外网的主机,还是ping不通的,可以使用tcpdump -i eno16777736 -nn icmp抓包分析下。这是因为,外网主机收到ping报文后不知道发给谁,解决办法有两种,第一种是给外网主机添加一条路由条目,让来自192.168.23.0/24的报文,都发往192.168.43.11这个IP所在的网卡,或者在宿主机上写一条SNAT规则,让来自192.168.23.0/24的报文都的原IP地址都是宿主机网卡的IP地址,都是这样宿主机的IP将会被此虚拟机实例捆绑,因此,我们在br0上,再添加一个IP地址
ifconfig br0:0 192.168.43.12/24 up
 
# 再添加SNAT规则
iptables -t nat -A POSTROUTING -s 192.168.23.0/24 -j SNAT --to-source 192.168.43.12
 
# 最后添加DNAT规则,使得外网主机ping内网主机的时候,也可以ping通,这时宿主机就像四层负载均衡调度器一样了
iptables -t nat -A PREROUTING -d 192.168.43.12/24 -j DNAT --to-destination 192.168.23.10
 
# 在虚拟机实例中再ping一下外网主机,此时就可以ping通了
ping 192.168.43.80(Mac电脑的IP)
 
# 在Mac电脑的terminal终端,ping 192.168.43.12也能够ping通,但是响应用户ping的不是192.168.43.12网卡,而是内网主机192.168.23.10网卡
 
 
 
  • 第四种桥接模型
首先必须创建网卡连接桥接口的启动脚本和停止脚本,其中脚本中的 $1:表示为虚拟机的网卡的右边接口,这两个脚本就是讲虚拟机的网卡的右边接口接在网桥上,实现桥接模型
 
 
# 1:/etc/qemu-ifup脚本,且给脚本一个执行权限
###################################### 启动脚本的内容 ########################
 
#! /bin/bash
 
bridge=br0
# 如果$1的值不为空
if [ -n "$1" ];then
# 启动网卡接口地址
ip link set $1 up
sleep 1
 
# 将网卡接口连接至物理桥上,此时为桥接模式
brctl addif $bridge $1
 
# 确保以上命令执行成功后退出
[ $? -eq 0 ] && exit 0 || exit 1
 
else
echo "Error: RONG interface" && exit 1
 
fi
 
###################################### 启动脚本的内容 ########################
 
chmod +x /etc/qemu-ifup
 
# 2:/etc/qemu-ifdown脚本, 且给脚本一个执行权限
 
###################################### 停止脚本的内容 ########################
#! /bin/bash
 
bridge=br0
# 如果$1的值不为空
if [ -n "$1" ];then
# 停止网卡接口地址
ip link set $1 down
sleep 1
 
# 将网卡接口从物理桥上删除
brctl delif $bridge $1
 
# 确保以上命令执行成功后退出
[ $? -eq 0 ] && exit 0 || exit 1
 
else
echo "Error: RONG interface" && exit 1
 
fi
###################################### 停止脚本的内容 ########################
 
chmod +x /etc/etc/qemu-ifdown
 
 
(二)创建一个有网络接口的虚拟机实例
# -net nic指明为网卡接口,model指明virtio虚拟网卡驱动,macaddr为虚拟网卡的Mac地址
# -net 指定网卡的连接方式,物理机的TAP网络接口连接至vlan中,ifname=virtual_eth0 指定宿主机虚拟网卡名称,默认连接的是br0,桥接模型
# -daemonize:指明以daemon的方式运行
qemu-kvm -name kvm_linux -m 200 -smp 2 -drive file=/root/cirros-0.3.3-x86_64-disk.img,media=disk,if=virtio,format=qcow2 -net nic,model=virtio,macaddr=52:54:00:01:01:01 -net tap,ifname=virtual_eth1 -vnc 192.168.43.11:1 -daemonize
 
(三)通过vnc连接
vncviewer 192.168.43.11:1
 
(四)输入用户和密码,登入,看看网卡eth0是否有IP,且ping一下www.baidu.com是否ping通
创建一个有网络接口的虚拟机实例
# -net nic指明为网卡接口,model指明virtio虚拟网卡驱动,macaddr为虚拟网卡的Mac地址
# -net 指定网卡的连接方式,物理机的TAP网络接口连接至vlan中,ifname=virtual_eth0 指定宿主机虚拟网卡名称,默认连接的是br0,桥接模型
# -daemonize:指明以daemon的方式运行
qemu-kvm -name kvm_linux -m 200 -smp 2 -drive file=/root/cirros-0.3.3-x86_64-disk.img,media=disk,if=virtio,format=qcow2 -net nic,model=virtio,macaddr=52:54:00:01:01:01 -net tap,ifname=virtual_eth1 -vnc 192.168.43.11:1 -daemonize
 
通过vnc连接
vncviewer 192.168.43.11:1
 

linux 虚拟网络模型介绍的更多相关文章

  1. Linux虚拟网络:Docker网络知识之基础篇

    我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...

  2. Linux实战教学笔记07:Linux系统目录结构介绍

    第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...

  3. Linux 启动参数介绍

    Linux 启动参数介绍 取自2.6.18 kernel Documentation/i386/boot.txt 文件中介绍 vga= 这里的不是一个整数(在C语言表示法中,应是十进制,八进制或者十六 ...

  4. Linux系统启动过程介绍

    Linux系统启动过程介绍 学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程. 1.BIOS自检:当开机的时候 ...

  5. Linux内核策略介绍

      Linux内核策略介绍学习笔记   主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...

  6. linux驱动简单介绍

     linux驱动简单介绍 驱动基本介绍 驱动.顾名思义就是“驱使硬件设备行动”.设备驱动与底层硬件之间打交道,按照硬件设备的具体操作方式来读写设备寄存器,最终完成一系列操作. 设备 驱动充当了应用程序 ...

  7. Linux虚拟文件系统

    从文件 I/O 看 Linux 的虚拟文件系统 1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux ...

  8. Linux系统性能监控工具介绍之-tsar

    Linux系统性能监控工具介绍之-tsar Linux系统性能监控工具介绍之-tsar 2017-03-02 20:25 175人阅读 评论(0) 收藏 举报  分类: LINUX调优(9)    目 ...

  9. Linux 虚拟串口及 Qt 串口通信实例

    Linux 虚拟串口及 Qt 串口通信实例 2011-06-22 17:49 佚名 互联网 字号:T | T Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪 ...

随机推荐

  1. CAP通俗解释

    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),这三个基本需求,最多只 ...

  2. mitmproxy 在windows上的使用

    mitmproxy 是一个中间件代理, 结合python使用 安装  pip install mitmproxy 在windows上没有mitmproxy 所以只要用mitmdump和mitmwdb ...

  3. TCP/IP协议中的UDP与TCP的区别

    TCP面向连接,UDP面向非连接即发送数据前不需要建立链接TCP提供可靠的服务(数据传输),UDP无法保证,它没有TCP的接受确认.窗口等机制,因此也不需要交换控制信息:发生丢包也一概不负责.TCP面 ...

  4. ubuntu18.04 VirtualBox 开启虚拟机出错 Kernel driver not installed (rc=-1908)

    写的很明白了 提示缺少GCC PERL MAKE,安装 重试..... 重启VM 搞定....

  5. 笔记-scrapy-selector

    笔记-scrapy-selector scrapy版本:1.5.0 1.总述 scrapy内置selector建立在lxml上. 2.使用 可以使用xpath和css方法来进行解析,两者都返回列表: ...

  6. Oracle入门第一天(上)——简介与安装

    一.Oracle介绍  Oracle 公司是全球最大的信息管理软件及服务供应商,成立于1977年 Oracle 公司因其复杂的关系数据库产品而闻名.Oracle的关系数据库是世界第一个支持SQL语言的 ...

  7. 20155334 实验三 敏捷开发与XP实践

    实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以 ...

  8. 2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现

    2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现 学习pwd命令 通过man命令查看pwd命令的功能 由图可知pwd命令的用途是显示工作目录的路径名称.pwd 命令 ...

  9. 【LG4067】[SDOI2016]储能表

    [LG4067][SDOI2016]储能表 题面 洛谷 题解 这种$n$.$m$出奇的大的题目一看就是数位$dp$啦 其实就是用一下数位$dp$的套路 设$f[o][n][m][k]$表示当前做到第$ ...

  10. windows下安装,配置redis以及可视化客户端redisClient的安装及基本使用

    一. Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情 ...