什么是DHCP?
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,前身是BOOTP協議,
使用UDP協議工作,常用的2個端口:67(DHCP server),68(DHCP client)。DHCP通常被用於局域網環境,主要作用是
集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用
率。簡單來說,DHCP就是一個不需要賬號密碼登錄的、自動給內網機器分配IP地址等信息的協議。
DHCP協議中的報文:
DHCP DISCOVER :客戶端廣播DHCP Discover消息,局域網內所有主機都能接受到該報文。
DHCP OFFER :服務器接收到DHCP DISCOVER之后做出的響應,它包括了給予客戶端的IP、客戶端的MAC地址、租約過期時間、服務器的識別符以及其他信息
DHCP REQUEST :客戶端對於服務器發出的DHCP OFFER所做出的響應,發送請求報文。
DHCP ACK :服務器在接收到客戶端發來的DHCP REQUEST之后發出的成功確認的報文。在建立連接的時候,客戶端在接收到這個報文之后才會確認分配給它的IP和其他信息可以被允許使用。
DHCP的工作流程:
DHCP報文數據包:
什么是DHCP Snooping ?
DHCP Snooping技術是DHCP安全特性,通過建立和維護DHCP Snooping綁定表過濾不可信任的DHCP信息,
這些信息是指來自不信任區域的DHCP信息。DHCP Snooping綁定表包含不信任區域的用戶MAC地址、IP地址、
租用期、VLAN-ID 接口等信息。Cisco交換機支持在每個VLAN基礎上啟用DHCP監聽特性。通過這種特性,交換
機能夠攔截第二層VLAN域內的所有DHCP報文。
知識點: DHCP Snooping綁定表為后續部署IP源防護(IPSG)和動態ARP檢測(DAI)提供重要支持。
DHCP Snooping作用:
1、 防止私自搭建的DHCP Server分配IP地址(主要功能)。
2、 防止惡意搭建的DHCP Server的DOS攻擊,導致信任DHCP Server(公司DHCP服務器)的IP地址資源耗竭(主要功能)。
3、 防止用戶手動配置固定IP地址,造成與信任DHCP Server(公司DHCP服務器)分配的IP地址沖突。(需要配合IPSG功能共同實現,后續會講解)
DHCP監聽將交換機端口划分為兩類:
1、 信任端口:連接信任的DHCP服務器或者匯聚交換機的上行端口或核心交換機的下行端口。
2、 非信任端口:通常為連接終端設備的端口,例如電腦、網絡打印機、筆記本,HUB(傻瓜交換機端口不可控)等。
設計思路:
1、3560划分3個VLAN(vlan10 vlan20 vlan50)並分配IP地址,gi0/13端口配置為信任端口連接信任DHCP服務器並划分到vlan 50,gi0/24端口設置為trunk
2、2960划分3個VLAN(vlan10 vlan20 vlan50)並分配端口,gi1/0/24端口設置為trunk與3560 gi0/24端口相連
3、私搭建的DHCP服務器可以接在3560交換機或2960交換機非信任端口進行測試
4、PC01連接在2960 vlan10 端口gi1/0/1,PC02連接在2960 vlan20 端口gi1/0/8
VLAN情況:
vlan 10 192.168.10.1/24(3650) 分配端口gi1/0/1-5(2960)
vlan 20 192.168.20.1/24(3650) 分配端口gi1/0/6-10(2960)
vlan 50 192.168.50.1/24(3650) 分配端口gi1/0/11-15(2960)
信任DHCP服務器IP地址 192.168.50.254/24(3650) 分配端口gi0/13(3650)
網絡拓撲圖:
提示:思科模擬器Cisco Packet Tracer Student實現DHCP Snooping功能會有異常,本教程是使用真實思科交換機實驗。
3650配置信息:
##配置vlan
3560(config)#vlan 10
3560(config-vlan)#name VLAN10
3560(config-vlan)#exit
3560(config)#vlan 20
3560(config-vlan)#name VLAN10
3560(config-vlan)#exit
3560(config)#vlan 50
3560(config-vlan)#name VLAN10
3560(config-vlan)#exit
##配置vlan的IP地址並設定DHCP服務器中繼代理
3560(config)#interface vlan 10
3560(config-if)#ip address 192.168.10.1 255.255.255.0
3560(config-if)#ip helper-address 192.168.50.254
3560(config-if)#exit
3560(config)#interface vlan 20
3560(config-if)#ip address 192.168.20.1 255.255.255.0
3560(config-if)#ip helper-address 192.168.50.254
3560(config-if)#exit
3560(config)#interface vlan 50
3560(config-if)#ip address 192.168.50.1 255.255.255.0
3560(config-if)#ip helper-address 192.168.50.254
3560(config-if)#exit
##划分gi0/13端口給vlan50用於連接DHCP服務器
3560(config)#interface gigabitEthernet 0/13
3560(config-if)#switchport access vlan 50
3560(config-if)#switchport mode access
3560(config-if)#no shutdown
##設置gi0/24端口為trunk用於連接下聯2960交換機
3560(config)#interface gigabitEthernet 0/24
3560(config-if)#switchport trunk encapsulation dot1q
3560(config-if)#switchport mode trunk
3560(config-if)#no shutdown
##開啟三層路由功能
3560(config)#ip routing
##開啟DHCP Snooping功能
3560(config)#ip dhcp snooping
##設置DHCP Snooping功能將作用於哪些VLAN
3560(config)#ip dhcp snooping vlan 10,20,50
##配置交換機能從非信任端口接收帶option 82的DHCP報文
3560(config)#ip dhcp snooping information option allow-untrusted
##將DHCP監聽綁定表保存在flash中,文件名為dhcp_snooping.db
3560(config)#ip dhcp snooping database flash:dhcp_snooping.db
##指DHCP監聽綁定表發生更新后,等待30秒,再寫入文件,默認為300秒
3560(config)#ip dhcp snooping database write-delay 30
##指DHCP監聽綁定表嘗試寫入操作失敗后,重新嘗試寫入操作,直到60秒后停止嘗試,默認為300秒
3560(config)#ip dhcp snooping database timeout 60
##使由於DHCP報文限速原因而被禁用的端口能自動從err-disable狀態恢復
3560(config)#errdisable recovery cause dhcp-rate-limit
##設置自動恢復時間;端口被置為err-disable狀態后,經過30秒時間自動恢復
3560(config)#errdisable recovery interval 30
##設置gi0/13端口和gi0/24為信任端口,其它端口自動默認為非信任端口
3560(config)#interface gigabitEthernet 0/13
3560(config-if)#ip dhcp snooping trust
3560(config-if)#exit
3560(config)#interface gigabitEthernet 0/24
3560(config-if)#ip dhcp snooping trust
3560(config-if)#exit
##顯示與維護
#查看交換機配置情況
3560#show running-config
#查看交換機端口速率、信任端口、非信任端口等信息
3560#show ip dhcp snooping
#查看DHCP snooping綁定表
3560#show ip dhcp snooping binding
2960配置信息:
##創建vlan
2960#vlan database
2960(vlan)#vlan 10 name VLAN10
2960(vlan)#vlan 20 name VLAN20
2960(vlan)#vlan 50 name VLAN50
2960(vlan)#exit
##划分端口給相應vlan
2960#configure terminal
2960(config)#interface range gigabitEthernet 1/0/1-5
2960(config-if-range)#switchport access vlan 10
2960(config-if-range)#switchport mode access
2960(config-if-range)#no shutdown
2960(config-if-range)#exit
2960#configure terminal
2960(config)#interface range gigabitEthernet 1/0/6-10
2960(config-if-range)#switchport access vlan 20
2960(config-if-range)#switchport mode access
2960(config-if-range)#no shutdown
2960(config-if-range)#exit
2960#configure terminal
2960(config)#interface range gigabitEthernet 1/0/11-15
2960(config-if-range)#switchport access vlan 50
2960(config-if-range)#switchport mode access
2960(config-if-range)#no shutdown
2960(config-if-range)#exit
##開啟DHCP Snooping功能
2960(config)#ip dhcp snooping
2960(config)#ip dhcp snooping vlan 10,20,50
2960(config)#ip dhcp snooping information option allow-untrusted
2960(config)#ip dhcp snooping database flash:dhcp_snooping.db
2960(config)#ip dhcp snooping database write-delay 30
2960(config)#ip dhcp snooping database timeout 60
2960(config)#errdisable recovery cause dhcp-rate-limit
2960(config)#errdisable recovery interval 30
##設置gi0/24為信任端口並設置為trunk與3650交換機連接,其它端口自動默認為非信任端口
2960(config)#interface gigabitEthernet 1/0/24
2960(config-if)#switchport mode trunk
2960(config-if)#ip dhcp snooping trust
##設置其它所屬vlan的非信任端口DHCP報文速率為每秒100個包(端口默認是每秒15個包)
2960(config)#interface range gigabitEthernet 1/0/1-15
2960(config-if-range)#ip dhcp snooping limit rate 100
##設置為直接轉發
2960(config-if-range)#spanning-tree portfast
##顯示與維護
3560#show running-config
3560#show ip dhcp snooping
3560#show ip dhcp snooping binding
什么是IPSG?
IP 源防護(IP Source Guard,簡稱 IPSG)是一種基於 IP/MAC 的端口流量過濾技術,它可以防止局域網內的 IP 地址欺騙攻擊。
IPSG 能夠確保第 2 層網絡中終端設備的 IP 地址不會被劫持,而且還能確保非授權設備不能通過自己指定 IP 地址的方式來訪問
網絡或攻擊網絡導致網絡崩潰及癱瘓。
IPSG作用:
1、防止用戶手動配置固定IP地址,造成與信任DHCP Server(公司DHCP服務器)分配的IP地址沖突。(需要配合DHCP Snooping功能共同實現)
2、實現靜態綁定IP+vlan+端口,同時配合HDCP Snooping功能一起使用可實現動態綁定。
標注:IPSG配置參照以上DHCP Snooping配置不變,只要增加以下配置即可:
2960交換機增加以下配置信息:
##信任端口不必配置
2960(config)#interface range gigabitEthernet 1/0/1-15
2960(config-if-range)#ip verify source port-security
#交換機允許手動設置IP地址綁定命令,一般綁定了就不能自動獲取,除非DHCP服務器上存在你的IP與MAC綁定信息,否則無法自動獲取IP地址
2960(config)#ip source binding D8:CB:8A:93:24:E5 vlan 20 192.168.20.120 interface gigabitEthernet 1/0/10
##顯示與維護
2960#show ip source binding
2960#show ip verify source