路由器如何理解 ACL 中要阻止的第 4 层端口号?当在路由器/L3 接口上应用用于阻止具有特定端口号的 TCP/UDP 流量的 ACL 时,路由器将如何理解端口号,因为它在第 3 层工作。IP 标头包含指向 TCP/UDP 流量的协议字段,但无法引用端口号。
路由器上的 ACL 用于阻止 TCP/UDP 端口
Cisco 路由器(和其他路由器)可以根据 tcp 和 udp 端口过滤数据包。
当我们说路由器只是第 3 层设备时,我们指的是理想化的路由功能。实际上,制造商在他们的设备中添加了许多其他功能,例如模糊层之间界限的防火墙。
通常,所有路由器都具有标头检查功能,这只是解析 TCP 或 UDP 标头,因此在此解析或解码阶段之后,它们可以在 ACL 上搜索以接受或拒绝流。
在 IPv4 标头中,有协议字段(IPv6 具有执行相同操作的 Next Header 字段)。该字段具有IP 有效负载应在目标主机上发送到的协议号( 0to )。255IP 本身并不知道或关心有效载荷中的内容,只关心将其传递到何处,而该领域促进了这一点。路由器 ACL 很容易根据该字段完全阻止任何特定协议。
除此之外,路由器中的 ACL 进程可以了解一些协议(足以对其中一些协议进行解码)。由于 TCP 和 UDP 是最常见的传输协议,如果路由器具有这种能力,它们肯定会包含在该知识中,并且 ICMP 是 IP 不可或缺的一部分,因此它也将被包含在内。路由器制造商还可以包括解码其他协议的标头的知识。例如,这是 Cisco ISR 中 IPv4 ACL 进程了解的协议的列表:
Router1(config-ext-nacl)#deny ?
<0-255> An IP protocol number
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
igmp Internet Gateway Message Protocol
ip Any Internet Protocol
ipinip IP in IP tunneling
nos KA9Q NOS compatible IP over IP tunneling
object-group Service object group
ospf OSPF routing protocol
pcp Payload Compression Protocol
pim Protocol Independent Multicast
sctp Stream Control Transmission Protocol
tcp Transmission Control Protocol
udp User Datagram Protocol
请注意,您可以完全阻止任何传输协议 ( 0to 255),并且 ACL 进程具有一些协议的特定知识。(IPv4 本身还有其他选项,您可以过滤您可能已创建的对象组。)
其他路由器供应商可能或多或少有过滤传输协议的能力。此外,因为 ACL 进程是一个必须深入挖掘数据包的单独进程,它可能会对路由产生性能影响,因为每个数据包都需要根据可能相当大的 ACL 进行检查。
IP 协议类型、端口号、IP src/dst 地址、DSCP 等属性都只是数据包中预定偏移量的值。对于给定的网络设备,OSI 层的唯一真正意义在于解析信息以确定如何转发。路由器 (L3) 设备通常可能只解析数据包的目标 IP,但与 L4(或实际上是 L4-7)相关的所有信息通常作为有效负载处理。
也就是说,ACL 基本上只是在特定偏移处寻找值。按照惯例,我们知道从 L3 数据包开始的 12 个八位字节中,我们将找到一个源 IP,接下来的四个将是一个目标 IP。在此之前不久(从 L3 帧开始的 9 个八位字节),我们将找到 IP 协议号。如果该值对应于 TCP 的值,那么我们可以向前跳转固定数量的字节并找到源端口和目标端口 - 或者,实际上,几乎任何东西。按照惯例,高级协议的标头值和类型通常经过优化,以便网络设备轻松解析,但本质上并没有说即使 L1 或 L2 设备也无法查找应用层的信息。
现在,真正的问题是给定设备是否/如何理解协议状态等内容。例如,知道一个数据包是 TCP 并且在端口 443 上与知道所述数据包是现有会话的一部分,或者就此而言,知道哪个现有会话以及是否需要制作其他可变数据,这就是区别明智的决定。
换句话说,独立分析每个数据包的规则(即源 IP X?)与基于观察和处理先前数据包控制未来数据包处理方式的规则之间的区别(正确建立 TCP 会话并且流量是验证为所述会话的成员)。这就是为什么防火墙和负载均衡器可以充当路由器,但路由器通常不能做与防火墙和负载均衡器相同的事情……也是为什么路由器(或 L3 交换机)倾向于处理比防火墙和负载多数量级的流量的原因平衡器。