偶然看到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端口
- 為了防止一個網絡里出現了多個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地址的解決方案。