通过此文档,你可以了解什么是静态/动态MAC,如何解决2层MAC 地址欺骗攻击,以及如何解决单播泛洪。

通常,交换机会自动学习 MAC 地址,并记录其从哪里学习到的,如果不知道其目的地将泛洪出去。

此过程容易受到第 2 层 MAC 地址欺骗攻击,攻击者通过欺骗某个 MAC 地址来更改 MAC 地址表中的条目,处理这个问题的一个非常简单的方法是手动配置 MAC 地址表中的条目,静态条目将始终覆盖动态条目,可以指定 MAC 地址所在的接口或告诉交换机丢弃其流量。

看如下案例

为了证明这一点,我们只需要两个设备,生成一些流量的路由器和查看(和配置)MAC 地址表的交换机。配置如下:

R1(config)#interface fastEthernet 0/0

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.12.1 255.255.255.0

SW1(config)#interface vlan 1

SW1(config-if)#no shutdown

SW1(config-if)#ip address 192.168.12.2 255.255.255.0

我们将执行快速 ping 以生成一些流量,以便 SW1 可以了解 R1 的 FastEthernet 0/0 接口的 mac 地址:

R1#ping 192.168.12.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/4 ms

我们来看看MAC地址表:

SW1#show mac address-table dynamic vlan 1

Mac Address Table

——————————————-

Vlan Mac Address Type Ports

—- ———– ——– —–

1 001d.a18b.36d0 DYNAMIC Fa0/1

Total Mac Addresses for this criterion: 1

这是 R1 的 MAC 地址,动态学习。让我们把它变成一个静态条目:

SW1(config)#mac address-table static 001d.a18b.36d0 vlan 1 interface fastEthernet 0/1

使用 mac address-table static 命令创建静态条目后,下面是 MAC 地址表现在的样子:

SW1#show mac address-table static | include Fa0/1

1 001d.a18b.36d0 STATIC Fa0/1

它是一个静态条目,这会阻止我们将 R1 移动到 SW1 上的另一个接口,除非我们更改静态条目,就像之前提到的,我们也可以更改静态条目让它丢弃所有流量。这是如何做到的:

SW1(config)#mac address-table static 001d.a18b.36d0 vlan 1 drop

所有发往 R1 的 MAC 地址的帧将被丢弃:

R1#ping 192.168.12.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:

…..

Success rate is 0 percent (0/5)

由于我们的静态丢弃条目,我们的 ping 失败。

文章最后列出两台设备的配置:

hostname R1

!

ip cef

!

interface FastEthernet0/0

ip address 192.168.12.1 255.255.255.0

!

End

hostname SW1

!

interface Vlan1

ip address 192.168.12.2 255.255.255.0

!

mac address-table static 001d.a18b.36d0 vlan 1 drop

end