您可以使用 /etc/dhcpd.conf 設定檔案來設定 DHCP 伺服器。
DHCP 也使用 /var/lib/dhcp/dhcpd.leases 檔案來儲存用戶端的租賃資料庫。 請參考 菴 18.2.2 節 以取得更多資訊。
設定 DHCP 伺服器的第一個步驟是建立用來儲存用戶端網路資訊的設定檔案。 您也可以宣告適用於所有用戶端的全域性選項,或者是對每一部用戶端系統宣告選項。
設定檔案可以含有任何多餘的跳位字元格或空白行列以美化格式。 關鍵字是有分辨大小寫的,而以井字號(#)開頭的行列會被視為註解。
目前已實作兩種 DNS 更新的機制 — ad-hoc DNS 更新模式與 interim DHCP-DNS 相互牽引更新模式。 當這兩個被接受為 IETF 標準過程的一部分時,將會出現第三個模式 — 標準的 DNS 更新模式。 DHCP 伺服器必須設定來使用目前這兩種機制的其中之一。 3.0b2pl11 與之前的版本使用 ad-hoc 模式; 然而這個模式已經過時了。 假如您想要保留相同的行為模式,增加下列這一行到設定檔案的頂端:
ddns-update-style ad-hoc; |
如要使用建議的模式,請加入以下這一行到設定檔案的頂端:
ddns-update-style interim; |
請閱讀 dhcpd.conf 的 man page,以取得關於不同模式的細節。
設定檔案中有兩種類型的描述:
參數(Parameters) — 陳述如何執行一項工作、是否要執行一項工作,或者要傳送何種網路設定選項到用戶端。
宣告(Declarations) — 描述網路的拓樸、描述用戶端、提供用戶端的位址或套用一組參數到一組宣告中。
有些參數必須以關鍵字 option 開頭,並且被當成是 options,options 用來設定 DHCP 的選項; 然而參數是用來設定非可選的數值或控制 DHCP 伺服器的操作行為。
在以大括號括住的區間之前宣告的參數(包括 options)被認定為全域性的參數。 全域性的參數將會套用於所有其下的部份。
重要 | |
---|---|
假如您更改設定檔案,所做的變更在使用 service dhcpd restart 指令重新啟動 DHCP 系統程式後才會生效。 |
在 範例 18-1 中,routers, subnet-mask, domain-name, domain-name-servers 與 time-offset 選項是使用在任何於其下宣告的 host 描述。
如 範例 18-1 所示,您可以宣告一個 subnet。 您必須包含一個 subnet 的宣告在網路中的每一個子網路,假如沒有的話,DHCP 伺服器將無法啟動。
在這個例子中,有宣告適用於子網路中每一個 DHCP 用戶端的全域性選項以及一個 range。 用戶端將會被指派 range 之間的一個 IP 位址。
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; } |
範例 18-1. 子網路宣告
共享同一實體網路的所有子網路都應該在如 範例 18-2 所示的 shared-network 的聲明中宣告。 位於 shared-network 以內以及在 subnet 聲明以外的參數被認定為全域性的參數。 shared-network 的名稱必須是網路的一個描述性稱呼,例如 test-lab 來代表在一個測試實驗室環境中的所有子網路。
shared-network name { option domain-name "test.redhat.com"; option domain-name-servers ns1.redhat.com, ns2.redhat.com; option routers 192.168.1.254; more parameters for EXAMPLE shared-network subnet 192.168.1.0 netmask 255.255.255.0 { parameters for subnet range 192.168.1.1 192.168.1.31; } subnet 192.168.1.32 netmask 255.255.255.0 { parameters for subnet range 192.168.1.33 192.168.1.63; } } |
範例 18-2. Shared-network 聲明
如 範例 18-3 的例子,group 的聲明可以使用來套用全域性的參數到一組聲明中。 您可以群集共享的網路、子網路、主機或其他的群組。
group { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } host raleigh { option host-name "raleigh.example.com"; hardware ethernet 00:A1:DD:74:C3:F2; fixed-address 192.168.1.6; } } |
範例 18-3. Group 聲明
如要設定一部 DHCP 伺服器以租賃一個動態的 IP 位址給子網路中的一部系統,請以您的數值修改 範例 18-4。 它將宣告一個預設的租賃期間、最大的租賃期間以及用戶端的網路設定數值。 這個範例將指派介於 192.168.1.10 與 192.168.1.100 range 中的 IP 位址給用戶端系統。
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "example.com"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; } |
範例 18-4. Range 參數
如要基於網路介面卡的 MAC 位址來指派一個 IP 位址給一部用戶端,請在 host 的聲明中使用 hardware ethernet 參數。 如 範例 18-5 範例所示,host apex 聲明指定使用 MAC 位址 00:A0:78:8E:9E:AA 的網路介面卡總是接收 192.168.1.4 這個 IP 位址。
請注意您也可以使用可選的參數 host-name 來指定一個主機名稱給一部用戶端。
host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } |
範例 18-5. 使用 DHCP 的靜態 IP 位址
建議 | ||
---|---|---|
您可以使用範例設定檔案在 Red Hat Linux 9 當作一個起始點,然後再加入您自己的設定選項。 請使用以下指令來複製它到適當的位置
|
如需要一個完整的選項聲明清單,以及它們的用途,請參考 dhcp-options 的 man page。
在 DHCP 伺服器中,/var/lib/dhcp/dhcpd.leases 檔案儲存 DHCP 用戶端的租賃資料庫。 您不能手動地修改這個檔案。 DHCP 對每一個近期指派 IP 位址的租賃資訊都會自動地儲存在租賃資料庫中。 這些資訊包括租賃的長度、IP 位址欲指派的對象、租賃開始與結束的日期以及使用來擷取租賃之網路介面卡的 MAC 位址。
在租賃資料庫中的所有時間都是格林威治標準時間(GMT),而不是本地時間。
租賃資料庫是經常建立的,因此它的容量並不大。 一開始,所有已知的租賃都儲存在一個暫時的租賃資料庫中。 dhcpd.leases 檔案會重新命名為 dhcpd.leases~,而暫時的租賃資料庫則寫入到 dhcpd.leases。
在租賃資料庫被重新命名為備份檔案後,且在新檔案被寫入之前,DHCP 系統程式也許會被中斷或者系統當機,如果發生這種情況的話,系統將缺少必要的 dhcpd.leases 檔案來啟動這項服務。 在此情況下,請勿建立新的租賃檔案,假如您試著建立的話,所有舊有的租賃資訊都將遺失,並且會導致很多問題。 正確的解決方法是重新命名 dhcpd.leases~ 備份檔案為 dhcpd.leases,然後重新啟動系統程式。
重要 | |
---|---|
在您第一次啟動 DHCP 伺服器時,將會失敗,除非有一個既有的 dhcpd.leases 檔案。 假如該檔案不存在的話,請使用 touch /var/lib/dhcp/dhcpd.leases 指令來建立這個檔案。 |
如要啟動 DHCP 服務,請使用 /sbin/service dhcpd start 指令。 如要停止 DHCP 伺服器,請使用 /sbin/service dhcpd stop 指令。 假如您想要系統程式在開機時自動啟動,請參閱 第14章 以取得如何管理服務的更多資訊。
假如您的主機含有一片以上的網路介面卡,不過您只想要在其中一個介面卡上啟動 DHCP 伺服器,您可以設定 DHCP 伺服器只在該裝置上啟動。 請在 /etc/sysconfig/dhcpd 檔案中加上該介面卡的名稱到 DHCPDARGS 的清單中:
# Command line options here DHCPDARGS=eth0 |
當您有一部含有兩片網路卡的防火牆機器時,這個選項將對您很有用處。 您可以設定一片網路卡當作 DHCP 的用戶端來擷取網際網路中的一個 IP 位址,而另一片網路卡則可使用來當作在防火牆裡面之內部網路的 DHCP 伺服器。 只指定連線至內部網路的網路卡將使得系統更加安全,因為使用者將無法透過網際網路連線至該系統程式。
其他可以在 /etc/sysconfig/dhcpd 指定的命令列選項包括:
-p <portnum> — 指定 dhcp 要聽取的 udp 連接埠號,預設值是埠號 67。 DHCP 伺服器以比所指定之 udp 埠號多一號的埠號傳輸回應到 DHCP 用戶端。 舉例來說,假如您接受預設埠號 67,伺服器將會聽取埠號 67 的要求,並以埠號 68 作出回應。 假如您在此指定一個連接埠,並且使用 DHCP 轉接代理(relay agent),您必須指定相同的連接埠以使 DHCP 轉接代理來聽取。 請看 菴 18.2.4 節 以取得細節。
-f — 執行該系統程式為一個前景的程序,這最常用在除錯階段。
-d — 紀錄 DHCP 伺服器系統程式到標準的錯誤描述符,這個選項大都用在除錯階段。 假如沒有指定這個,紀錄檔將會寫入到 /var/log/messages。
-cf filename — 指定設定檔案的位置,預設位置為 /etc/dhcpd.conf。
-lf filename — 指定租賃資料庫檔案的位置。 假如一個租賃資料庫檔案已經存在,每當 DHCP 伺服器啟動時,必須要使用相同的檔案,這是相當重要的。 在此強烈建議您只在非用於生產的系統上除錯時才使用這個選項。 預設的位置為 /var/lib/dhcp/dhcpd.leases。
-q — 啟動系統程式時不要列出整個著作權的訊息。
DHCP 轉接代理(dhcrelay) 讓您可以轉接來自一個沒有 DHCP 伺服器之子網路的 DHCP 與 BOOTP 要求到其他子網路中一個或更多的 DHCP 伺服器。
當一部 DHCP 用戶端要求資訊時,DHCP 轉接代理將傳送要求到 DHCP 轉接代理啟動時所指定的 DHCP 伺服器清單。 當 DHCP 伺服器傳回一個回應時,該回應將在原始要求所送出的網路中廣播或單點傳播。
DHCP 轉接代理會聽取所有介面上的 DHCP 要求,除非在 /etc/sysconfig/dhcrelay 中有指定該介面,且含有 INTERFACES 指令。
如要啟動 DHCP 轉接代理,請使用 service dhcrelay start 指令。