動態主機配置協議(DHCP)是用來自動給客戶機器分配 TCP/IP 信息的網絡協議。每個 DHCP 客戶都連接到中央位置的 DHCP 服務器,該服務器會返回包括 IP 地址、網關和 DNS 服務器信息的客戶網絡配置。
18.1. 為什麼使用 DHCPDHCP 在快速發送客戶網絡配置方面很有用場。當配置客戶系統時,管理員可以選擇 DHCP,並不必輸入 IP 地址、子網掩碼、網關、或 DNS 服務器。客戶從 DHCP 服務器中檢索這些信息。DHCP 在管理員想改變大量系統的 IP 地址時也大有用途。與其重新配置所有系統,管理員只需編輯服務器上的一個 DHCP 配置文件即可獲得新 IP 地址集合。如果某機構的 DNS 服務器改變了,這種改變只需在 DHCP 服務器上而不必在 DHCP 客戶上進行。一旦客戶的網絡被重新啟動(或客戶重新引導系統),改變就會生效。
除此之外,如果便攜電腦或任何類型的可移計算機被配置使用 DHCP,只要每個辦公室都有一個允許它聯網的 DHCP 服務器,它就可以不必重新配置而在辦公室間自由移動。
18.2. 配置 DHCP 服務器你可以使用配置文件 /etc/dhcpd.conf 來配置 DHCP 服務器。
DHCP 還使用 /var/lib/dhcp/dhcpd.leases 文件來貯存客戶租期數據庫。詳情請參閱第 18.2.2 節。
18.2.1. 配置文件配置 DHCP 服務器的第一步是創建貯存客戶網絡信息的配置文件。全局選項可以為所有客戶聲明,可選選項可以為每個客戶系統聲明。
該配置文件可以使用任何附加的制表符或空行來進行簡單格式化。關鍵字是區分大小寫的,起首為井號(#)的行是注釋。
目前實現了兩種 DNS 更新方案 — 特殊 DNS 更新模式和過渡性 DHCP-DNS 互動草圖更新模式。如果這兩種模式被接受為 IETF 標准進程的一部分,就會出現第三個模式 — 標准 DNS 更新方法。DHCP 服務器必須配置使用這兩種當前方案中的一種。版本 3.0b2pl11 以及更早的版本使用特殊模式;不過,這種模式已經過時。如果你想保留相同的行為方式,在配置文件的開頭添加以下一行:
ddns-update-style ad-hoc;要使用推薦的模式,在配置文件的開頭添加以下一行:
ddns-update-style interim;請閱讀 dhcpd.conf 的說明書(man)頁來獲得有關不同模式的細節。
配置文件中有兩類陳述:
參數 — 表明如何執行任務,是否要執行任務,或將哪些網絡配置選項發送給客戶。
聲明 — 描述網絡的布局;描述客戶;提供客戶的地址;或把一組參數應用到一組聲明中。
某些參數必須以 option 關鍵字開頭,它們也被稱為選項。選項配置 DHCP 的可選選項;而參數配置的是必選的或控制 DHCP 服務器行為的值。
在使用大括號({ })的部分之前聲明的參數(包括選項)通常被當做全局參數。全局參數應用位於其下的所有部分。
重要:如果你改變了配置文件,這些改變在你使用 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. 子網聲明
所有共享同一物理網絡的子網應該在 shared-network 聲明之內聲明,如例 18-2所示。在 shared-network 之內,但在被包圍起來的 subnet 聲明之外的參數被當做全局參數。 shared-network 的名稱應該是對網絡有描述性的標題,例如,使用 test-lab 來描述所有處於實驗室(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. 共享網絡聲明
如例 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. 組群聲明
要配置將動態 IP 地址租給子網內系統的 DHCP 服務器,用你的數值來修改例 18-4。它為客戶聲明一個默認租期、最長租期、以及網絡配置值。范例中把 range 192.168.1.10 和 192.168.1.100 之間的 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. 范圍參數
要根據網卡的 MAC 地址給客戶分配 IP 地址,使用 host 聲明內的 hardware ethernet 參數。 如例 18-5 中所演示, host apex 聲明表明:網卡的 MAC 地址為 00:A0:78:8E:9E:AA 的系統所分配的 IP 地址將一直是 192.168.1.4。
注意,你還可以使用可選的參數 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 的配置文件范例作為樣板,然後在其上添加你自己定制的配置選項。使用下面的命令把它復制到正確的位置裡:
例 18-5. 使用 DHCP 的靜態 IP 地址
竅門:你可以使用 Red Hat Linux 9 的配置文件范例作為樣板,然後在其上添加你自己定制的配置選項。使用下面的命令把它復制到正確的位置裡: