作者:徐秉義(Albert Hsu)
一般中小企業為因應公司成長,逐漸建置二或三條以上的Internet線路後,原先的DHCP伺服器,往往會將客戶端電腦的預設閘道(Default Gateway),都指向到其中一個線路上去。這樣的情況,會使得某一條線路的使用率很高,而其他條線路卻使用率很低!本文將介紹讀者,以『設定DHCP伺服器,平均分配客戶端電腦的預設閘道。』,輕鬆達到負載平衡的目地。
示意圖:之前(左)之後(右)
DHCP伺服器建置流程
以下將示範如何建置DHCP伺服器,並使其平均分配客戶端電腦的預設閘道。
安裝DHCP伺服器套件
第1步:開啟終端機程式,輸入指令『rpm -qa | grep dhc』查詢是否已經安裝了DHCP伺服器套件。如果發現系統內還沒有安裝相關套件,請由安裝光碟或網路下載,取得相關套件安裝。其中包含伺服端套件『dhcp』及客戶端套件『dhclient』。若是讀者已經裝好相關套件則可略過第2步與第3步。
第2步:從安裝光碟或網路下載,取得相關套件安裝。筆者以Fedora Core 3為例,相關套件在安裝光碟『Fedora/RPMS/』的目錄下。或可使用wget指令透過網路下載即可
『wget ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS/dhcp-3.0.1-11.i386.rpm』
『wget ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS/dhclient-3.0.1-11.i386.rpm』
第3步:使用rpm指令或圖形介面安裝相關套件。使用rpm指令安裝套件的用法為『rpm -ivh 套件名稱』,詳細指令如下
『rpm -ivh dhcp-3.0.1-11.i386.rpm dhclient-3.0.1-11.i386.rpm』
如果要使用圖形介面安裝,請依序點選桌面上的【應用程式】→【系統設定】→【新增╱移除應用程式】開啟『套件管理』對話盒。對話盒出現後,利用垂直捲軸往下拖拉對話盒畫面,找到『網路伺服器』將左邊的核取方塊選取。
接著在右邊的『詳細資訊』上按一下滑鼠左鍵。然後在『網路伺服器 套件詳細資訊』對話盒內勾選『dhcp-一個DHCP(Dynamic Host Configuration Protocol)伺服器與中繼代理(relay agent)。』最後按下〔關閉〕回到『套件管理』視窗,再按一下〔更新〕。接下來依照指示放入光碟片即可。
設定DHCP設定檔『dhcpd.conf』
第1步:DHCP伺服器的設定包含在『/etc/dhcpd.conf』設定檔案,接下來執行『vi /etc/dhcpd.conf』指令來設定DHCP伺服器。
第2步:將內容設定如下
ddns-update-style ad-hoc; option domain-name "localdomain"; option domain-name-servers 168.95.1.1, 168.95.192.1; subnet 192.168.2.0 netmask 255.255.255.0 { pool { range 192.168.2.10 192.168.2.59; option routers 192.168.2.1; } pool { range 192.168.2.60 192.168.2.109; option routers 192.168.2.2; } pool { range 192.168.2.110 192.168.2.159; option routers 192.168.2.3; } }
設定檔案內容解釋如下:
動態dns的更新方式,在此使用ad-hoc的方式:
ddns-update-style ad-hoc;
分配給客戶端電腦的網域名稱,在此以localdomain為例:
option domain-name "localdomain";
分配給客戶端電腦的名稱解析伺服器,在此以dns.hinet.net(168.95.1.1)與hntp1.hinet.net(168.95.192.1)為例:
option domain-name-servers 168.95.1.1, 168.95.192.1;
管理192.168.2.0/255.255.255.0這個網段
subnet 192.168.2.0 netmask 255.255.255.0 { ... ... ... }
這就是本文的重心:將客戶端電腦的IP分三段,分別走向不同的預設閘道。
192.168.2.10到192.168.2.59這段的主機預設閘道為192.168.2.1(IP分享器-A的內部IP)
192.168.2.60到192.168.2.109這段的主機預設閘道為192.168.2.2(IP分享器-B的內部IP)
192.168.2.110到192.168.2.159這段的主機預設閘道為192.168.2.3(IP分享器-C的內部IP)
pool { range 192.168.2.10 192.168.2.59; option routers 192.168.2.1; } pool { range 192.168.2.60 192.168.2.109; option routers 192.168.2.2; } pool { range 192.168.2.110 192.168.2.159; option routers 192.168.2.3; }
啟動DHCP伺服器
在設定檔案撰寫好後,需要啟動DHCP伺服器,這樣才會使設定生效。此時,可以執行『service dhcpd start』或『/etc/init.d/dhcpd start』
設定開機時自動啟動DHCP伺服器
可使用命令模式,執行『chkconfig dhcpd on』設定開機時自動啟動DHCP伺服器並可利用『chkconfig --list dhcpd』檢查是否設定成功。
或使用選單模式,執行『ntsysv』進入設定介面後,隨後利用〔↓〕鍵移動游標選擇〔dhcpd〕,然後按一下空白鍵進行選取,再按下〔Tab〕鍵將游標移動到〔確定〕並按下〔Enter〕鍵離開。
@TIPS:以上的兩個方式,都可以用來設定daemon/service是否要在開機時自動啟動。
DHCP客戶端電腦測試流程
要測試DHCP伺服器是否運作得宜,需要使用到客戶端電腦,接下來就以常見的Windows及Linux做示範。
NOTE:另一種常見的作業系統MAC OS X,因筆者身邊暫時無此種類型的電腦,故無法一一做介紹,請讀者自行查詢MAC OS X相關使用手冊,進行測試。
Windows客戶端電腦測試流程
第1步:開啟『控制台』中『網路和撥號連線』『區域連線 內容』對話盒,雙擊〔Internet Protocol(TCP/IP)〕。接著在『Internet Protocol(TCP/IP) 內容』對話盒中,勾選〔自動取得IP位址(0)〕及〔自動取得DNS伺服器位址(B)〕,之後皆按下〔確定〕離開。
第2步:透過【開始功能表】→【執行】→【cmd】,呼叫出cmd.exe程式,接著執行『ipconfig /all』,可以看到比較詳細的資訊。以此例來說:這台電腦的使用IP為『192.168.2.26』,預設閘道為『192.168.2.1』
Linux客戶端電腦測試流程
第1步:開啟終端機程式,輸入指令『netconfig』
按下〔Enter〕回答〔是〕
按下〔空白鍵〕勾選〔使用動態分配IP(BOOTP/DHCP)〕,接著按下〔Tab〕鍵使游標移動到〔確定〕,按下〔Enter〕離開選單畫面
第2步:輸入指令『service network restart』重新啟動網路
第3步:輸入指令『ifconfig』查詢IP相關資訊。以此例來說:這台電腦的使用IP為『192.168.2.62』。
接著輸入指令『route -n』查詢預設閘道資訊。以此例來說:這台電腦使用的預設閘道為『192.168.2.2』
其他相關資訊及結語
底下就DHCP伺服器該如何查詢發配紀錄,以及實際運作的情形,加以介紹。
DHCP伺服器的發配紀錄『dhcpd.leases』
DHCP伺服器的發配客戶端電腦的紀錄會寫在『dhcpd.leases』,可執行『less /var/lib/dhcp/dhcpd.leases』觀看其內容。
內容範本如下:
... lease 192.168.2.26 { starts 6 2005/06/25 17:03:25; ends 0 2005/06/26 05:03:25; tstp 0 2005/06/26 05:03:25; binding state active; next binding state free; hardware ethernet 00:01:02:73:70:b1; uid "\001\000\001\002sp\261"; client-hostname "sunnylin_desk"; } ...
可得知的相關資訊包括:
發送出去的IP為192.168.2.26
... lease 192.168.2.26 { ... ... ... } ...
租約開始與結束的日期
starts 6 2005/06/25 17:03:25; ends 0 2005/06/26 05:03:25;
客戶端主機的硬體MAC位址
hardware ethernet 00:01:02:73:70:b1;
客戶端主機的主機名稱
client-hostname "sunnylin_desk";
IP範圍配置注意事項
在實際運作的情形下,DHCP伺服器在剛剛啟動時並不一定會很平均的發配區段。舉例來說:若是企業內部有100台電腦,皆使用DHCP自動取得IP,建議將區段設定成3段各34台(3 x 34 = 102 > 100 )的方式。避免因為範圍設定太大造成多數主機都取得同一預設閘道的IP區段,或是範圍設定太小造成有些主機無法取得IP的問題。
結論
以上的設定經驗,其實是筆者在實務工作上,想要更『人性化』及更『方便管理』而實驗出來的方式。若讀者用比較技術關點的『負載平衡』來看,說實在的是有些差異。畢竟『負載平衡』包含『InBound(進)』與『OutBound(出)』兩方面,本例其實只做到『InBound』的部份,而且並未提及『備援機制』。
若讀者對於專業等級的『負載平衡』解決方案有興趣,其實是可以朝向研究像是『負載平衡理論』及『Linux在負載平衡上的應用』,其實市場上有許多的負載平衡主機,皆是以Linux為基礎的喔。