• 第一种隔离模型
         每一个虚拟机实例的网卡都有两个接口,一端接在虚拟机内部,一端接在宿主机内部,如上图所示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. Cloudera Manager 安装集群遇到的坑

    Cloudera Manager 安装集群遇到的坑 多次安装集群,但每次都不能顺利,都会遇到很多很多的坑,今天就过去踩过的坑简单的总结一下,希望已经踩了的和正在踩的童鞋能够借鉴一下,希望对你们能有所帮 ...

  2. hello,Python

    Python无疑是近年来程序语言届最闪亮的明星.2018年Python被TIOBE授予年度编程语言称号,在一月的排行榜中也雄踞第三位,打破了Java C C++长期以来所保持的三强局面 对比笔者以前学 ...

  3. XAMPP之Mysql启动失败

    启动XAMPP中的Mysql出现如下: 可能的原因是本地有多个MySQL,所以要在注册表编辑器中将imagePath改成XAMPP中的mysql的地址.(打开注册表编辑器:win+R,输入regedi ...

  4. springcloud 笔记-服务注册中心

    1.搭建springcloud服务注册中心需要添加eureka的依赖: <?xml version="1.0" encoding="UTF-8"?> ...

  5. 20155322 2016-2017-2 《Java程序设计》第9周学习总结

    20155322 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第9周学习的主要内容是课本的第十六.第十七.第十八章,老师的教学指导上主要要求学习以下知识点 ...

  6. bootstrap的Alerts中 可以放置p标签 设置 align="center" 用来设置文本居中

    效果

  7. 【Unity3d】MenuItem修饰的方法无法触发的可能原因

    遇到了MenuItem修饰的方法无法触发的情况,顺利解决. 类放在Editor目录下,该类下其他方法被MenuItem修饰可以触发. 后来发现我修饰的方法和该类下另一个方法重名了. 改方法名,问题解决 ...

  8. centos7下python3与python2共存并且开启py3虚拟环境

    因为下载视频需要用到python3环境,今天在我的win上安装下载工具死活安装不上去,在大盘鸡上一下就安装成功了...可能在win上不兼容吧...无奈只能在大盘鸡上进行折腾了,顺便几个笔记 由于大盘鸡 ...

  9. sqlserver(2012)清理tempdb

    当数据库运行时间长了之后,tempdb变得特别大,几十G,受不了啊:当然我们知道重启 SQL Server服务的话,tempdb数据库会自动重新创建的,从而使 tempdb 回归到初始大小.但是这是生 ...

  10. Linux 安装Zookeeper<单机版>(使用Mac远程访问)

    阅读本文需要先阅读安装Zookeeper<准备> 新建目录 mkdir /usr/local/zookeeper 解压 cd zookeeper压缩包所在目录 tar -xvf zooke ...