通过此文档,你可以了解什么是静态/动态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