• 第一种隔离模型
         每一个虚拟机实例的网卡都有两个接口,一端接在虚拟机内部,一端接在宿主机内部,如上图所示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. Hive(10)-文件存储格式

    Hive支持的存储数据的格式主要有:TEXTFILE .SEQUENCEFILE.ORC.PARQUET 一. 列式存储和行式存储 左边为逻辑表,右边第一个为行式存储,第二个为列式存储 1. 行式存储 ...

  2. 一步一步学习大数据:Hadoop 生态系统与场景

    Hadoop概要 到底是业务推动了技术的发展,还是技术推动了业务的发展,这个话题放在什么时候都会惹来一些争议. 随着互联网以及物联网的蓬勃发展,我们进入了大数据时代.IDC预测,到2020年,全球会有 ...

  3. PHP-学习笔记-进阶

    PHP-学习笔记-进阶 PHP类和对象之定义类的方法 访问控制的关键字代表的意义为: public:公开的 protected:受保护的 private:私有的 我们可以这样定义方法: class C ...

  4. 数据结构与算法-图的最短路径Dijkstra

    一  无向图单源最短路径,Dijkstra算法 计算源点a到图中其他节点的最短距离,是一种贪心算法.利用局部最优,求解全局最优解. 设立一个visited访问和dist距离数组,在初始化后每一次收集一 ...

  5. scala(9) Monad

    一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已.这句话涉及到了几个概念:单子(Monad),自函子(Endo-Functor),幺半群(Monoid),范畴(category). 范 ...

  6. 【常用】IDEA常用快捷键与操作

    以下出场顺序为开始学习IDEA时遇到的顺序,并非实际中的使用频率,最终版待整理 0.“ctrl+space(由于习惯问题我已经更改为alt+/)”——基本提示 “ctrl+shift+space”—— ...

  7. 20155211 2016-2017-2 《Java程序设计》第2周学习总结

    20155211 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 通过对教材的阅读,我理解到Java中对于整数,浮点数等类型的定义与c语言基本相同. 对字面常 ...

  8. 20145226夏艺华 《Java程序设计》第2周学习总结

    教材学习内容总结 学习目标 了解Java编程风格 认识Java的类型与变量 掌握Java流程控制的方法(分支.循环) 教材第三章内容总结 认识类型与变量 学习运算符的基本使用 了解类型转换细节 运用基 ...

  9. SPOJ11469 SUBSET

    题面 Farmer John's owns N cows (2 <= N <= 20), where cow i produces M(i) units of milk each day ...

  10. Drupal7 针对特定条件才显示区块

    当D7中开启PHP filter模块. Text format就会多出“PHP Code”选项. 而且,新建block时也会多出"Pages on which PHP code return ...