解決一個共享網路中,計算機指定獲取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
事務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-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地址的解決方案。