DHCP
监听:
通过
DHCP
监听,交换机能限制终端用户端口(非信任端口)只能够发送
DHCP
请求,并且丢弃来自用户端口的所有其他
DHCP
报文,例如
DHCP
提供
(OFFER)
相应报文等。信任端口能够发送或接受所有的
DHCP
报文。
带有选项
82
的
dhcp
监听是一种非常使用的机制,它能够避免
dhcp ddos
攻击或客户机配置不当所导致的网络异常。
DHCP
监听步骤:
1.
SW2(config)#ip dhcp snooping
2.
SW2(config)#ip dhcp snooping vlan 400
3.
SW2(config)#ip dhcp snooping information option
4.
SW2(config)#interface g0/10
SW2(config-if)#ip dhcp snooping trust
5.
SW2(config)#int range g0/9 , g0/11
SW2(config-if-range)#ip dhcp snooping limit rate 100
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
400
Insertion of option 82 is enabled
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Interface Trusted Rate limit (pps)
------------------------ ------- ----------------
GigabitEthernet0/9 no 100
GigabitEthernet0/10 yes unlimited
GigabitEthernet0/11 no 100
交换机内部有一个
IP
源绑定表(
IP Source Binding Table
)作为每个端口接受到的数据包的检测标准,只有在两种情况下,交换机会转发数据:
1.
所接收到的
IP
包满足
IP
源绑定表中
Port/IP/MAC
的对应关系
2.
所接收到的是
DHCP
数据包
其余数据包将被交换机做丢弃处理。
1.
IP
源绑定表可以由用户在交换机上静态添加
2.
或者由交换机从
DHCP
监听绑定表(
DHCP Snooping Binding Table
)自动学习获得。
交换机从
DHCP
报文中提取关键信息(包括
IP
地址,
MAC
地址,
vlan
号,端口号,租期等),并把这些信息保存到
DHCP
监听绑定表中。(以上这个过程是由
DHCP Snooping
完成的)。
IP
源防护只支持第
2
层端口,其中包括接入(
access
)端口和干道(
trunk
)接口。
IP
源防护的信任端口
/
非信任端口也就是
DHCP
监听的信任端口
/
非信任端口。对于非信任端口存在以下两种级别的
IP
流量安全过滤:
源IP
地址过滤
:默认情况下,如果端口在没有存在
IP
源绑定条目的情况下启用了
IP
源防护功能,默认的
PACL
将拒绝端口的所有流量(实际上是除
DHCP
报文以外的所有
IP
流量)。配置:
SW2(config)#int g0/9
SW2(config-if)#ip verify source
源IP
和源MAC
地址过滤
:当以
IP
和
MAC
地址作为过滤的时候,为了确保
DHCP
协议能够正常的工作,还必须启用
DHCP
监听选项
82
。
对于没有选项
82
的数据,交换机不能确定用于转发
DHCP
服务器响应的客户端主机端口。相反地,
DHCP
服务器响应将被丢弃,客户机也不能获得
IP
地址。
注:交换机使用端口安全(
SW2(config-if)#switchport port-security
)来过滤源
MAC
地址。
当交换机只使用
“IP
源地址过滤
”
时,
IP
源防护功能与端口安全功能是相互独立的关系。
端口安全是否开启对于
IP
源防护功能来说不是必须的。
如果同时开启,则两者也只是一种宽松的合作关系,
IP
源防护防止
IP
地址欺骗,端口安全防止
MAC
地址欺骗。而当交换机使用
“
源
IP
和源
MAC
地址过滤
”
时,
IP
源防护功能与端口安全功能是就变成了一种
“
集成
”
关系,更确切的说是端口安全功能被集成到
IP
源防护功能里,作为
IP
源防护的一个必须的组成部分。在这种模式下,端口安全的违规处理(
violation
)功能将被关闭。对于非法的二层报文,都将只是被简单的丢弃,而不会再执行端口安全的违规处理了。
IP
源防护功能不能防止客户端
PC
的
ARP
攻击。
ARP
攻击问题必须由
DAI
功能来解决。如果要支持
IP
源防护功能,必须是
35
系列及以上的交换机。
2960
目前不支持该功能。
Switch#show ip dhcp snooping binding
Switch#show ip source binding
Switch#show ip verify source
ip dhcp snooping information option allow-untrusted
IP
源防护只针对非信任端口起作用,对信任端口不起作用。所以不需要为接在信任端口上的主机添加静态
IP
源绑定,其依然可以正常通信。
IP
源绑定能阻止非信任端口上的客户端以静态指定
IP
地址的方式接入网络。
这些客户端将无法通信,除非为其手工添加静态
IP
源绑定条目。
说明:本例中采用
“
源
IP
和源
MAC
地址过滤
”
模式,采用该模式需要注意以下三点:
(
1
)交换机必须对客户端的
DHCP
请求插入选项
82
信息,即必须配置
ip dhcp snooping information option
命令(默认即为开启)。对于没有插入选项
82
的
DHCP
请求,交换机不能确定用于转发
DHCP
服务器响应的客户端主机端口。相反地,
DHCP
服务器响应将被丢弃,客户机也不能获得
IP
地址。
DHCP
回复包因为找不到目标端口而被交换机丢弃了。
(
2
)所使用的
DHCP
服务器必须支持利用
DHCP
选项
82
分配
IP
地址的功能,否则客户端将无法获得
IP
地址(
debug
信息类似第(
1
)项所述)。像
Win2003
,
Cisco IOS 12.2
等作为
DHCP
服务器时都不支持利用
DHCP
选项
82
来分配
IP
地址。本例中如果采用
12.2
版本的
IOS
,将出现客户端无法获得
IP
地址的情况。
Cisco IOS
从版本
12.3
(
4
)
T
开始支持利用选项
82
分配
IP
地址。
最简单的方法,看
IOS
是否支持命令
ip dhcp use class
。
(
3
)必须在端口下同时配置
switchport port-security
命令。
若没有该命令,本模式的最终效果与
“
源
IP
地址过滤
”
模式将相同。
如果使用
DHCP
获得地址,在交换机上需先启动
ip dhcp snooping verify mac-address
命令,客户端通过服务器获得地址,这样交换机记录客户端
ip
和
mac
,并且只对该接口下匹配的
ip
和
mac
的流量进行放行,端口下同时配置
switchport port-security
命令或者
ip verify source port-security
。
将
IP
源防护应用于
3560
下联的
trunk
接口上,该接口为非信任接口。由于
2960
没有
IP
源防护功能,所以从
2960
过来的数据报文是有可能存在
IP
欺骗攻击的。在
3560
的
trunk
口上应用
IP
源防护将可以把攻击隔绝在这里,使受攻击的范围减小到最小。但由于
2960
本身没有该功能,所以接在
2960
上的各个主机之间仍有可能存在攻击行为。对有防护能力的交换机,级联时级联端口可以选为
ip dhcp snooping trust.
实例:
pc < -- > Gig0/9
(
3560
)
Gig0/11 < -- > DHCP-server
(
3560
)
1.
试验中用的
dhcp-server-IOS
是
12.2
版本,不支持选项
82
分配
ip
地址,因此为了支持选项
82
分配
ip
地址,做
dhcp-server
的交换机
3560
一定要开
ip dhcp snooping
(可以不指定
vlan
,可不配置
ip dhcp snooping information option
),否则无法对
DHCP option82
进行处理,进行传输的交换机丢弃该包,客户端
pc
也收不到
dhcp
包。
2.
dhcp-server
对收到
DHCP
请求的端口要打开
ip dhcp snooping trust
(接口级命令)或者使用全局命令
ip dhcp snooping information option allowed-untrusted
,使
dhcp
请求进入该端口。接入层交换机连接
pc
端口应该设置为
ip dhcp snooping untrust
snooping �Cswitch
主要配置:
Switch#sh run
ip dhcp snooping vlan 40
ip dhcp snooping
!
interface GigabitEthernet0/9
switchport access vlan 40
ip dhcp snooping limit rate 100
interface GigabitEthernet0/11
switchport access vlan 40
no cdp enable
ip dhcp snooping trust
interface Vlan40
ip address 192.168.10.2 255.255.255.0
DHCP-server#sh run
no ip dhcp conflict logging
ip dhcp excluded-address 192.168.10.1 192.168.10.2
!
ip dhcp pool pool1
network 192.168.10.0 255.255.255.0
dns-server 192.168.2.2
default-router 192.168.10.2
!
no ip dhcp snooping information option
ip dhcp snooping
!
interface GigabitEthernet0/1
ip dhcp snooping trust
!
interface Vlan1
ip address 192.168.10.1 255.255.255.0
查看传输交换机
3560
和
dhcp
服务器
3560debug
信息:
10:26:53: DHCP_SNOOPING: received new DHCP packet from input interface (GigabitEthernet0/9)
10:26:53: DHCP_SNOOPING: process new DHCP packet, message type: DHCPDISCOVER, input interface: Gi0/9, MAC da: ffff.ffff.ffff, MAC sa: 000f.fee6.f2a2, IP da 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.fee6.f2a2
10:26:53: DHCP_SNOOPING: add relay information option.
10:26:53: DHCP_SNOOPING_SW: Encoding opt82 in vlan-mod-port format
10:26:53: DHCP_SNOOPING: binary dump of relay info option, length: 20 data:
0x52 0x12 0x1 0x6 0x0 0x4 0x1 0x90 0x1 0x9 0x2 0x8 0x0 0x6 0x0 0x21 0x56 0x47 0xCD 0x80
10:26:55: DHCP_SNOOPING: received new DHCP packet from input interface (GigabitEthernet0/11)
10:26:55: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Gi0/11, MAC da: 000f.fee6.f2a2, MAC sa: 0021.56f8.0a48, IP da: 192.168.10.4, IP sa: 192.168.10.3, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.4, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.fee6.f2a2
10:26:55: DHCP_SNOOPING: direct forward dhcp reply to output port: GigabitEthernet0/9.
10:26:55: DHCP_SNOOPING: received new DHCP packet from input interface (GigabitEthernet0/9)
10:26:55: DHCP_SNOOPING: process new DHCP packet, message type: DHCPREQUEST, input interface: Gi0/9, MAC da: ffff.ffff.ffff, MAC sa: 000f.fee6.f2a2, IP da: 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr:000f.fee6.f2a2
10:26:55: DHCP_SNOOPING: add relay information option.
10:26:55: DHCP_SNOOPING_SW: Encoding opt82 in vlan-mod-port format
10:26:55: DHCP_SNOOPING: binary dump of relay info option, length: 20 data:
0x52 0x12 0x1 0x6 0x0 0x4 0x1 0x90 0x1 0x9 0x2 0x8 0x0 0x6 0x0 0x21 0x56 0x47 0xCD 0x80
10:26:55: DHCP_SNOOPING_SW: bridge packet get invalid mat entry: FFFF.FFFF.FFFF, packet is flooded to ingress VLAN: (400)
10:26:55: DHCP_SNOOPING: received new DHCP packet from input interface (GigabitEthernet0/11)
10:26:55: DHCP_SNOOPING: process new DHCP packet, message type: DHCPACK, input interface: Gi0/11, MAC da: 000f.fee6.f2a2, MAC sa: 0021.56f8.0a48, IP da: 192.168.10.4, IP sa: 192.168.10.3, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.4, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.fee6.f2a2
10:26:55: DHCP_SNOOPING: add binding on port GigabitEthernet0/9.
10:26:55: DHCP_SNOOPING: added entry to table (index 118)
10:26:55: DHCP_SNOOPING: dump binding entry: Mac=00:0F:FE:E6:F2:A2 Ip=192.168.10.4 Lease=86400 ld Type=dhcp-snooping Vlan=400 If=GigabitEthernet0/9
10:26:55: DHCP_SNOOPING: direct forward dhcp reply to output port: GigabitEthernet0/9.
10:26:57: ICMP: echo reply sent, src 192.168.10.1, dst 192.168.10.4
10:26:57: ICMP: echo reply sent, src 192.168.10.1, dst 192.168.10.4
10:26:57: ICMP: echo reply sent, src 192.168.10.1, dst 192.168.10.4
10:27:24: DHCP_SNOOPING: checking expired snoop binding entries
10:46:30: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Gi0/11, MAC da: ffff.ffff.ffff, MAC sa: 0021.56f8.0a48, IP da: 255.255.255.255, IP sa: 192.168.10.3, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.4, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.fee6.f2a2
10:46:30: DHCP_SNOOPING: process new DHCP packet, message type: DHCPACK, input interface: Gi0/11, MAC da: ffff.ffff.ffff, MAC sa: 0021.56f8.0a48, IP da: 255.255.255.255, IP sa: 192.168.10.3, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.4, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.fee6.f2a2
本文出自 “沉” 博客,谢绝转载!