DHCP 與負載平衡

作者:徐秉義(Albert Hsu)

一般中小企業為因應公司成長,逐漸建置二或三條以上的Internet線路後,原先的DHCP伺服器,往往會將客戶端電腦的預設閘道(Default Gateway),都指向到其中一個線路上去。這樣的情況,會使得某一條線路的使用率很高,而其他條線路卻使用率很低!本文將介紹讀者,以『設定DHCP伺服器,平均分配客戶端電腦的預設閘道。』,輕鬆達到負載平衡的目地。

示意圖:之前(左)之後(右)

DHCP 與負載平衡_休闲DHCP 與負載平衡_休闲_02

DHCP伺服器建置流程

以下將示範如何建置DHCP伺服器,並使其平均分配客戶端電腦的預設閘道。

安裝DHCP伺服器套件

第1步:開啟終端機程式,輸入指令『rpm -qa | grep dhc』查詢是否已經安裝了DHCP伺服器套件。如果發現系統內還沒有安裝相關套件,請由安裝光碟或網路下載,取得相關套件安裝。其中包含伺服端套件『dhcp』及客戶端套件『dhclient』。若是讀者已經裝好相關套件則可略過第2步與第3步。

DHCP 與負載平衡_职场_03

第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』
 

DHCP 與負載平衡_休闲_04

『wget ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS/dhclient-3.0.1-11.i386.rpm』

DHCP 與負載平衡_职场_05

第3步:使用rpm指令或圖形介面安裝相關套件。使用rpm指令安裝套件的用法為『rpm -ivh 套件名稱』,詳細指令如下
『rpm -ivh dhcp-3.0.1-11.i386.rpm dhclient-3.0.1-11.i386.rpm』

DHCP 與負載平衡_DHCP_06

如果要使用圖形介面安裝,請依序點選桌面上的【應用程式】→【系統設定】→【新增╱移除應用程式】開啟『套件管理』對話盒。對話盒出現後,利用垂直捲軸往下拖拉對話盒畫面,找到『網路伺服器』將左邊的核取方塊選取。

DHCP 與負載平衡_职场_07

接著在右邊的『詳細資訊』上按一下滑鼠左鍵。然後在『網路伺服器 套件詳細資訊』對話盒內勾選『dhcp-一個DHCP(Dynamic Host Configuration Protocol)伺服器與中繼代理(relay agent)。』最後按下〔關閉〕回到『套件管理』視窗,再按一下〔更新〕。接下來依照指示放入光碟片即可。

DHCP 與負載平衡_休闲_08

設定DHCP設定檔『dhcpd.conf』

第1步:DHCP伺服器的設定包含在『/etc/dhcpd.conf』設定檔案,接下來執行『vi /etc/dhcpd.conf』指令來設定DHCP伺服器。

DHCP 與負載平衡_职场_09

第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;
        }
}

DHCP 與負載平衡_DHCP_10

設定檔案內容解釋如下:

動態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 與負載平衡_休闲_11

設定開機時自動啟動DHCP伺服器

可使用命令模式,執行『chkconfig dhcpd on』設定開機時自動啟動DHCP伺服器並可利用『chkconfig --list dhcpd』檢查是否設定成功。

DHCP 與負載平衡_职场_12

或使用選單模式,執行『ntsysv』進入設定介面後,隨後利用〔↓〕鍵移動游標選擇〔dhcpd〕,然後按一下空白鍵進行選取,再按下〔Tab〕鍵將游標移動到〔確定〕並按下〔Enter〕鍵離開。

DHCP 與負載平衡_DHCP_13

@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)〕,之後皆按下〔確定〕離開。

DHCP 與負載平衡_DHCP_14

第2步:透過【開始功能表】→【執行】→【cmd】,呼叫出cmd.exe程式,接著執行『ipconfig /all』,可以看到比較詳細的資訊。以此例來說:這台電腦的使用IP為『192.168.2.26』,預設閘道為『192.168.2.1』

DHCP 與負載平衡_DHCP_15

Linux客戶端電腦測試流程

第1步:開啟終端機程式,輸入指令『netconfig』

DHCP 與負載平衡_职场_16

按下〔Enter〕回答〔是〕

DHCP 與負載平衡_DHCP_17

按下〔空白鍵〕勾選〔使用動態分配IP(BOOTP/DHCP)〕,接著按下〔Tab〕鍵使游標移動到〔確定〕,按下〔Enter〕離開選單畫面

DHCP 與負載平衡_休闲_18

第2步:輸入指令『service network restart』重新啟動網路

DHCP 與負載平衡_DHCP_19

第3步:輸入指令『ifconfig』查詢IP相關資訊。以此例來說:這台電腦的使用IP為『192.168.2.62』。

DHCP 與負載平衡_休闲_20

接著輸入指令『route -n』查詢預設閘道資訊。以此例來說:這台電腦使用的預設閘道為『192.168.2.2』

DHCP 與負載平衡_休闲_21

其他相關資訊及結語

底下就DHCP伺服器該如何查詢發配紀錄,以及實際運作的情形,加以介紹。

DHCP伺服器的發配紀錄『dhcpd.leases』

DHCP伺服器的發配客戶端電腦的紀錄會寫在『dhcpd.leases』,可執行『less /var/lib/dhcp/dhcpd.leases』觀看其內容。

DHCP 與負載平衡_职场_22

DHCP 與負載平衡_职场_23

內容範本如下:

...
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為基礎的喔。