DHCP是Dynamic Host Configuration Protocol的英文縮寫,翻譯過來就是動態主機配置通訊協議。它的功能就是為網路連接動態分配IP地址,它允許用戶端電腦向網路伺服器自動擷取網路設定。DHCP伺服器使得網路系統管理員在管理網路中在網路中增加、刪除網路節點或者重新設定網路時,工作變得非常簡單,無須手工的分配IP地址。採用Linux主機建立DHCP伺服器,比Windows NT更加具有更好的性價比,本文以RedHat7.2為例,介紹如何採用Linux來建立DHCP伺服器,以及網路系統管理員如何管理好DHCP伺服器。
在Linux作業系統下建立DHCP伺服器非常簡單,只要掌握幾個簡單的命令,編輯/etc/DHCPd.conf檔案,很快就能夠建立DHCP伺服器。實際上操作並不比Windows NT複雜,具體操作如下:
一、如何建立DHCP服務。
⑴安裝DHCP伺服器軟體
# mount /mnt/cdrom # rpm -ivh /mnt/cdrom/RedHat/RPMS/DHCP-2.0pl5-8.i386.rpm |
⑵配置DHCP伺服器/etc/DHCPd.conf檔案。可以從/usr/share/doc/DHCP-2.0pl5目錄下拷貝一個例子檔案DHCPd.conf.sample,在這個檔案的基礎上修改。
以下僅僅是一個例子,具體看man DHCPd.conf文檔,DHCP伺服器在192.168.101.0網段。
subnet 192.168.2.0 netmask 255.255.255.0 { #$ 財務科 range 192.168.2.10 192.168.2.254; default-lease-time 43200; max-lease-time 86400; option broadcast-address 192.168.2.255; option subnet-mask 255.255.255.0; option routers 192.168.2.1; # option netbios-name-servers 192.168.101.10; }
subnet 192.168.3.0 netmask 255.255.255.0 { #$ 辦公 # range dynamic-bootp 192.168.3.10 192.168.3.254; range 192.168.3.10 192.168.3.254; default-lease-time 43200; max-lease-time 86400; option broadcast-address 192.168.3.255; option routers 192.168.3.1; option subnet-mask 255.255.255.0; # option netbios-name-servers 192.168.101.10; }
subnet 192.168.101.0 netmask 255.255.255.0 { } |
說明:#開頭的行,表示注釋,每一個subnet表示一段動態地址的設定。
range : 表示租用地址的範圍,可以包含不連續的多段地址,只需分別說明。
default-lease-time : 表示預設的租用時間,單位是秒。
max-lease-time : 表示最大的租用時間,單位是秒。
還可以包括一些可選項,如:
broadcast-address : 廣播位址。
routers : 預設路由或者網關。
subnet-mask: 子網路遮罩。
netbios-name-servers: 如果網路中存在Windows NT,可以指定wins伺服器的地址。
還有許多參數,如可以對特定硬體MAC的地址指定IP地址,具體操作看man DHCPd. conf文檔。
另外由於本例子DHCP伺服器在192.168.101.0網段,必須指定一個空的subnet。
說明:如果DHCP服務與DHCP客戶位於不同的網段,那麼網路中就必須具備有DHCP Relay Agent(即DHCP中繼代理)功能的IP路由器,把DHCP的資訊從一個網段傳送到另一個網段。一般的智能交換器都具有DHCP代理的功能,只要在交換器中設定DHCP伺服器的IP地址就可以了。
如果IP路由器的硬體裝置不能支援DHCP中繼代理的功能,需要在充當IP路由器的機器上安裝DHCP中繼代理程式,並且開啟IP Forward (IP轉寄)功能,DHCP的rpm包也提供dhcrelay命令,具體看man dhcrelay文檔。
⑶建立/var/lib/DHCP/DHCPd.leases檔案。
# touch /var/lib/DHCP/DHCPd.leases |
說明:各種不同的GNU/Linux發布版,建立DHCPd.leases可能位於不同的目錄, 必鬚根據不同的發布版來確定建立DHCPd.leases檔案的目錄。
⑷啟用DHCP服務,執行ntsysv命令,選中DHCPd,選擇OK退出,下次開機自動啟動DHCP服務,也可以手工執行如下命令進行測試:
/etc/rc.d/init.d/DHCPd start #啟動DHCP服務。 /etc/rc.d/init.d/DHCPd stop #關閉DHCP服務。 |
⑸測試
選擇一台客戶機,進入windows,將IP地址選擇為自動獲得,重新啟動後,執行winipcfg /all
檢查DHCP服務是否設定正確。
二、如何管理DHCP服務:
DHCP伺服器建立好後,對於網路系統管理員來說如何更好的管理DHCP服務,將是一個非常重要的問題,雖然網路系統管理員可以通過查看DHCPd.leases檔案瞭解用戶端IP等資訊的分配情況,但是當網路中機器較多的時候,顯然不是一個非常好的方法。
本人在具體的實踐中,發現通過使用DHCPstatus工具,能夠通過Web瀏覽器就能夠非常好的瞭解DHCP伺服器的使用與分配情況。
具體操作如下:
⑴下載與安裝DHCPstatus軟體。
下載http://prdownloads.sourceforge.net/DHCPstatus/DHCPstatus_0.60.tar.gz
# tar xzvf DHCPstatus_x.xx.tar.gz -C /tmp |
⑵仔細閱讀安裝目錄的install檔案,具體操作步驟如下:
(a)建立library目錄。
# mkdir /usr/local/DHCPstatus # cd /usr/local/DHCPstatus |
(b)解壓library的tar檔案到/usr/local/DHCPstatus目錄。
# tar xvf /tmp/DHCPstatus_x.xx/libraries.tar |
將建立一個DHCPstatus目錄和DHCPstatis.ini檔案。
(c)根據具體的DHCP伺服器的設定,修改與編輯DHCPstatus.ini檔案,最主要的參數是:
title=DHCP Subnet Information leases_file=/etc/DHCPd.leases 改為: title=XXXX DHCP Subnet Information leases_file=/var/lib/DHCP/DHCPd.leases #注鬚根據具體的Linux發布版修改leases_file參數。 |
(d)如果以上建立DHCPd.conf檔案沒有包括如:/“ #$ 財務科/”這些資訊,最好加入,DHCPstaus.cgi指令碼通過讀取/etc/DHCPd.conf檔案來獲得這些資訊,注意$不能省略。
(e)安裝scripts檔案,拷貝scripts目錄下的DHCPstatus.cgi檔案到web服務的cgi-bin目錄:
# cp /tmp/DHCPstatus_x.xx/scripts/DHCPstatus.cgi /var/www/cgi-bin # cp /path/to/DHCPstatus_x.xx/scripts/DHCPstatus /usr/local/bin 修改 #!/usr/local/bin/perl -w 為 #!/usr/bin/perl -w |
(f)建立瀏覽器首頁,只要加入如下代碼:
<P ALIGN=/“center/”> <A HREF=/“cgi-bin/DHCPstatus.cgi/”> DHCP Subnet Status </A> </P> |
(g)為了安全起見,可以給Web伺服器建立密碼,以Redhat7.2帶的Apache 1.3.20為例說明:
*修改/etc/httpd/conf/httpd.conf,將:
<Directory /"/var/www/html/"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> 改為: <Directory /"/var/www/html/"> Options Indexes FollowSymLinks AllowOverride AuthConfig Order allow,deny Allow from all </Directory> *在/var/www/html目錄建立一個.htaccess檔案,內容如下: AuthName /"DHCP Status Access/" AuthType Basic AuthUserFile /var/www/html/.htpasswd require valid-user *執行htpasswd命令,在/var/www/html目錄建立一個.htpasswd檔案. htpasswd -bc /var/www/html/.htpasswd admin XXXX 其中XXXX表示密碼,也可以增加更多的系統管理使用者,具體操作看man htpasswd 文檔。 |
(h)啟動httpd服務,/etc/rc.d/init.d/httpd restart
通過以上的設定,網路系統管理員就可以非常方便的管理DHCP服務,瞭解DHCP的使用與分配情況。