解決一個共享網絡中,計算機指定獲取DHCP地址


 

                

 

偶然看到QQ群里說,在兩個dhcp服務器里保證獲取第一個服務器怎么做?瞬間來了興趣,想了想方案,發現百度也沒有答案,因此我寫了一個解決方案

如何讓計算機獲取指定DHCP,這個要從DHCP的 協議原理以及 交換機高級特性

 

                

 

環境展示

要求:PC1指定獲取R2的IP地址,PC2不限制獲取哪個IP

如何解決?DHCP服務器指定?若提供DHCP服務的不是服務器而是其他設備呢?

先看DHCP協議報文交互原理

 

                

 

1.計算機網卡運行時,由於網卡未配置IP地址,會向網絡中尋找DHCP服務器,這個過程,數據報文叫做 DHCP-Discover(DHCP發現報文)

由於計算機還沒有IP地址,所以源地址0.0.0.0,目標地址255.255.255.255。由於不知道服務器地址,所以目的地址也是廣播地址,目的端口68,服務器監聽68端口

  1. 為了防止一個網絡里出現了多個DHCP服務器而計算機無法區分哪個報文是哪個服務器發送的,DHCP交互報文中封裝了 隨機的事務ID

3.服務器收到后,由於客戶端也還沒有IP地址,也會發送目的地址255.255.255.255,源是服務器自己IP地址的數據包,目標端口67,計算機監聽67端口,收到的 事務ID不變,這個數據過程叫 DHCP-Offer(DHCP提供報文)

DHCP-Offer報文里包含里要給予的,沒有被記錄使用的IP地址、子網掩碼、網關地址、DNS地址、地址租期等內容

4.由於DHCP的工作原理是計算機按先后順序,先收到誰的 DHCP-Offer ,就向哪個服務器發送 DHCP-Request(DHCP請求報文),事務ID不變,去向DHCP服務器確認該地址可用

DHCP-Request報文源地址還是0.0.0.0,目的地址255.255.255.255,這樣的目的是不用向網絡中的每一個DHCP服務器單播發送DHCP請求報文,節省了交互時間

5.此時多個服務器均會收到 DHCP-Request,然后根據報文中的 事務ID去辨別是否是發給我的請求,若不是發給我的則丟棄。若是發給我的,則回復 DHCP-Ack(DHCP確認報文)告知計算機可以使用該IP地址了,目的地址255.255.255.255,源是服務器

6.計算機收到 DHCP-Ack后,也會發送 免費ARP,這個 免費ARP源是給予的IP地址,目的也是這個地址。用來確認該網絡中沒有存在相同的IP地址,若存在,則向服務器發送 DHCP-Decline(DHCP拒絕報文),此時計算機會重新發送 DHCP-Discover進行新的開始

7.若計算機發現地址不存在沖突,則進行使用。

至此,DHCP的交互流程結束。地址續約及釋放不在講解,接下來回到題目要求進行操作

基於拓撲圖可以分析出來, DHCP-Snooping技術無法使用,因為要求中寫到PC2可以獲取任意地址,設置哪個端口為Trust都無法進行PC1要求的控制。

也無法划開VLAN進行隔離,要求就是同一個廣播域中。

所以此操作基於華為 MQC技術(模塊化QOS命令行),也可以說是流策略。進行控制

在SW2上,配置

acl number 3000
 rule permit ip source 20.0.0.254 0
# traffic classifier 20 it-match 3000 # traffic behavior 20 deny # traffic policy 20 classifier 20 behavior 20 # interface GigabitEthernet0/0/2 traffic-policy 20 outbound 

 

配置思路:
既然無法划開VLAN,那就對 DHCP報文交互過程進行限制,以計算機收到的第一個Offer報文進行控制。
為什么要進行三層控制,如果控制了二層,那計算機獲取地址后就無法和R2進行交互,也不符合要求。
在SW2中,ACL定義了源地址為R2 20.0.0.254,就是定義了DHCP-Offer報文的返回數據幀。
在流分類中掛載ACL,為什么ACL是 permit?因為如果是 deny的話,流行為控制將不會掛載該條數據包
最后用流策略匹配流分類及流行為,應用在連接計算機的接口出方向即可。

此時效果為:PC1的DHCP請求報文可以被R2接收,R2也會發DHCP提供報文給計算機,該DHCP提供報文可以被SW2接收,但是不會下發給PC1,至此PC1僅能收到R1的DHCP報文。
這就完成了指定獲取DHCP地址的控制。

若沒有要求同一個VLAN進行控制,其實也可以通過 MUX VLAN進行控制(思科系叫 Private VLAN
將主VLAN設成R2的接口VLAN,互通型VLAN設計成R1與PC2的接口。在將隔離型VLAN配置為PC1的接口。
所有互通型VLAN和隔離型VLAN均可和主VLAN交互,隔離型VLAN不可訪問其他VLAN,而互通型VLAN,也就是PC2和R1的接口,既可以互訪也可以訪問主VLAN-R2的接口。
這也是另一種辦法獲取指定DHCP地址的解決方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM