簡介
DHCP+認證技術是一種基於DHCP協定控制終端用戶的IP位址分配,實現控制用戶接入上網的認證鑒權技術。
DHCP協定是RFC組織通過RFC 2131、2132定義的標準客戶機—伺服器工作機制,主要實現客戶機向伺服器請求分配IP位址的流程。
DHCP協定主要解決以下問題:
將IP位址和TCP/IP的設定統一管理起來
避免不必要的地址衝突
節省了網路管理員手工設定和分配地址的麻煩
略微達到節省IP位址的目的
但是作為接入認證技術,DHCP協定本身存在問題,很多業務功能沒有定義、無法實現。主要包括:用戶的上下網偵測和Session維護、用戶上網時長的採集等功能。
同時,考慮到電信運營的需要,DHCP+認證系統還需要解決安全性問題,如防IP位址盜用、防偽DHCP伺服器、防DOS攻擊、DHCP廣播域控制等。
DHCP+認證技術主要是通過對DHCP協定進行擴展,來實現上述功能和業務要求。發展出的技術包括DHCP+Web認證和DHCP+Client認證兩種方式。
DHCP+Web認證和DHCP+Client認證比較,DHCP+Client認證方式,更加具有優勢,主要體現在以下幾點:
計費準確率高;
安全性高,具備防偽DHCP、防DOS攻擊的能力;
對用戶控制力度更強,可以制止用戶私拉盜接行為。
因此,在運營商採用DHCP+認證技術進行寬頻接入業務開展時,更加適用。
DHCP+ 的認證過程如下:DHCP 用戶通過廣播找到DHCP伺服器,從回應的多個DHCP伺服器中選一個提出申請,該伺服器接受之後,通過認證用戶的有關信息,確認是合法用戶之後,就把相關參數,如IP位址、DNS伺服器、子網掩碼、網關的地址等傳送給用戶。用戶得到這些參數之後,就能直接進入Internet網進行通信,而所有的通信流無需經過DHCP伺服器。
優缺點
優點
DHCP服務優點不少:網路管理員可以驗證IP位址和其它配置參數,而不用去檢查每個主機;DHCP不會同時租借相同的IP位址給兩台主機;DHCP管理員可以約束特定的計算機使用特定的IP位址;可以為每個DHCP作用域設定很多選項;客戶機在不同子網間移動時不需要重新設定IP位址。
缺點
但同時也存在不少缺點:DHCP不能發現網路上非DHCP客戶機已經在使用的IP位址;當網路上存在多個DHCP伺服器時,一個DHCP伺服器不能查出已被其它伺服器租出去的IP位址;DHCP伺服器不能跨路由器與客戶機通信,除非路由器允許BOOTP轉發。
工作流程
發現階段
發現階段,即DHCP客戶機尋找DHCP伺服器的階段。
DHCP客戶機以廣播方式(因為DHCP伺服器的IP位址對於客戶機來說是未知的)傳送DHCPdiscover發現信息來尋找DHCP伺服器,即向地址255.255.255.255傳送特定的廣播信息。網路上每一台安裝了TCP/IP協定的主機都會接收到這種廣播信息,但只有DHCP伺服器才會做出回響。
提供階段
提供階段,即DHCP伺服器提供IP位址的階段。在網路中接收到DHCPdiscover發現信息的DHCP伺服器都會做出回響,它從尚未出租的IP位址中挑選一個分配給DHCP客戶機,向DHCP客戶機傳送一個包含出租的IP位址和其他設定的DHCPoffer提供信息(如圖2)。
選擇階段
選擇階段,即DHCP客戶機選擇某台DHCP伺服器提供的IP位址的階段。如果有多台DHCP伺服器向DHCP客戶機發來的DHCPoffer提供信息,則DHCP客戶機只接受第一個收到的DHCPoffer提供信息,然後它就以廣播方式回答一個DHCPrequest請求信息,該信息中包含向它所選定的DHCP伺服器請求IP位址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP伺服器,他將選擇某台DHCP伺服器所提供的IP位址。
確認階段
確認階段,即DHCP伺服器確認所提供的IP位址的階段。當DHCP伺服器收到DHCP客戶機回答的DHCPrequest請求信息之後,它便向DHCP客戶機傳送一個包含它所提供的IP位址和其他設定的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP位址。然後DHCP客戶機便將其TCP/IP協定與網卡綁定,另外,除DHCP客戶機選中的伺服器外,其他的DHCP伺服器都將收回曾提供的IP位址。
重新登錄
重新登錄。以後DHCP客戶機每次重新登錄網路時,就不需要再傳送DHCPdiscover發現信息了,而是直接傳送包含前一次所分配的IP位址的DHCPrequest請求信息。當DHCP伺服器收到這一信息後,它會嘗試讓DHCP客戶機繼續使用原來的IP位址,並回答一個DHCPack確認信息。如果此IP位址已無法再分配給原來的DHCP客戶機使用時(比如此IP位址已分配給其它DHCP客戶機使用),則DHCP伺服器給DHCP客戶機回答一個DHCPnack否認信息。當原來的DHCP客戶機收到此DHCPnack否認信息後,它就必須重新傳送DHCPdiscover發現信息來請求新的IP位址。
更新租約
更新租約。DHCP伺服器向DHCP客戶機出租的IP位址一般都有一個租借期限,期滿後DHCP伺服器便會收回出租的IP位址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP伺服器傳送更新其IP租約的信息。
為了便於理解,我們把DHCP客戶機比做餐館裡的客人,DHCP伺服器比做服務員(一個餐館裡也可以有多個服務員),IP位址比做客戶需要的食物。那么可以這樣描述整個過程:客人走進餐館,問:“有沒有服務員啊?”(DHCPdiscover),多個服務員同時回答:“有,我這有雞翅”“有,我這有漢堡”(DHCPoffer)。客人說:“好吧,我要一份漢堡”(DHCPrequest,這個客人比較死板,總是選擇第一次聽到的食物),端著漢堡的服務員回應了一聲:“來啦”(DHCPack),並把食物端到客人面前,供其享用(將網卡和IP位址綁定)。客人下次來的時候,就直接找上次那個服務員點自己喜歡的漢堡了(DHCPrequest),如果還有漢堡,服務員會再次確認並上菜(DHCPack),而如果已經賣完了,服務員則會告訴客人:“不好意思,已經賣完了”(DHCPnack)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續吃的,服務員會將剩菜端走。
配置
Windows2000Server在DHCP上下了很大的功夫,不僅解決了NT4.0中的種種問題,而且還增加了許多新的特性。例如和DNS的集成,加強的DHCP監視和管理,DHCP集群伺服器,DHCP目錄授權等等。
地址範圍
注意:如果您的校園網路是以工作組的形式存在的,可以在第6步的“配置DHCP選項”視窗中選擇“否,我想稍後配置這些選項”,此時設定過程跳過第7、8步。如果您的校園網路是以域的形式存在的,建議您的網路配置順序為:活動目錄的建立→WINS的建立→DNS的建立→DHCP的建立,這樣可以減少很多麻煩。
測試
經過上述設定,DHCP服務已經正式啟動,我們需要在客戶機上進行測試。只需把客戶機的IP位址選項設為“自動獲取IP位址”,隨後重新啟動客戶機。在客戶機的“運行”對話框中鍵入“Ipconfig/all”,即可看到客戶機分配到的動態IP位址。
過程
在Linux上配置DHCP需要的檔案有/etc/dhcpd.conf,/var/state/dhcp/
dhcpd.leases,相關工具有/etc/rc.d/init.d/dhcpd。下面是在RedHatLinux上配置DHCP的實例:
1.設定DHCP伺服器的FQDN名
optiondomain-name"name"
2.設定DNS的伺服器地址
optiondomain-name-servers10.1.1.1;
3.設定子網掩碼
optionsubnet-mask255.255.0.0;
4.設定租約時間
如果客戶端不能請求一個指定的租用期,就使用該參數來定義該地址租用的時間長度default-lease-time1200;
如果客戶端可以請求一個制訂的租用期,就使用該命令來定義最長的租用時間max-lease-time87600
5.設定子網的網段及相關範圍配置
subnet10.0.0.0netmask255.0.0.0;
{
range10.0.0.210.10.10.10;//指定子網的IP範圍
optionbroadcast-address10.0.0.255;//指定子網的廣播地址
optionrouters10.0.0.1;//指定網關的IP
}
6.給客戶綁定靜態IP
hostclinet{
hardwareethernet00:50:BA:CA:2E:D2;
fixed-address10.10.10.10;
}
發放過程
第一次登錄之後:
一旦 DHCP客戶端成功地從伺服器哪裡取得 DHCP 租約之後,除非其租約已經失效並且 IP 地址也重新設定回 0.0.0.0 ,否則就無需再傳送 DHCP discover 信息了,而會直接使用已經租用到的 IP 地址向之前之 DHCP 伺服器發出 DHCP request 信息,DHCP 伺服器會儘量讓客戶端使用原來的 IP 地址,如果沒問題的話,直接回響 DHCPack 來確認則可。如果該地址已經失效或已經被其它機器使用了,伺服器則會回響一個 DHCPNACK封包給客戶端,要求其從新執行 DHCP discover。
至於 IP 的租約期限卻是非常考究的,以 NT 為例子:DHCP 工作站除了在開機的時候發出 DHCP request 請求之外,在租約期限一半的時候也會發出 DHCP request ,如果此時得不到 DHCP伺服器的確認的話,工作站還可以繼續使用該 IP ;然後在租約期限的八分之七的時候(即租約的87.5%),還得不到確認的話,那么工作站就不能擁有這個 IP 了。
網路設備
有時候,在一些中高端的網路設備(路由器、交換機)上已經集成了DHCP服務,我們便可以在網路設備上實現DHCP服務,不使用專門的主機做DHCP伺服器,以節省成本。
下面是在cisco路由器上配置DHCP的實例
1.指定不自動分配的IP位址範圍
ipdhcpexcluded-address10.1.1.110.1.1.19//指定從10.1.1.1到10.1.1.19的IP位址是手工分配的
2.設定DHCP地址池
ipdhcppoolglobal//這條命令指定了DHCP地址池的名稱
network10.1.0.0255.255.0.0//動態分配的IP位址範圍,這裡是10.1.0.0網段所有的IP位址(前面指定的非自動分配地址除外)
3.設定DHCP附加信息
domain-nameclient//為客戶機配置域後綴
dns-server10.1.1.110.1.1.2//為客戶機配置DNS伺服器的地址,這裡是10.1.1.1和10.1.1.2
netbios-name-server10.1.1.510.1.1.6//為客戶機配置WINS伺服器地址,這裡是10.1.1.5和10.1.1.6
netbios-node-typeh-node//為客戶機配置節點模式(影響名稱解釋的順利?如h-node是先通過wins伺服器解釋)
default-router10.1.0.10010.1.0.101//為客戶機配置默認網關
4.設定租約期限
lease8//設定租約時間為8天
5.有時候我們需要為DHCP伺服器設定子地址池,例如我們希望10.1.1.0/24這個網段的客戶機的網關為10.1.1.100,我們這樣設定:
ipdhcppoolsubglobal
network10.1.1.0255.255.255.0//global的子地址池,將從global繼承域名等選項
default-router10.1.1.10010.1.1.101//為客戶機配置默認網關
6.相關的DHCP調試命令
noservicedhcp//停止DHCP服務
showipdhcpbinding//顯示地址分配情況
showipdhcpconflict//顯示地址衝突情況。
工作方式
跨網運作
DHCDISCOVER 是以廣播方式進行的,其情形只能在同一網路之內進行,因為 router 是不會將廣播傳送出去的。但如果 DHCP伺服器安設在其它的網路上面呢?由於 DHCP客戶端還沒有 IP 環境設定,所以也不知道 Router 地址,而且有些 Router 也不會將 DHCP 廣播封包傳遞出去,因此這情形下 DHCP DISCOVER 是永遠沒辦法抵達 DHCP 伺服器那端的,當然也不會發生 OFFER 及其它動作了。要解決這個問題,我們可以用 DHCP Agent (或 DHCP Proxy )主機來接管客戶的 DHCP 請求,然後將此請求傳遞給真正的 DHCP伺服器,然後將伺服器的回覆傳給客戶。這裡,Proxy主機必須自己具有路由能力,且能將雙方的封包互傳對方。
若不使用 Proxy,也可以在每一個網路之中安裝 DHCP伺服器,但這樣的話,一來設備成本會增加,而且,管理上面也比較分散。當然,如果在一個十分大型的網路中,這樣的均衡式架構還是可取的。
分配地址
DHCP伺服器有3種為DHCP客戶機分配TCP/IP位址的方式:
● 手工分配:在手工分配中,網路管理員在DHCP伺服器通過手工方法配置DHCP客戶機的IP位址。當DHCP客戶機要求網路服務時,DHCP伺服器把手工配置的IP位址傳遞給DHCP客戶機。
● 自動分配:在自動分配中,不需要進行任何的IP位址手工分配。當DHCP客戶機第一次向DHCP伺服器租用到IP位址後,這個地址就永久地分配給了該DHCP客戶機,而不會再分配給其他客戶機。
● 動態分配:當DHCP客戶機向DHCP伺服器租用IP位址時,DHCP伺服器只是暫時分配給客戶機一個IP位址。只要租約到期,這個地址就會還給DHCP伺服器,以供其他客戶機使用。如果DHCP客戶機仍需要一個IP位址來完成工作,則可以再要求另外一個IP位址。
動態分配方法是惟一能夠自動重複使用IP位址的方法,它對於暫時連線到網上的DHCP客戶機來說尤其方便,對於永久性與網路連線的新主機來說也是分配IP位址的好方法。DHCP客戶機在不再需要時才放棄IP位址,如DHCP客戶機要正常關閉時,它可以把IP位址釋放給DHCP伺服器,然後DHCP伺服器就可以把該IP位址分配給申請IP位址的DHCP客戶機。
使用動態分配方法可以解決IP位址不夠用的困擾,例如C類網路只能支持254台主機,而網路上的主機有三百多台,但如果網上同一時間最多有200個用戶,此時如果使用手工分配或自動分配將不能解決這一問題。而動態分配方式的IP位址並不固定分配給某一客戶機,只要有空閒的IP位址,DHCP伺服器就可以將它分配給要求地址的客戶機;當客戶機不再需要IP位址時,就由DHCP伺服器重新收回。
封包格式
以下為對數據包各欄位的簡要說明:
OP 若是 client 送給 server 的封包,設為 1 ,反向為 2 。
HTYPE 硬體類別,Ethernet 為 1 。
HLEN 硬體地址長度, Ethernet 為 6 。
HOPS 若封包需經過 router 傳送,每站加 1 ,若在同一網內,為 0 。
TRANSACTION ID DHCP REQUEST 時產生的數值,以作 DHCPREPLY 時的依據。
SECONDS Client 端啟動時間(秒)。
FLAGS 從 0 到 15 共 16 bits ,最左一 bit 為 1 時表示 server 將以廣播方式傳送封包給 client ,其餘尚未使用。
ciaddr 要是 client 端想繼續使用之前取得之 IP 地址,則列於這裡。
yiaddr 從 server 送回 client 之 DHCP OFFER 與 DHCPACK封包中,此欄填寫分配給 client 的 IP 地址。
siaddr 若 client 需要透過網路開機,從 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此欄填寫開機程式代碼所在 server 之地址。
giaddr若需跨網域進行 DHCP 發放,此欄為 relay agent 的地址,否則為 0 。
chaddr Client 之硬體地址。
sname Server 之名稱字元串,以 0x00 結尾。
file 若client 需要透過網路開機,此欄將指出開機程式名稱,稍後以 TFTP 傳送。
options 允許廠商定議選項(Vendor-Specific Area),以提供更多的設定信息(如:Netmask、Gateway、DNS、等等)。其長度可變,同時可攜帶多個選項,每一選項之第一個 byte 為信息代碼,其後一個 byte 為該項數據長度,最後為項目內容。
CODE LEN VALUE
此欄位完全兼容 BOOTP ,同時擴充了更多選項。其中,DHCP封包可利用編碼為 0x53 之選項來設定封包類別:
項值 類別
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE
安裝過程
首先,DHCP伺服器在一台安裝有Windows 2000 Server/AdvancedServer系統的計算機上;其次,擔任DHCP伺服器的計算機需要安裝TCP/IP協定,並為其設定靜態IP位址、子網掩碼、默認網關等內容。默認情況下,DHCP作為Windows 2000 Server的一個服務組件不會被系統自動安裝,必須把它添加進來:
1.依次點擊“開始→設定→控制臺→添加/刪除程式→添加/刪除Windows組件”,打開相應的對話框。
2.用滑鼠左鍵點擊選中對話框的“組件”列表框中的“網路服務”一項,單擊[詳細信息]按鈕,出現帶有具體內容的對話框。
3.在對話框“網路服務的子組件”列表框中勾選“動態主機配置協定(DHCP)”,單擊[確定]按鈕,根據螢幕提示放入Windows 2000 安裝光碟,複製所需要的程式。
4.重新啟動計算機後,在“開始→程式→管理工具”下就會出現“DHCP”一項,說明DHCP服務安裝成功。
授權操作
出於對網路安全管理的考慮,並不是在Windows 2000Server中安裝了DHCP功能後就能直接使用,還必須進行授權操作,未經授權操作的伺服器無法提供DHCP服務。對DHCP伺服器授權操作的過程如下:
1.依次點擊“開始→程式→管理工具→DHCP”,打開DHCP控制台視窗。
2.在控制台視窗中,用滑鼠左鍵點擊選中伺服器名,然後單擊右鍵,在快捷選單中選中“授權”,此時需要幾分鐘的等待時間。注意:如果系統長時間沒有反應,可以按F5鍵或選擇選單工具中的“操作”下的“刷新”進行螢幕刷新,或先關閉DHCP控制台,在伺服器名上用滑鼠右鍵點擊。如果快捷選單中的“授權”已經變為“撤消授權”,則表示對DHCP伺服器授權成功。此時,最明顯的標記是伺服器名前面紅色向上的箭頭變成了綠色向下的箭頭。這樣,這台被授權的DHCP伺服器就有分配IP的權利了。
地址範圍
當DHCP伺服器被授權後,還需要對它設定IP位址範圍。通過給DHCP伺服器設定IP位址範圍後,當DHCP客戶機在向DHCP伺服器申請IP位址時,DHCP伺服器就會從所設定的IP位址範圍中選擇一個還沒有被使用的IP位址進行動態分配。添加IP位址範圍的操作如下:
1.點擊“開始→程式→管理工具→DHCP”,打開DHCP控制台視窗。
2.選中DHCP伺服器名,在伺服器名上點擊滑鼠右鍵,在出現的快捷選單中選擇“新建作用域”,在出現的視窗中單擊[下一步]按鈕,在出現的對話框中輸入相關信息,單擊[下一步]按鈕。
3.根據自己網路的實際情況,對各項進行設定,然後單擊[下一步]按鈕。
4.在對話框中,輸入需要排除的IP位址範圍。由於 網路中有很多網路設備需要指定靜態IP位址(即固定的IP位址),如伺服器、交換機、路由器等,此時必須把這些已經分配的IP位址從DHCP伺服器的IP位址範圍中排除,否則會引起IP位址的衝突,導致網路故障。
5.單擊[下一步]按鈕,在出現的“租約期限”視窗中可以設定IP位址租期的時間值。一般情況下,如果網路中的IP位址比較緊張的時候,可以把租期設定短一些,而IP位址比較寬鬆時,可以把租期設定長一些。設定完後,單擊[下一步]按鈕,出現“配置DHCP選項”視窗。
6.在“配置DHCP選項”視窗中,如果選擇“是,我想現在配置這些選項”,此時可以對DNS伺服器、默認網關、WINS伺服器地址等內容進行設定;如果選擇“否,我想稍後配置這些選項”,可以在需要這些功能時再進行配置。此處,我們選擇前者,單擊[下一步]按鈕。
7.在出現的視窗中,輸入網路中路由器的IP位址(即默認網關的IP位址)或是NAT伺服器(網路地址轉換伺服器)的IP位址,如WinRoute、SyGate等。這樣,客戶機從DHCP伺服器那裡得到的IP信息中就包含了默認網關的設定了,從而可以接入Internet。
8.單擊[下一步]按鈕,在此對話框中設定有關客戶機DNS域的名稱,同時輸入DNS伺服器的名稱和IP位址。,然後單擊[添加]按鈕進行確認。單擊[下一步]按鈕,在出現的視窗中進行WINS伺服器的相關設定,設定完後單擊[下一步]按鈕。
9.在出現的視窗中,選擇“是,我想現在激活此作用域”後,單擊[下一步]按鈕,在出現的視窗中單擊[完成]按鈕,設定結束。此時,就可以在DHCP管理器中看到我們剛剛建好的作用域。
特點
●管理員可以集中為整個網際網路指定通用和特定子網的TCP/IP參數,並且可以定義使用保留地址的客戶機的參數。
● 提供安全可信的配置。DHCP避免了在每台計算機上手工輸入數值引起的配置錯誤,還能防止網路上計算機配置地址的衝突。
● 使用DHCP伺服器能大大減少配置花費的開銷和重新配置網路上計算機的時間,伺服器可以在指派地址租約時配置所有的附加配置值。
●客戶機不需手工配置TCP/IP。
●客戶機在子網間移動時,舊的IP位址自動釋放以便再次使用。在再次啟動客戶機時,DHCP伺服器會自動為客戶機重新配置TCP/IP。
● 大部分路由器可以轉發DHCP配置請求,因此,網際網路的每個子網並不都需要DHCP伺服器。