Trunk 口  思科称为:native VLAN  华为称为:PVID   说白了就是Trunk端口本身所属的VLAN,因为,Trunk端口要"透传"多个VLAN的流量,其本身不属于任何一个VLAN。但是Trunk端口在交换机内部要与一个VLAN ID关联,此VLAN ID就是 思科的:native VLAN  华为的:PVID。

Trunk口的native VLAN 是不带标签通过的。到对端后会打上对端端口响应的native VLAN标签。如果两端native VLAN不一致就会发生VLAN跳跃问题(VLAN hopping)!
思科有CDP 思科发现协议(Cisco Discovery Protocol)若两端的trunk端口native VLAN 配置不一致会发出相关告警。
 
 
由于802.1Q规范并没有禁止多个连贯的标记(tag)串连起来。事实上QinQ技术也正是利用这一点缓解了单层VLAN4096个的限制。提供了4096*4096中可能的组合较好扩展了分配给每个VLAN ID的12比特的限制。   但是这一特性也成为了一下攻击的基础。
 
    双嵌套(double-nested)VLAN攻击
          注意:仅当Trunk口的native VLAN 与攻击者所在端口的VLAN ID 一致且分别属于用Trunk口互联的两台交换机下时,攻击才会生效。
 
                攻击者<--->交换机1<--->交换机2<--->受害者
 
         利用的就是Trunk口的native VLAN 是不带标签通过的。到对端后会打上对端端口响应的native VLAN标签。的特性。
         1、在攻击者发出以太网帧时就带上2个tag。外层tag与攻击者接入端口的tag一致。内层tag与受害者所在VLAN一致。
         2、当该攻击帧进入交换机1后通过交换机1~2之间的Trunk 口时由于与Trunk口nativeVLAN一致所以剥离外层的tag标签 此时攻击帧还剩下一层与受害者VLAN相同的内层标签。
         3、当交换机2Trunk端口收到攻击帧后发现攻击帧VLAN与受害者VLAN相同 按照该VLAN转发。  至此完成了跨越VLAN的攻击。
 
         在协议立场上看,并没有违规事件——讲802.1Q的帧头部串接起来并不违法。
          有三种方法可以来组织该攻击:
         1、确保不将native VLAN分配给任何访问端口。
 
         2、从Trunk中清除native VLAN(不建议使用)。
 
         3、强制Trunk上的所有流量都携带一个tag(首选的方法)。 警告:当与不支持该方法的交换机互相通信时native VLAN上的通信会中断!
              配置:不同版本可以在全局或端口下配置
                  全局 CiscoSwitch(config)#vlan dot1q tag native
                  端口 CiscoSwitch(config)#interface GigabitEthernet2/1
                         CiscoSwitch(config-if)#switchport trunk native vlan tag
 
       此外就是一些针对VLAN透传相关协议的攻击
 
       动态中继协议DTP,是 VLAN 组中思科的私有协议,主要用于协商两台设备间链路上的中继过程及中继封装 802.1Q 类型。DTP的用途是取代动态ISL(Dynamic ISL,DISL)。
        针对性的在连接普通用户的LAN口配置成access端口并将它们植入一个static(静态)VLAN.这样该端口会静默的丢弃DTP帧。
 
 
 
 
 

另外 阅读华为的文档时  基于MAC 基于子网 基于策略等VLAN划分都有如下描述:

  • 当收到的报文为untagged报文时,会以报文的源MAC地址为根据去匹配MAC-VLAN表项。如果匹配成功,则按照匹配到的VLAN ID和优先级进行转发;如果匹配失败,则按其它匹配原则进行匹配。

  • 当收到的报文为tagged报文时,处理方式和基于接口的VLAN一样:如果接口允许携带该VLAN标记的报文通过,则正常转发;如果不允许,则丢弃该报文。
     
    若使用软件自行打上tag则可以不需要基于MAC 基于子网 基于策略匹配 可骗过交换机。(我推测的)所以....还是老老实实的做基于端口的VLAN划分吧
     

交换机安全学习笔记 第四章 VLAN的更多相关文章

  1. [Python学习笔记][第四章Python字符串]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...

  2. o'Reill的SVG精髓(第二版)学习笔记——第四章

    第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...

  3. 交换机安全学习笔记 第五章 DHCP缺陷攻击

    关于DHCP攻击有如下几类攻击方式:   一.耗尽DHCP地址池    通过随机生成源MAC地址,然后伪造DHCPDISCOVER数据包.耗尽DHCP服务器地址池.   免费的攻击工具:  Yersi ...

  4. Java 学习笔记 ------第四章 认识对象

    本章学习目标: 区分基本类型与类类型 了解对象与参考的关系 从打包器认识对象 以对象观点看待数组 认识字符串的特性 一."=" 和 "==" 当=用于基本类型时 ...

  5. 《metasploit渗透测试魔鬼训练营》学习笔记第四章—web应用渗透

    继续来学习metasploit...记好笔记是很重要的,下面开始正文: 二.WEB应用渗透技术     1.WEB应用渗透基础知识        先介绍WEB应用攻击的主要类型(大致介绍,具体请自行查 ...

  6. 交换机安全学习笔记 第六章 IPV4 ARP攻击

    ARP欺骗攻击 常用工具:  dsniff(Linux/windows).ettercap(Linux/windows).cain(仅windows). ARP欺骗攻击的目的是嗅探发往某主机的所有IP ...

  7. c语言学习笔记第四章——字符串和格式化输入、输出

    B站有视频演示 本章学习printf函数的输入输出,字符串的定义与实用. 字符串 字符串(character string)是一个或多个字符的序列,如下所示: "Zing went the ...

  8. [core java学习笔记][第四章对象与类]

    4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); sta ...

  9. The Road to learn React书籍学习笔记(第四章)

    高级React组件 本章将重点介绍高级 React 组件的实现.我们将了解什么是高阶组件以及如何实现它们.此外,我们还将深入探讨 React 中更高级的主题,并用它实现复杂的交互功能. 引用 DOM ...

随机推荐

  1. sys.argv的意义及用法

    sys.argv的意义 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个) 下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行 新建一个t ...

  2. PuppeteerSharp体验之旅

    public static async Task<string> LogInAsync() { try { string ResultCookies = ""; //获 ...

  3. python3基础:基本语句

    http://www.cnblogs.com/qq21270/p/4591318.html  字符串.文本文件 http://www.cnblogs.com/qq21270/p/7872824.htm ...

  4. oracle(转)

    Oracle数据库基本操作 1.概述 Oracle数据库客户端一般需要安装在服务器上,可以在服务器端操作,一般我们可以用sql developer工具远程连接到数据库,先行建立数据库,然后对表进行增删 ...

  5. CentOS6.5卸载自带的Mysql软件

    现想要在这家的服务器上安装Mysql集群,发现之前安装操作系统的时候顺便把MySql默认安装,所以需要将它先卸载掉. 1,查找已安装的mysql版本 [root@leader ~]# rpm -qa| ...

  6. [笔记]MongoDB 二(Linux下MongoDB API C++编程)

    一.连接类 DBClientConnection,派生自DBClientBase.DBClientBase类是实现query, update, insert, remove等功能. 构造函数:DBCl ...

  7. Python set 用法

    (原文链接)http://blog.csdn.net/business122/article/details/7541486# python的set和其他语言类似, 是一个无序不重复元素集, 基本功能 ...

  8. 添加一个静态JAVA库

    LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory L ...

  9. Rust Linking With C Library Functions

    #[link(name = "c")] extern "C" { fn scanf(format: *const u8, ...); } fn main() { ...

  10. 多个swiper使用样式出了问题

    observer:true,//修改swiper自己或子元素时,自动初始化swiper observeParents:true,//修改swiper的父元素时,自动初始化swiper 不行直接设  w ...