Cisco 交换机 (Cayalyst 2960-X):如何在访问列表中添加规则,当特定 MAC 地址出现时过滤掉 l2tp 数据包?

网络工程 思科 ipv4 cisco催化剂 ip cisco 命令
2021-07-26 18:06:19

我使用的是 Cayalyst 2960-X 系列 Cisco 交换机,它的 2 个 SFP 在 2 个主机 (A、B) 之间连接。

A、B 分别连接到交换机的 1,2 端口。主机使用基于 l2tp 的协议进行通信。如您所知,l2tp是一种链路层协议。

作为源自目的地为 B 的主机 A 的 l2tp 流量的一部分,我想拒绝到达端口 2/主机 B 的数据包很少。

我想丢弃的数据包88:77:66:55:44:33在它们的 Ethernet 2 元数据中有一个源 MAC 地址,它是整个 l2tp 数据包的一部分(参见下面的字节布局)。

我想设置一个规则或访问列表,通过检查其以太网 2 属性来丢弃 l2tp 数据包,以防特定88:77:66:55:44:33MAC 地址出现在 SA 中。

我熟悉该mac access-list命令,但我看过的每本手册都明确指出 ACL 仅过滤non-IP protocols. 尽管如此,我尝试使用mac access-list,但确实没有帮助。

此外,我找到了Catalyst 2960-X 交换机安全配置指南,Cisco IOS Release 15.0(2)EX,在Restrictions for Configuring Network Security with ACLs它说部分

您不能将命名的 MAC 扩展 ACL 应用于第 3 层接口。

通过向下钻取并检查其以太网 2 Mac 地址数据来过滤 ip 协议是否可行?


通过嗅探 2 台主机之间的流量,我可以知道数据包具有以下字节布局(正如我在 Wireshark 上看到的那样):

 0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Ethernet 2 (14 Bytes)     |       IP(20 Bytes)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | IP  |L2TP 4B|HDLC 4B| Data                                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3个回答

您似乎对这个主题有些困惑。让我们从清理一些细节开始。

我熟悉 mac access-list 命令,但我看过的每本手册都明确指出 ACL 仅过滤非 IP 协议。

如果你稍微考虑一下,这是有道理的。IP 数据包不包含 MAC 地址,因此这将很困难。但是,IP 流量封装在 L2 协议中,通常是使用 MAC 地址的以太网。

您不能将命名的 MAC 扩展 ACL 应用于第 3 层接口。

再次,这是自然的。由于 MAC ACL 在 L2 上运行,因此无论如何他们都不会真正需要/想要它们在 L3 接口上。

但是,默认情况下 2960-X 上的接口是第 2 层接口,因此您可以将 MAC 访问列表应用于它们。

因此,这一系列命令应该会提供您想要的结果(使用 WS-C2960X-48FPS-L 上的第一个 SFP 端口,因此请根据需要进行调整):

! Create the ACL
mac access-list extended TestACL
deny host 8877.6655.4433 any
permit any any

! Now apply to the interface
interface Gi1/0/49
mac access-group TestACL in

根据评论进行编辑:如果您想排除源端口不正确,您可以将以下内容与上述 ACL 结合使用来阻止来自该 MAC 的所有流量从第二个 SFP 端口流出:

! Now apply to the interface
interface Gi1/0/50
mac access-group TestACL out

如果这不起作用,则 MAC 地址必须不正确,您需要提供更多信息。

无论 MAC 地址表是动态更新还是添加静态条目,ACL 都将起作用。但是,如果此 MAC 的动态条目在不同端口之间波动,则可以解释 ACL 未按预期工作的原因。此外,如果没有配置附加功能,静态条目将不会影响到达端口的流量,只会影响用于流量的目标端口。

最后,Wireshark 以红色突出显示的数据包并没有告诉我太多信息。不同版本的 Wireshark 使用了不同的着色规则,默认规则通常包括许多颜色为红色的匹配项,我们中的许多人使用我们自己的自定义规则。您需要提供更多细节或实际捕获,以便我们了解这究竟意味着什么。

我用来mac address-table static丢弃带有8877.6655.4433MAC 地址的数据包

显然,使用静态地址表条目是做这些事情的更可靠的方式。

Switch# configure terminal
Switch(config)# mac access-list extended maclist1
Switch(config-ext-macl)# deny 8877.6655.4433 any
Switch(config-ext-macl)# deny any 8877.6655.4433
Switch(config-ext-macl)# permit any any
Switch(config-ext-macl)# end
Switch(config)# interface gigabitethernet1/0/1
Switch(config-if)# mac access-group mac1 out
Switch(config)# interface gigabitethernet1/0/2
Switch(config-if)# mac access-group mac1 out
Switch(config-if)# end