本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,欢迎大家关注,二维码文末可以扫。

01 准备环境

环境:ubuntu 16.04 环境(物理 or 虚拟)

确认 CPU 是否支持虚拟化:

# egrep -o '(vmx|svm)' /proc/cpuinfo
# vmx

如果不支持,开启 KVM 嵌套虚拟化之后再重启。

1.1 安装 KVM 环境

sudo apt-get install -y qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan

1.2 安装 Ubuntu 图形化界面

sudo apt-get install -y xinit gdm kubuntu-desktop

02 创建 KVM 虚拟机

使用 virt-manager 创建 KVM 虚拟机,方法比较简单,由于篇幅有限,大家可以查阅相关资料自行了解。

创建完之后用 virsh list --all 查看创建的 VM:

Id    Name                           State
-----------------------------------------------------     kvm1                           shut off-     kvm2                           shut off-     kvm3                           shut off

我们的实验拓扑如下:

图中创建了 2 个 Linux Bridge:brvlan1 和 brvlan2,宿主机的物理网卡 eth0 抽象出两个虚拟设备 eth0.1 和 eth0.2,也就是两个 VLAN 设备,它们分别定义了两个 VLAN:VLAN1 和 VLAN2。挂接到两个 Bridge 上的网络设备自动加入到相应的 VLAN 中。VLAN1 接两个 VM,VLAN 接一个 VM。

实验的目的是要验证属于同一个 VLAN1 中 VM1 和 VM2 能 ping 通,而属于不同 VLAN 中的 VM ping 不通。

03 实验开始

3.1 配置 VLAN

编辑 /etc/network/interfaces,加入两个 Bridge 和两个 VLAN 设备的配置,如下:

# The primary network interface
auto ens33
iface ens33 inet dhcpauto ens33.1
iface ens33.1 inet manualvlan-raw-device ens33auto brvlan1
iface brvlan1 inet manualbridge_stp offbridge_waitport 0bridge_fd 0bridge_ports ens33.1auto ens33.2
iface ens33.2 inet manualvlan-raw-device ens33auto brvlan2
iface brvlan2 inet manualbridge_stp offbridge_waitport 0bridge_fd 0bridge_ports ens33.2

注意,这里务必和自己电脑的接口名称统一,比如我这里叫 ens33,就配 ens33.1 和 ens33.2 的 VLAN 设备,当然你也可以改成 eth0 的形式。

重启宿主机,ifconfig 查看网络接口:

brctl show 查看当前 Linux Bridge 的配置,ens33.1 和 ens33.2 分别挂载 brvlan1 和 brvlan2 上了。

# brctl show
bridge name bridge id       STP enabled interfaces
brvlan1     8000.000c298c57e8   no      ens33.1
brvlan2     8000.000c298c57e8   no      ens33.2
virbr0      8000.000000000000   yes

3.2 配置 VM

我们先配置 VM1,启动 virt-manager,在图形界面中将 VM1 的虚拟网卡挂到 brvlan1 上:

同样的方式配置 VM2 和 VM3,VM2 也配到 brvlan1 上,VM3 配到 brvlan2 上。

3.3 查看 VM 配置

virsh start xxx 启动 3 个 VM:

# virsh start kvm1
# virsh start kvm2
# virsh start kvm3

再通过 brctl show 查看 Bridge,这时发现 brvlan1 下接了 vnet0 和 vnet1,brvlan2 下接了 vnet2:

# brctl show
bridge name bridge id       STP enabled interfaces
brvlan1     8000.000c298c57e8   no      ens33.1vnet0vnet1
brvlan2     8000.000c298c57e8   no      ens33.2vnet2
virbr0      8000.000000000000   yes

通过 virsh domiflist xxx 确认这就是 VM 的虚拟网卡:

# virsh domiflist kvm1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     brvlan1    rtl8139     52:54:00:b3:dd:3a# virsh domiflist kvm2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet1      bridge     brvlan1    rtl8139     52:54:00:b7:4f:ef# virsh domiflist kvm3
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet2      bridge     brvlan2    rtl8139     52:54:00:d8:b8:2a

04 验证

为了验证相同 VLAN 之间的连通性和不同 VLAN 之间的隔离性,我们为 3 个 VM 都配置同一网段的 IP。

使用 virt-manager 进入 VM console 控制面。

配置 VM1 的 IP:

ifconfig eth0 192.168.100.10 netmask 255.255.255.0

配置 VM2 的 IP:

ifconfig eth0 192.168.100.20 netmask 255.255.255.0

配置 VM3 的 IP:

ifconfig eth0 192.168.100.30 netmask 255.255.255.0

使用 VM1 ping VM2 能 ping 通,VM2 ping VM3 不能 ping 通。

验证完毕。

大家如果有兴趣,可以抓个包看看,在发送 ping 包之前,需要知道对方的 MAC 地址,所以会先在网络中广播 ARP 包。ARP 是二层协议,VLAN 的作用就是隔离二层的广播域,ARP 包自然就不能在不同 VLAN 中流通,所以在相同 VLAN 中,通信双方能够拿到对方的 MAC 地址,也就能 ping 通,不同 VLAN 反之。


公众号后台回复“加群”,带你进入高手如云交流群

我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。

Linux 系统下实践 VLAN相关推荐

  1. Linux系统下操作的常用快捷键

    Linux系统下操作的常用快捷键     Ubuntu基本快捷键(可能有重复.不全)欢迎指正 * 打开主菜单 = Alt + F1 类似Windows下的Win键,在GNOME中打开"应用程 ...

  2. linux进程创建心得体会,Linux系统下计算机C语言编程心得体会

    摘    要:C语言编程是目前计算机领域中应用较为广泛的编程语言, 很多信息系统都基于C语言编程实现.Linux系统是免费且可以自由传播的操作系统, 支持多用户.多平台应用, 实际生活中应用也较为广泛 ...

  3. [译] APT分析报告:01.Linux系统下针对性的APT攻击概述

    这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助.第一篇文章主要分享Linux系统下针对性的APT攻击及技术要点,并 ...

  4. Linux系统下计算机C语言的编程技巧

    C语言在多程序编辑中发挥着基础性作用,并在国际范围得到了全面应用.科技的蓬勃发展,使得人们更加重视C语言技术,并对C语言提出更多的要求.但Linux系统是最主要的操作系统之一,基于此开展C语言编程工作 ...

  5. C语言——归并排序,单线程,多线程(Linux系统下实现)两种实现方法

    文章目录 前言 一.什么是归并排序? 二.涉及到的函数及功能 1.计算程序运行时间 2.生成随机数 3.定义动态数组 4.有关Linux多线程的函数 三.串行与并行(多线程)归并排序的代码实现 1.实 ...

  6. 属于Linux下的编辑器,vi编辑器是所有linux系统下标准的编辑器,它可分为哪些状态?()...

    vi编辑器是所有linux系统下标准的编辑器,它可分为哪些状态?() 更多相关问题 [单选题]2.三角形的三个内角之和是( )度 A. 180 B. 160 C. 170 D. 150 [单选题]下图 ...

  7. Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(三)

    七.可靠性UDP的优化细节 4.5章节中,我们提到了KCP本身的优化提高,由于可靠性UDP是这个方案是否优秀的关键,而各种可靠UDP协议中都有TCP算法的影子,所以下面我们再仔细的谈一下这个部分.按照 ...

  8. linux系统下的ps指令详解

    文章目录 一.引言 二.初探ps指令 三.第二部分:进程信息解读 四.第三部分:进程过滤与排序 五.第四部分:实例应用与总结 一.引言 在Linux系统中,有许多命令可以帮助我们监控和管理系统中正在运 ...

  9. Linux系统下的系统资源和网络资源控制

    title: Linux系统下的系统资源和网络资源控制 categories:- 学习 tags:- Linux- 系统管理- 网络管理 今日珠宝 宝格丽BVLGARI系列戒指 18K玫瑰金材质镶嵌7 ...

  10. 计划任务执行php文件,linux系统下添加计划任务执行php文件方法

    在web开发过程中,经常需要设定一些定期执行的任务,比如商品定时上下架.我们以php文件为例,讲解linux下的计划任务. 方法/步骤 1.打开linux系统命令行界面. 在命令行界面中输入如下命令: ...

最新文章

  1. C语言----字符串左旋
  2. 《说服力——让你的PPT会说话》读书笔记02
  3. php作业90,php中文网移动端-第九期(191107作业)
  4. ES6-24 生成器与迭代器的应用
  5. golang mysql条件查询_mysql – 将变量传递给GoLang查询
  6. Vue.js起手式+Vue小作品实战
  7. cookie的封装删除修改
  8. 那些年Android黑科技②:欺骗的艺术
  9. 听听周报-谷歌发布首款真无线耳机 Pixel Buds|苹果发布全新头戴式耳机 Beats Solo Pro
  10. 如何把桌面计算机和回收站隐藏,如何隐藏电脑桌面回收站?隐藏桌面回收站方法介绍...
  11. 每个星座的出生日期php,php根据出生日期计算 年龄/生肖/星座
  12. 一次下载多个文件的解决思路-JS
  13. Redis - 0、几款可视化工具
  14. Python实验及注意点总结
  15. 心田花开教学让你快速掌握心田上的百合花写法与修辞手法运用
  16. 计算机专业省赛一等奖有什么好处,竞赛省一等奖有什么用
  17. 跟燕青学Nacos系列03-Nacos配置管理模型
  18. cisco b 系列 c 系列 服务器,UCS B系列/C系列/S系列/HyperFlex系列组合,与Cisco VIC卡绑定选项...
  19. Excel怎么批量将最后一个字符设置为上标
  20. 使用腾讯云服务器的windows系统搭建CSGO服务器

热门文章

  1. Linux驱动(并发):02---编译乱序、执行乱序(屏障API(bm、rmb、wmb、__iormb、__iowmb))
  2. 研发人员提高自身水平促进网络棋牌游戏发展
  3. 前端面试录音整理(私人版)
  4. 深圳率先立法:支持L3自动驾驶上路,凡公开道路皆可行
  5. html画表盘 随时间转动,Html5画钟表盘/指针实时跳动
  6. qq邮箱foxmail imap服务器,foxmail登录imap服务器提示失败。怎么办?
  7. Windows 11 将“扼杀”第三方浏览器?Firefox 绝地反击!
  8. HDU6184 Counting Stars(三元环计数)
  9. mysql跨库复制_mysql跨库表结构和数据复制
  10. goldwave教程分享:用GoldWave进行音量调节