CISCO DHCP全攻略詳解

原文連接地址:https://bbs.51cto.com/thread-800321-1.htmlhtml

 

最近看到你們常常因爲DHCP的問題犯愁, 爲了讓你們更明白的瞭解DHCP而且會配置,特此發這個貼 
相信你們認證看完對DHCP就會了如指掌

1.配置DHCP Server 
(1)開啓DHCP 功能 
    r2(config)#service dhcp 
(2)配置DHCP 地址池 
    r2(config)#ip dhcp pool ccie1      地址池名爲ccie1 
    r2(dhcp-config)#network 10.1.1.0 255.255.255.0 可供客戶端使用的地址段 
    r2(dhcp-config)#default-router 10.1.1.1 網關 
    r2(dhcp-config)#dns-server 10.1.1.1 10.1.1.2 DNS 
    r2(dhcp-config)#lease 1 1 1        租期爲1 天1 小時1 分(默認爲一天) 
    r2(config)#ip dhcp pool ccie2      地址池名爲ccie1 
    r2(dhcp-config)#network 20.1.1.0 255.255.255.0 可供客戶端使用的地址段 
    r2(dhcp-config)#default-router 20.1.1.1 網關 
    r2(dhcp-config)#dns-server 20.1.1.1 20.1.1.2 DNS 
    r2(dhcp-config)#lease 1 1 1       租期爲1 天1 小時1 分(默認一天) 
(3)去掉不提供給客戶端的地址 
注:由於某些IP 地址不但願提供給客戶端,好比網關地址,因此咱們要將這些地址 
從地址池中移除,這樣服務器就不會將這些地址發給客戶端使用。 
r2(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10 移除10.1.1.1 到10.1.1.10 
  r2(config)#ip dhcp excluded-address 20.1.1.1 20.1.1.10 移除20.1.1.1 到20.1.1.10 
2.配置DHCP Client 
(1)配置接口使用DHCP 
    r1(config)#int f0/1 
    r1(config-if)#ip address dhcp 
3.查看命令: 
(1)在服務器上查看哪些地址分配給了哪些主機: 
    R2#Show ip dhcp binding 
4.查看結果 
    查看DHCP      Client  會看到接口 F0/0   的IP  地址爲10.1.1.11  而且產生一條指向 
10.1.1.1 的默認路由(換成PC 就會變成網關是10.1.1.1),路由器並不須要獲得DNS。 
    在這裏,DHCP        Server 上明明配了兩個地址池,網段分別爲 10.1.1.0/24                  和 
20.1.1.0/24,爲何客戶端向服務器請求地址的時候,服務器就恰恰會把10.1.1.0/24 
網段的地址發給客戶,而不會錯把20.1.1.0/24 網段的地址發給客戶呢。這是由於服 
務器從哪一個接口收到DHCP 請求,就只能向客戶端發送地址段和接收接口地址相同 
的網段,若是不存在相同網段,就會丟棄請求數據包。圖中接收接口地址爲10.1.1.1, 
而地址池ccie1  中的網段10.1.1.0/24 正好和接收接口是相同網段,因此向客戶端發 
送了IP 地址10.1.1.11。 
DHCP 中繼 

如圖中所示,當R1  的接口配置爲DHCP 得到地址後,那麼將從F0/0 發出目的 
地爲255.255.255.255  的廣播請求包,若是R2 爲DHCP 服務器,便會響應客戶端, 
但它不是DHCP  服務器,所以R2  收到此廣播包後便默認丟棄該請求包。而真正的 
DHCP 服務器是R4,R1  的廣播包又如何能到達R4 這臺服務器呢,R4 又如何向R1 
客戶端發送正確的IP 地址呢。 
   路由器是不可以轉發廣播的,所以,除非可以讓R2 將客戶端的廣播包單播發向 
R4 這臺服務器。咱們的作法就是讓R2 將廣播包經過單播繼續前轉到R4 這臺服務 
器,稱爲DHCP 中繼,經過IP help-address 功能來實現。 
1.R2 配置 
(1)配置將DHCP 廣播前轉到34.1.1.4 
注:IP help-address 功能默認可以前轉DHCP 協議,因此無需額外添加。 
   R2(config)#int f0/0 
   R2(config-if)#ip helper-address 34.1.1.4 
2.配置DHCP Server: 
(1)開啓DHCP 功能 
   R4(config)#service dhcp 
(2)配置DHCP 地址池 
    R4(config)#ip dhcp pool ccie1      地址池名爲ccie1 
     R4(dhcp-config)#network 10.1.1.0 255.255.255.0 可供客戶端使用的地址段 
     R4(dhcp-config)#default-router 10.1.1.1 網關 
R4(config)#ip dhcp pool ccie2     地址池名爲ccie1 
     R4(dhcp-config)#network 34.1.1.0 255.255.255.0 可供客戶端使用的地址段 
     R4(dhcp-config)#default-router 34.1.1.4 網關 
(3)去掉不提供給客戶端的地址 
   R4(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10 移除10.1.1.1 到10.1.1.10 
    R4(config)#ip  dhcp  excluded-address  34.1.1.1  34.1.1.10 移除 20.1.1.1 到 
20.1.1.10 
(4)配置正確地址池的路由 
   R4(config)#ip route 10.1.1.0 255.255.255.0 34.1.1.3 
注: R3 無需作任何配置! 
3.查看結果 
    查看DHCP Client 會看到接口F0/0 的IP 地址爲10.1.1.11,那麼DHCP 服務器R4 
又是根據什麼來判斷出客戶端須要的是哪一個網段的IP 地址呢,爲何仍是沒有錯把 
34.1.1.0/24 網段的地址發給客戶呢。不是說服務器從哪一個接口收到請求,就把這個 
接口相同網段的地址發給客戶端嗎?按照以前的理論,應該是發送34.1.1.0/24 的地 
址給客戶啊。在這裏,可以指導服務器發送正確IP 地址給客戶端,是由於有一個被 
稱爲option 82 的選項,這個選項只要DHCP 請求數據包被中繼後便會自動添加,此 
選項,中繼路由器會在裏面的giaddr 位置寫上參數,這個參數,就是告訴服務器,客 
戶端須要哪一個網段的IP地址才能正常工做。中繼路由器從哪一個接口收到客戶的DHCP 
請求,就在option 82 的giaddr 位置寫上該接收接口的IP 地址,而後服務器根據giaddr 
位置上的IP 地址,從地址池中選擇一個與該IP 地址相同網段的地址給客戶,若是 
沒有相應地址池,則放棄響應,因此,服務器R4 可以正確發送10.1.1.0/24  的地址 
給客戶,正是由於R2 在因爲IP help-address 的影響下,將giaddr  的參數改爲了本身 
接收接口的地址,即將giaddr 參數改爲了10.1.1.1,經過debug 會看到以下過程: 
*Mar100:28:36.666: DHCPD: setting giaddr to 10.1.1.1. 
*Mar100:28:36.666HCPD:BOOTREQUESTfrom0063.6973.636f.2d30.3031.322e. 
6439.6639.2e63.3638.302d.4661.302f.30 forwarded to 34.1.1.4. 
    從上面debug 信息能夠看到R2 是將giaddr             改爲 10.1.1.1 後發中繼發向34.1.1.4 
的,須要知道的是,通過中繼後發來的DHCP 請求包若是giaddr 位置不是某個IP 地 
址而是0.0.0.0 的話,服務器是丟棄該請求而不提供IP 地址的。 
注:當服務器上存在10.1.1.0/24 網段的地址池時,服務器要將該地址池發送給客戶, 
就必須存在到達10.1.1.0 網段的路由(默認路由也行),而且客戶端必須位於該路由的 
方向,若是方向不對,該地址池也是不可以發給客戶使用的。 
不一樣VLAN 分配不一樣地址 

    如圖3 中所示,兩個DHCP 客戶端分別位於交換機上兩個不一樣的VLAN,交換機 
上的VLAN 接口將做爲他們的網關,R3 是DHCP 服務器,這兩個客戶端必須獲得不 
同網段的地址,不然沒法與外網通訊,在這種狀況下,服務器R3 也必須正確爲R1 
分配10.1.1.0/24 網段的地址,必須爲R2 分配20.1.1.0/24 的地址,配置以下: 
1.配置DHCP Server 
(1)開啓DHCP 功能 
   R3(config)#service dhcp 
(2)配置DHCP 地址池 
     R3(config)#ip dhcp pool ccie1         地址池名爲ccie1 
     R3(dhcp-config)#network 10.1.1.0 255.255.255.0  可供客戶端使用的地址段 
     R3(dhcp-config)#default-router 10.1.1.1    網關 
     R3(config)#ip dhcp pool ccie2         地址池名爲ccie1 
     R3(dhcp-config)#network 20.1.1.0 255.255.255.0  可供客戶端使用的地址段 
     R3(dhcp-config)#default-router 20.1.1.1     網關 
(3)去掉不提供給客戶端的地址 
   R3(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10 移除10.1.1.1 到10.1.1.10 
      R3(config)#ip  dhcp  excluded-address  20.1.1.1  20.1.1.10 移除 20.1.1.1  到 
20.1.1.10 
(4)配置正確地址池的路由 
     R3(config)#ip route 10.1.1.0 255.255.255.0 30.1.1.1 
    R3(config)#ip route 20.1.1.0 255.255.255.0 30.1.1.1 
2.配置交換機 
(1)配置相應接口信息 
   sw(config)#vlan 10 
   sw(config-vlan)#exit 
sw(config)#vlan 20 
   sw(config-vlan)#exit 
   sw(config)#int f0/1 
   sw(config-if)#switchport mode access 
   sw(config-if)#switchport access vlan 10 
   sw(config-if)#exit 
   sw(config)#int f0/2 
   sw(config-if)#switchport mode access 
   sw(config-if)#switchport access vlan 20 
   sw(config-if)#exit 
   sw(config)#int vlan 10 
   sw(config-if)#ip address 10.1.1.1 255.255.255.0 
   sw(config-if)#ip helper-address 30.1.1.3          單播前轉DHCP 廣播到30.1.1.3 
   sw(config-if)#exit 
   sw(config)#int vlan 20 
   sw(config-if)#ip address 20.1.1.1 255.255.255.0 
   sw(config-if)#ip helper-address 30.1.1.3          單播前轉DHCP 廣播到30.1.1.3 
3.配置DHCP Client 
(1)配置R1 
     r1(config)#int f0/1 
     r1(config-if)#ip address dhcp 
(2)配置R2 
    r2(config)#int f0/1 
    r1(config-if)#ip address dhcp 
4.查看結果: 
    按上述配置完以後,客戶端R1 的F0/0 便可以收到地址10.1.1.11,客戶端R2 便 
可以收到地址20.1.1.11,而後就能夠全網通訊。在上述的狀況下,服務器R3  可以 
正確爲R1 分配10.1.1.0/24 網段的地址,可以正確爲R2 分配20.1.1.0/24 網段的地址, 
一樣也是由於交換機在收到R1 的DHCP 廣播包後,將giaddr 的參數改爲了10.1.1.1, 
收到R2 的廣播包後,將giaddr  的參數改爲了20.1.1.1,因此最後服務器R3 可以根 
據 giaddr=10.1.1.1 的包分配10.1.1.0/24     的地址,根據giaddr=20.1.1.1       的包分配 
20.1.1.0/24 的地址。 
IP 與MAC 地址綁定 
    在配置DHCP 時,地址池中除了移除掉的IP 地址以外,全部的地址都會按順序 
分配給客戶,因此客戶機獲得的 IP  地址是沒法固定的,有時須要每次固定爲某些 
PC 分配相同的IP 地址,那麼這時就能夠配置DHCP 服務器以靜態將IP 地址和某些 
MAC 綁定,只有相應的MAC 地址才能得到相應的IP 地址。在Cisco 設備上靜態將 
IP 與MAC 綁定的方法爲,須要將某個IP 地址綁定給MAC 地址,就爲該IP 地址單獨 
建立地址池,稱爲host pool,地址池中須要註明IP 地址和掩碼位數,而且附上一個 
MAC 地址,之後這個IP 地址就只分配給這個MAC 地址,因此host pool 只能有一個 
IP 地址和一個MAC 地址,若是須要爲多個客戶綁定IP 和MAC,就必須得單獨爲每 
個客戶都配置各自的host   pool,還要注意的是,在host   pool 中,MAC 地址的表示 
方法和日常不同,好比一個主機網卡的MAC 地址爲aabb.ccdd.eeff,在地址池中, 
須要在前面加上01         (01 表示爲以太網類型),結果爲01aa.bbcc.ddee.ff 
1.配置host pool: 
(1)配置pool 名 
    r1(config)#ip dhcp poo ccie 
(2)配置IP 地址 
    r1(dhcp-config)#host 10.1.1.100 /24 
(3)配置與該IP 地址對應的MAC 地址 
    r1(dhcp-config)#client-identifier 01aa.bbcc.ddee.ff 
2.查看配置結果: 
(1)查看服務器地址分配狀態 
   r1#sh ip dhcp binding 
   Bindings from all pools not associated with VRF: 
   IP address    Client-ID/      Lease expiration   Type 
           Hardware address/ 
           User name 
   10.1.1.100    01aa.bbcc.ddee.ff   Infinite       Manual 
   r1# 
說明:從以上結果能夠看出,IP 地址10.1.1.100 已經手工與MAC 地址aabb.ccdd.eeff 
作了綁定,之後只要MAC 地址爲aabb.ccdd.eeff 的客戶端請求IP 地址時,才能得到 
IP 地址10.1.1.100。 
DHCP 安全ARP 

Cisco 設計的DHCP 安全ARP 也許不是絕對的安全,但也起到了必定的做用,原 
本設計爲一個須要計費的公共熱點PVLAN                   (公共無線場所),如圖4  中所示,R3 爲 
DHCP 服務器,爲付費的R1 提供正確IP 地址以提供網絡服務,當服務器R3 爲客戶 
端R1 提供IP 地址 10.1.1.2 以後,就已經記住了它的MAC 地址,在正常狀況下,如 
果R1 退出,服務器是不知道的,而且當網絡中有欺騙者接入後,也可冒充10.1.1.2 
這個地址進行上網,固然R1 和R2  的MAC 地址確定是不同的,若是這時服務器 
R3 因爲自動更新ARP 表的MAC 地址,就可以順利讓R2 上網。 
   基於上述緣由,須要在服務器R3 和客戶端R1 之間提供某種安全機制,即服務器 
按期ARP 訊問10.1.1.2 是否還存在,在訊問時,只有R1 可以回答。 
   在完成這種機制,須要兩個feature 來支持,第一個是Update                       Arp,在地址池模 
式下開啓,這個feature  即是按期訊問網絡中DHCP  客戶端的;第二個是Authorized 
ARP  (ARP 受權),只能在以太網接口下開啓,功能是禁止該接口下經過ARP                             自動更 
新和學習MAC 地址,這樣一來,接口下將不能有手動配置IP 的設備接入,由於手 
工配置IP 接入後,服務器不會更新本身的ARP  表,也就沒法完成到新設備的二層 
MAC 地址封裝,也就沒法和新設備進行通訊,只有合法的DHCP 客戶端才能正常通 
信,因此,若是爲遠程客戶端分配IP 地址,就沒法作這樣的保護,而且到遠程客戶 
端的下一跳必須是本身的客戶端,由於若是不是,是沒法通訊的,由於ARP 不存在 
到它的條目。 
1.配置安全ARP: 
(1)開啓DHCP 功能 
   R3(config)#service dhcp 
(2)配置DHCP 地址池 
   R3(config)#ip dhcp pool ccie1       地址池名爲ccie1 
   R3(dhcp-config)#network 10.1.1.0 255.255.255.0 可供客戶端使用的地址段 
   R3(dhcp-config)#default-router 10.1.1.1 網關 
   R3(dhcp-config)#update arp          開啓按期ARP 訊問 
(3)去掉不提供給客戶端的地址 
   R3(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10 移除10.1.1.1 到10.1.1.10 
(4)在接口下開啓Authorized ARP 
     R3(config)#int f0/0 
     R3(config-if)#Router(config-if)# arp authorized 禁止動態更新ARP 
     R3(config-if)# arp timeout 60      60 秒客戶無應答則刪除ARP 條 目 
說明:經過以上配置以後,當DHCP 客戶端從服務器得到IP 地址後,服務器便會定 
期查訊該IP 地址,若是60 秒沒有回答,便從ARP 表中刪除該條目。 
DHCP 監聽 

如圖5  中所示,客戶端R1 只有正確從服務器R3  中得到10.1.1.0/24  網段的IP 
地址纔可以正確上網,若是當網絡中出現另一臺錯誤的DHCP 服務器(圖中R2), 
R2 向客戶端R1 發出20.1.1.0/24  的地址,那麼將致使R1 網絡中斷,在這樣的狀況下, 
就須要禁止不合法的DHCP 服務器向網絡中提供DHCP 服務,這就須要DHCP 監聽 
(DHCP Snooping)。DHCP Snooping 是在交換機上完成的,如上圖中,只要告訴交換 
機,只有F0/3 發來的DHCP 應答地址才轉發給客戶端,其它接口發來的應答地址統 
統被丟棄。要作到這一點,就要告訴交換機,F0/3 接口是它可能信任的DHCP 地址, 
其它接口都是不可信的,不能提供DHCP 應答,那麼在實現這個功能時,就須要將 
交換機上的接口分爲可信任接口和不可信任接口兩種,默認交換機全爲不可信任接 
口,也就是說交換機開啓DHCP               Snooping 以後,沒有任何一個接口上的DHCP 服務 
器能提供服務。在交換機上配置DHCP                   Snooping 時,必須指明在哪一個VLAN 上進行 
監聽,其它沒有監聽的VLAN 不受上述規則限制。 
1.交換機上配置DHCP Snooping 
注:交換機上全部接口所有劃入VLAN1 
(1)在交換機上開啓DHCP Snooping 
   sw(config)#ip dhcp snooping       開啓DHCP Snooping 
  sw(config)#ip dhcp snooping vlan 1   在交換機上啓用DHCP Snooping 
(2)將相應接口變爲信任接口(默認所有爲不可信) 
sw(config-if)#ip dhcp snooping trust 
   2.查看命令: 
    (1)查看dhcp snooping 
      Sw#sh ip dhcp snooping 
       說明:經過以上配置以後,只有交換機F0/3 接口上(信任接口)的設備可以應 
   答DHCP 請求,而其它全部接口,好比R2 過來的DHCP 應答是會被丟棄的。可是你 
   會發現,在這以後,R1 仍是沒法得到服務器R3 發來的DHCP 地址。這是由於開了 
    DHCP Snooping 的交換機默認會產生中繼效果,即將DHCP 請求包的giaddr 的參數改 
   成0.0.0.0,交換機的這種中繼效果是沒法關閉的,當一個服務器收到中繼後而且將 
   giaddr 設置爲0.0.0.0 而不是IP 地址的請求包時,默認是要丟棄該數據包而不做應答 
    的,因此服務器R3 丟棄了該請求數據包。要讓客戶R1 可以正常收到DHCP 提供的 
    IP 地址,就要讓DHCP 服務器對即便giaddr 爲0.0.0.0  的請求包也做出應答。配置如 
   下: 
      R3(config-if)#ip dhcp relay information trusted 
      最後,從上圖中,若是R3 自己還不是DHCP 服務器,若是DHCP 服務器還在遠程 
    網絡,須要R3 提供中繼並轉發該請求包到服務器的話,那麼R3 除了在接口下配置 
   ip dhcp relay information trusted 以外,還必須配置ip helper-address,二者缺一不可。安全

相關文章
相關標籤/搜索