二层协议-最后补充

ARP

ARP报文格式

报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容
ARP报文格式

  • 以太网目的MAC:以太网目的MAC地址,发送ARP请求报文时,该字段为广播的MAC地址0xffff-ffff-ffff
  • 以太网源MAC:以太网源MAC地址
  • 帧类型:数据的类型,对于ARP请求或应答来说,该字段的值为0x0806
  • 硬件类型:对于以太网,该字段的值为1
  • 协议类型:发送方要映射的协议地址类型,对于IP地址,该字段的值为0x0800
  • 硬件地址长度:对于ARP请求或应答来说,该字段值为6
  • 协议地址长度:对于ARP请求或应答来说,该字段值为4。
  • OP:操作类型,1-ARP请求,2-ARP应答,3-RARP请求,4-RARP应答
  • 源MAC:该源MAC地址与以太网首部中的以太网源MAC相同
  • 源IP:源IP地址
  • 目的MAC:目的MAC地址,发送ARP请求报文时,该字段为全0的MAC地址0x0000-0000-0000。
  • 目的IP:目的IP地址

分类

  1. 正向ARP:将IP解析成MAC
  2. 反向ARP(RARP):将MAC解析成IP,用于无盘工作站
  3. 代理ARP(ARP Proxy):
    两个互访的节点在同一网段,但广播的ARP报文无法到达,需要使用代理ARP
    1. Vlan间代理:用于super vlan
      Vlan间代理
    2. Vlan内代理:同一广播域,但是配置了二层或者三层隔离,双方都需要通过网关访问,双方封装的目的mac也是网关的mac
      Vlan内代理
    3. 路由式代理:PC1访问PC2,PC1首先会判断PC2的IP是否和自己在同一个广播域,如果在同一个广播域,那么PC1会向中间的路由器发送ARP请求。如果路由器开启代理ARP的功能后,收到PC1的ARP请求,会检查自己的路由表中该路由是否可达,如果可达,路由器会将自己的Mac回复给PC1
      路由式代理
  4. 免费ARP:IP地址冲突检测;用于通告一个新的MAC地址;在VRRP备份组中用来通告主备发生变换

MAC地址表和ARP表的区别
MAC地址表,老化时间300s(5m),二层转发,接口和MAC关联;ARP地址表:老化时间1200s(20m),IP和MAC关联
交换机的一个接口是否可以关联多个MAC
可以。交换机A接口1连接交换机B接口2,交换机B上连接n台设备,此时交换机A的接口1可以学习到交换机B上连接的那n台设备的mac地址
交换机的多个接口是否可以关联一个MAC
不可以。否则mac地址震荡(flapping)
总结:一个接口对应多个mac,一个mac只能对应一个接口

特殊应用:在主机没有配置网关的情况下,使用代理ARP实现对外网的访问,即使用代理ARP来实现VRRP的功能,见下图
代理ARP特殊应用

ARP攻击

1. ARP泛洪攻击(拒绝服务攻击Dos)

攻击者发送大量的ARP报文,侵占设备ARP表项资源,导致系统资源耗尽,从而使正常用户业务受到影响。
可以通过配置ARP表项限制、ARP Miss消息限速、ARP表项严格学习、ARP报文限速来防止ARP泛洪攻击。

2. ARP欺骗攻击(中间人攻击)

攻击者通过发送伪造的ARP报文,恶意修改设备或网络内其他用户主机的ARP表项,造成用户或网络的报文通信异常。
可以通过配置ARP表项固化、ARP表项严格学习、发送免费ARP报文、动态ARP检测来防止ARP欺骗攻击。


MAC地址漂移

概念

设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。
正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。出现这种现象一般都意味着网络中存在环路,可以通过查看告警信息和漂移记录,快速定位和排除环路。

MAC地址漂移检测

原理

利用MAC地址出接口跳变的现象,检测MAC地址是否发生漂移

过程

在发生MAC地址漂移时,可以上报包括MAC地址、VLAN,以及跳变的接口等信息的告警。
其中跳变的接口即为可能出现环路的接口

防止MAC地址漂移

  1. 为端口配置静态MAC
  2. 为接口配置MAC地址学习优先级
  3. 禁止相同的优先级的接口发生MAC地址漂移

二层环路与三层环路的区别

环路原因

二层环路是由于物理拓扑出现环路,如3台交换机呈三角形连接。
三层环路一般物理拓扑有环路,并且设备之间路由表形成互指(物理拓扑不成环,2 台设备使用静态路由互指也可能成环,这种特殊情况除外)

二层设备和三层设备的工作行为区别

二层交换机工作行为

收到的数据帧查看二层头部,根据目的MAC地址转发

  1. 广播:
    目的MAC为全1
    收到广播报文后除了接收的端口外,向其余所有端口转发 (泛洪)
  2. 组播:
    目的MAC的第8位为1
    首先判断目的MAC是否本机要接受,如收到STP的BPDU,而自身也运行STP,此报文上送协议处理,不做转发;
    如果交换机自身没有运行STP,华为的交换设备也可以识别STP的数据帧,也不做转发
    假如此报文自身不需要接受,则处理方式为泛洪,如运行了IGMP SNOOPING则根据snooping表项转发。
  3. 单播:
    目的MAC的第8位为0
    如果目的MAC在自身MAC表中不存在,即未知单播,处理方式为泛洪
    如果目的MAC在自身 MAC表中存在,则向MAC表中的接口转发
    如果该接口等于报文的接收端口,则丢弃
    所以单播报文的处理方式中有三种形为:转发,泛洪,丢弃

三层设备工作行为

收到数据包查看三层目的IP,根据目的IP地址转发

  1. 广播:
    目的IP为全 1
    收到广播包,路由器会交给相应的协议去处理,比如DHCP、 RIP、ARP等都是广播的
  2. 组播:
    目的IP为224.0.0.0-239.0.0.0
    开启相关协议则转发,否则查看本路由器是否加入该组,如果加入了就接收,没有加入就丢弃
  3. 单播:
    目的IP在路由表中存在则按出端口转发,
    目的IP在路由表中不存在则丢弃,
    目的IP是自己的地址,则读取协议号上送协议处理

环路的影响

  1. 二层环路:
    广播风暴、数据帧复制和MAC地址震荡
    例如交换机收到广播帧、组播帧、未知单播帧,会采用泛洪形式处理,数据帧在转发时候产生了拷贝复制,数据帧无休止被转发,最终导致整个网络带宽资源被耗尽
  2. 三层环路:
    数据包会在设备之间有限的互相转发,因为在三层IP头部存在TTL字段,所以报文不会无休止转发

防环机制

  1. 二层防环
    STP、SMART-LINK等技术,或使用LACP链路捆绑、设备堆叠等技术,使物理拓扑上没有环路
  2. 三层防环:
    只要依靠路由协议自身的防环机制

总结

二层环路较易产生且环路产生的后果十分严重,需要运行破环机制经过计算,阻塞某些端口实现预防。
三层环路不容易产生且后果并不十分严重,每种路由协议都有比较完善的防环机制,三层环路比较容易发生在特殊的场景下,如双点双向路由引入等


交换机和路由器收到未知表项如何处理

交换机

根据收到的帧中目的MAC查找设备的MAC表项进行转发。
如果收到帧的目的MAC不在交换机的MAC表项中,交换机会向除了收到该帧的同VLAN所有端口进行泛洪。

路由器

路由器是根据收到报文的目的IP查找本地的路由表进行转发。
如果收到报文的目的IP无法找到相应的路由表项,则路由器会将该报文丢弃。

交换机如何识别二层转发和三层转发

  1. 交换机根据收到的单播帧的目的MAC来判断是进行二层转发或三层转发,当目的MAC是Vlanif对应的MAC时就是三层转发,否则就是二层转发。
  2. 收到组播帧,看自身交换机是否运行相应的组播协议,有运行就交给相应的协议处理,例如目的mac地址为01-80-c2-00-00-00提交给stp协议处理;目的mac地址为01-80-c2-00-00-14(15)提交给isis协议处理。
  3. 收到组播数据,如果有运行PIM组播协议,就根据(s,g)表项向下游接口转发,如果在交换 机上没有运行PIM协议,但是使能了igmp-snooping功能,根据snooping表象中的成员端口转发数据。
  4. 收到广播,目的IP为全1。交换机会交给相应的协议去处理,比如DHCP、RIP、ARP 等,三层设备是隔离广播域,不会丢弃广播报文

三层交换机与路由器的区别

交换谋快,路由谋转

硬件

三层交换机在网络收敛上慢于路由器并且抵抗网络震荡的能力也弱
三层交换机是通过交换芯片转发数据的,路由器则是通过cpu转发数据的

数据的处理方式

三层交换机在数据转发上的速度要优于路由器
三层交换机的首包通过cpu转发,同时通过arp协议建立交换芯片硬件表项(mac地址与ip地址的映射表),后续报文通过交换芯片直接硬件转发,即一次路由,多次交换,交换机的硬件三层表项中只包含了目的地址、目的ip对应的mac地址、出口vlan及端口。
路由器通过路由表选择路由后,将该路由下发到FIB(转发信息表)表中,数据到达路由器时,通过FIB表的最长匹配原则查表转发。

功能

路由器提供包括分组过滤、分组转发、优先级、复用、加密、 压缩和防火墙等功能,并且接口类型丰富,支持的三层功能强大,支持负载分担、链路备份、nat转换等,路由器在大型网络中的协议计算,路由表大小,收敛时间等都优于三层交换机。
三层交换机的优点在于可以加快局域网内数据的交换,并且加入路由功能也是为这个目的服务的。一般将三层交换机运用于网络的核心层和汇聚层。


ICMP的常见攻击与防患

ICMP泛洪攻击

利用频率极快的icmp报文,让被攻击者疲于应付
攻击者发送速度极快的ICMP报文,被攻击者就会徒劳的回复大量ICMP报文给虚假地址,最终消耗自身的系统资源,最终导致服务器停止相应。

设备针对ICMP泛洪攻击进行CAR限速,保证CPU不被攻击,保证网络的正常运行

Ping of Death 攻击

利用非常规巨包使被攻击者无法组包
攻击者发送大于65535字节的ip数据包给对方,被攻击者接收到全部分段并重组报文时总的长度超过了65535字节,导致内存溢出,系统会出现内存分配错误而导致TCP/IP堆栈崩溃,导致死机

需要在防火墙上配置允许通过的ICMP报文的最大长度,在防火墙收到大于此长度的数据包文之后将直接丢弃

Large-ICMP 攻击

利用巨包分片后需要组包,使被攻击者疲于应付
同Ping of Death类似,也是利用一些大尺寸的ICMP报文对系统进行的一种攻击,与ping of death 不同的是,Large-ICMP报文的长度不会超过IP 报文的最大长度65535。
但此数据包在传输的过程中会被分片或在分片之后发出,主机收到之后将进行数据包的重组, 重组数据包的过程非常消耗CPU资源,导致主机的资源被大量占用

启用分片报文攻击防范,设备实时检测出分片报文并予以丢弃或者限速处理,实现对本设备的保护

ICMP-Unreachable 攻击

攻击者向目标主机发送虚假的ICMP-Unreachable报文,干扰了目标主机的路由信息,影响了报文发送。

开启ICMP不可达报文攻击防范功能,即收到ICMP不可达报文将直接忽略,依旧认为该主机可达

ICMP-Redirect 攻击

和ICMP-Unreachable攻击类似,攻击者跨越网段向另外一个网络的目标主机发送虚假的重定向报文,以改变目标主机的路由表,干扰目标主机的路由信息,影响报文发送

启动ICMP重定向攻击防范后,设备将对ICMP重定向报文进行丢弃,并记录攻击日志