客人在我所供職的酒店上網的時候,經常會彈出一個對話方塊,顯示一些提示,如上網的注意事項和消費標準等資訊;並且有自己的電影和歌曲伺服器,DHCP-server也是其中的一台伺服器,賓館、酒店就是用這台機器,為客戶分配IP地址提供上網功能,即客戶把自己的電腦連上網線,網卡配置自動擷取IP地址,就會從動態主機設定通訊協定(DHCP)伺服器分配到一個IP地址;採用DHCP server可以自動為使用者佈建網路IP地址、掩碼、網關、DNS、Wins 等網路參數,簡化了使用者網路設定,提高了管理效率。
那麼我們的問題也出現了:常見的,很多使用者抱怨用這種方法上不了網,但不是所有客戶都上不了網。經過調查發現,住賓館、酒店的人絕大多數是商務人員和工程師,他們攜帶的手提電腦一般安裝的是Windows server版本,server版本預設啟動了DHCP server功能,當一台這樣的電腦連入網路,在他之後的電腦就會把他當成DHCP伺服器,並被分配了不正確的IP地址,從而上不了網。
DHCP伺服器位址分配方式
DHCP是一種用於簡化主機IP組態管理的協議標準。通過採用DHCP標準,可以使用DHCP伺服器為網路上所有啟用了DHCP的用戶端分配、配置、跟蹤和更改(必要時)所有TCP/IP設定。此外,DHCP還可以確保不使用重複地址、重新分配未使用的地址,並且可以自動為主機串連的子網分配適當的IP地址。當一個網路中,有2個或2個以上的DHCP伺服器時,提醒切勿將DHCP位址集區定義的過大,以免多個位址集區之間出現"包含於"的關係,或者是部分用戶端手工指定的IP地址包含於DHCP伺服器的位址集區中,從而造成DHCP的一些異常故障。
針對不同的需求,DHCP伺服器有三種機制分配IP地址:
自動分配 DHCP伺服器給首次串連到網路的某些用戶端分配固定IP地址,該地址由使用者長期使用;
動態分配 DHCP伺服器給用戶端分配有時間限制的IP地址,使用到期日到期後,用戶端需要重新申請地址,用戶端也可以主動釋放該地址。絕大多數用戶端主機得到的是這種動態分配的地址;
手動分配 由網路系統管理員為用戶端指定固定的IP地址。
三種地址分配方式中,只有動態分配可以重複使用用戶端不再需要的地址。
每項技術都是有利有弊的,DHCP也不例外,由於DHCP有著配置簡單,管理方便的優點,問題也隨之產生,由於DHCP的運作機制,通常伺服器和用戶端沒有認證機制,如果網路上存在多台DHCP伺服器將會給網路造成混亂。由於使用者不小心配置了DHCP伺服器引起的網路混亂非常常見,足可見此問題的普遍性。
本人在從事網路工作的幾年裡,遇到過很多問題,其中有關DHCP-server衝突的不在少數,在解決問題的同時也總結了一些經驗,在這裡簡單介紹一下,與大家分享,希望給在解決此類問題的同行一些協助,也希望廣大高手指出其中的不足和需要改進的地方。
DHCP伺服器衝突的解決方案
使用DHCP snooping技術來解決
針對這種DHCP伺服器衝突的解決方案有很多,最直接的方法就是貼告示,讓入住的客戶在上網時關閉Windows的DHCP網路服務,這個選項在‘控制台',‘管理工具'裡的‘DHCP網路服務',進入關閉即可。這裡要注意的是,非server版的Windows不用關閉,並且不要把‘控制台',‘管理工具',‘服務'中的DHCP client給停止了,這樣是分配不到地址的。
當然上面的方法比較被動也不合常理,更不便於我們網路的管理,所以還是應該從我們網路本身出發來解決問題。
既然是DHCP的問題,那麼我們就用DHCP的技術來解決問題,比較有代表的就是DHCP snooping技術。DHCP snooping技術是DHCP安全特性,通過建立和維護DHCP snooping綁定表過濾不可信任的DHCP資訊,這些資訊是指來自不信任地區的DHCP資訊。DHCP snooping綁定表包含不信任地區的使用者mac地址、IP地址、租用期、vlan-id介面等資訊。
首先定義交換器上的信任連接埠和不信任連接埠,其中信任連接埠串連DHCP伺服器或其他交換器的連接埠;不信任連接埠串連使用者或網路。不信任連接埠將接收到的DHCP伺服器響應的DHCP ack 和DHCP off報文丟棄;而信任連接埠將此DHCP報文正常轉寄,從而保證了使用者擷取正確的IP地址。具體配置如下:
配置中的命令都是以CISCO的裝置為基礎,但不管是哪個公司的裝置,總體設計思想是一致的,不同的可能在命令格式上略有差異,工作人員應該根據具體的實際情況來解決相應的問題。
在全域模式下啟動DHCP snooping功能,這個預設是關閉的,而且不是所有裝置都支援這個功能,最好先看使用說明。
switch(config)#ip dhcp-snooping
如果有vlan就使用下面的命令來監測具體的vlan
switch(config)#ip dhcp-snooping vlan vlan-id
然後定義可信任的連接埠,預設情況交換器的連接埠均為不信任連接埠,通常網路裝置介面, TRUNK 介面和串連DHCP伺服器的連接埠定義為可信任連接埠。
switch(config)#int f0/x
switch(config-if)#ip dhcp snooping trust
使用PVLAN技術來解決
有很多二層的技術可以防止DHCP-server衝突的,PVLAN就是其中一個運用比較廣的技術。
PVLAN私人區域網路(private vlan),在PVLAN的概念裡,連接埠有3種類型:Isolated port,Community port, Promiscuous port;它們分別對應不同的vlan類型:Isolated port屬於Isolated PVLAN,Community port屬於Community PVLAN,而代表一個Private vlan整體的是Primary vlan,前面兩類vlan需要和它綁定在一起,同時它還包括Promiscuous port。在Isolated PVLAN中,Isolated port只能和Promiscuous port,彼此之間不能訪問;在Community PVLAN中,vlan與vlan之間都不能訪問,同一Community vlan的介面可以互相訪問,並且所有Community vlan的介面都可以與Promiscuous port進行通訊。利用這項技術,我們可以把上連或串連DHCP伺服器的介面定義為Promiscuous port,其他介面分配到Isolated vlan裡,這樣所有介面都只能與上連或DHCP伺服器進行通訊,即使有一台機器設為DHCP伺服器,其他機器也不會與它產生流量,把它做為伺服器。
利用這個技術解決DHCP-server衝突的方法有很多,也很靈活,下面介紹一種比較簡單的方法,也是用的比較多的:
首先把交換器配置成transparents模式:
switch(config)#vtp mode transparent
順便可以開啟連接埠的保護功能,它的意思是開啟連接埠保護的連接埠之間不能訪問,但開啟保護的連接埠可以與沒有開啟此項功能的連接埠通訊,可以根據自己的需求來開啟保護功能:
switch(config)#int range f0/124
switch(config-if-range)#switchitchport protected
建立isolated vlan和primary vlan,把isolated vlan定義為primary lan的附屬vlan,因為要與primary互相訪問:
switch(config)#vlan 14
switch(config-vlan)private-vlan isolated
switch(config)#vlan 44
switch(config-vlan)#private-vlan primary
switch(config-vlan)#private-vlan association 14