跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / DHCP
適用範圍 SUSE Linux Enterprise Server 12 SP5

27 DHCP

動態主機組態通訊協定 (DHCP) 的用途是從伺服器集中指定網路設定,這樣就不必在每一個工作站本地分別設定。設定要使用 DHCP 的主機對於自己的靜態位址並沒有控制權。它可以根據伺服器的指示完全且自動地設定自己本身。如果您在用戶端使用 NetworkManager,則不必設定用戶端。這在環境多變、而且一次只使用一個介面的情況下非常有用。絕對不要在執行 DHCP 伺服器的機器上使用 NetworkManager。

提示
提示:IBM Z:DHCP 支援

在 IBM Z 平台上,DHCP 僅可在使用 OSA 和 OSA Express 網路卡的介面上運作。這些網路卡是唯一使用 MAC 的網路卡,是 DHCP 自動組態功能的必要元件。

DHCP 伺服器的一種設定方式是識別每個使用網路卡硬體位址 (大部分的情況下是固定的) 的用戶端,以後每次用戶端連接伺服器時,將提供相同的設定值給用戶端。或者,也可以將 DHCP 設定成從專門設定的位址池,動態指派位址給每個相關用戶端。在後者的情形中,DHCP 伺服器在每次接到請求時會指派相同的位址給用戶端,即使經過較長的時間也是一樣。這只適用於網路用戶端數少於網路位址數的情況。

DHCP 可簡化系統管理員的工作。任何與位址及一般網路組態相關的變更 (包括較大的變更) 都可集中執行,只要編輯伺服器的組態檔。與重新設定眾多的工作站相比,這種方法要便利許多。此外,由於這些機器可以從位址池獲取 IP 位址,因此將機器 (特別是新機器) 整合到網路中也要容易得多。從 DHCP 伺服器擷取適當的網路設定這種方式,對於經常需要在不同網路中使用筆記型電腦的情況特別有用。

在本章中,DHCP 伺服器將在使用 192.168.2.1 做為閘道的工作站 192.168.2.0/24 所在的同一子網路中執行。DHCP 伺服器有固定的 IP 位址 192.168.2.254,提供的位址範圍有兩個︰192.168.2.10192.168.2.20 以及 192.168.2.100192.168.2.200

DHCP 伺服器不僅提供 IP 位址和網路遮罩,也提供主機名稱、領域名稱、閘道和名稱伺服器位址供用戶端使用。除此之外,DHCP 也允許集中設定一些其他的參數,例如,用戶端可以輪詢目前時間的時間伺服器,甚至是列印伺服器。

27.1 使用 YaST 設定 DHCP 伺服器

若要安裝 DHCP 伺服器,請啟動 YaST 並選取軟體 › 軟體管理。選擇過濾器 › 模式,然後選取DHCP 及 DNS 伺服器。請確認安裝個別套件,以完成此安裝程序。

重要
重要:LDAP 支援

YaST DHCP 模組可以設定成將伺服器組態儲存在本地 (即執行 DHCP 伺服器的主機上),或是由 LDAP 伺服器來管理其組態資料。若要使用 LDAP,請在設定 DHCP 伺服器前設定 LDAP 環境。

如需 LDAP 的詳細資訊,請參閱Chapter 5, LDAP—A Directory Service

YaST DHCP 模組 (yast2-dhcp-server) 可讓您將自己的 DHCP 伺服器設定用於區域網路。該模組能夠以精靈模式或是進階組態模式執行。

27.1.1 初始組態 (精靈)

首次啟動模組時,會啟動精靈,提示您對伺服器管理進行一些基本設定。完成此初始設定程序後會產生一個非常基本的伺服器組態,能夠發揮其基本功能。進階模式可以處理更多進階設定任務。請執行下列步驟︰

  1. 請從清單中選取 DHCP 伺服器應監聽的介面,然後按一下選取。接著選取開啟選取介面的防火牆,以開啟此介面的防火牆,然後按下一步。請參閱圖形 27.1 「DHCP 伺服器︰介面卡選項」

    DHCP 伺服器︰介面卡選項
    圖 27.1︰ DHCP 伺服器︰介面卡選項
  2. 使用核取方塊決定您的 DHCP 設定是否要由 LDAP 伺服器自動儲存。在文字方塊中提供 DHCP 伺服器應管理的所有用戶端的網路細節。這些細節包括網域名稱、時間伺服器的位址、主要及次要名稱伺服器的位址、列印和 WINS 伺服器的位址 (供同時具有 Windows 與 Linux 用戶端的混和網路使用)、閘道位址以及租用時間。請參閱圖形 27.2 「DHCP 伺服器︰全域設定」

    DHCP 伺服器︰全域設定
    圖 27.2︰ DHCP 伺服器︰全域設定
  3. 設定應該如何將動態 IP 位址指定給用戶端。若要這樣做,指定伺服器可以指派位址給 DHCP 用戶端的 IP 範圍。所有這些位址應該涵蓋在相同的網路遮罩下。另外也指定租用時間,在此時間段內用戶端可以保留其 IP 位址,無需要求延續租用。或者,指定最長出租時間,也就是伺服器保留特定用戶端之 IP 位址的時間。請參閱圖形 27.3 「DHCP 伺服器︰動態 DHCP」

    DHCP 伺服器︰動態 DHCP
    圖 27.3︰ DHCP 伺服器︰動態 DHCP
  4. 定義應該如何啟動 DHCP 伺服器。指定您希望系統開機時自動啟動 DHCP 伺服器,還是在需要時手動啟動 (例如,用於測試目的)。按一下完成完成伺服器的組態。請參閱圖形 27.4 「DHCP 伺服器︰啟動」

    DHCP 伺服器︰啟動
    圖 27.4︰ DHCP 伺服器︰啟動
  5. 除了以先前步驟描述的方式使用動態 DHCP 外,您也可以設定伺服器以準靜態方式指定位址。使用下半部所提供的文字方塊,指定要以這種方式進行管理之用戶端的清單。具體而言,就是提供要指定給這類用戶端的名稱IP 位址,另外還要提供硬體位址網路類型(記號環或乙太網路)。使用新增編輯從清單中刪除修改顯示於螢幕上半部分的用戶端清單。請參閱圖形 27.5 「DHCP 伺服器︰主機管理」

    DHCP 伺服器︰主機管理
    圖 27.5︰ DHCP 伺服器︰主機管理

27.1.2 DHCP 伺服器組態 (進階)

除了稍早討論的組態方法外,還有進階組態模式,可讓您變更 DHCP 伺服器設定的每個細節。啟動進階組態,方法是在啟動對話方塊中按一下DHCP 伺服器進階組態(請參閱圖形 27.4 「DHCP 伺服器︰啟動」)。

Chroot 環境與宣告

在此第一個對話方塊中,選取啟動 DHCP 伺服器讓現有組態可以編輯。DHCP 伺服器行為的一個重要功能是它能夠在 chroot 環境或 chroot jail 中執行,以確保伺服器主機的安全。如果 DHCP 伺服器受到了外部攻擊,攻擊者仍將被封鎖在 chroot jail 中,從而可防止其存取系統的其他部分。對話方塊的下半部顯示已經定義之宣告的樹狀檢視。使用新增刪除編輯修改這些宣告。選取進階將帶您到其他的進階對話方塊。請參閱圖形 27.6 「DHCP 伺服器︰Chroot Jail 和宣告」。 選取 新增 後,定義要新增的宣告類型。使用 進階,檢視伺服器的記錄檔、設定 TSIG 金鑰管理,並根據 DHCP 伺服器的設定調整防火牆的組態。

DHCP 伺服器︰Chroot Jail 和宣告
圖 27.6︰ DHCP 伺服器︰Chroot Jail 和宣告
選取宣告類型

DHCP 伺服器的全域選項由數個宣告組成。此對話方塊可讓您設定宣告類型︰子網路主機共享網路群組位址池類別。此範例顯示新子網路的選項 (請參閱圖形 27.7 「DHCP 伺服器︰選取宣告類型」)。

DHCP 伺服器︰選取宣告類型
圖 27.7︰ DHCP 伺服器︰選取宣告類型
子網路組態

此對話方塊可讓您使用 IP 位址及網路遮罩來指定新的子網路。在對話方塊的中間部分,使用新增編輯刪除修改所選子網路的 DHCP 伺服器啟動選項。若要設定子網路的動態 DNS,選取 動態 DNS

DHCP 伺服器︰設定子網路
圖 27.8︰ DHCP 伺服器︰設定子網路
TSIG 金鑰管理

如果在上一個對話方塊中選擇設定動態 DNS,現在可以針對安全區域傳輸設定金鑰管理。選取確定 會帶您到另一個對話方塊,讓您設定動態 DNS 的介面 (請參閱 圖形 27.10 「DHCP 伺服器︰動態 DNS 的介面組態」)。

DHCP 伺服器︰TSIG 組態
圖 27.9︰ DHCP 伺服器︰TSIG 組態
動態 DNS︰介面組態

選取啟用此子網路的動態 DNS,即可啟用子網路的動態 DNS。完成此操作後,使用下拉式方塊啟用正向與反向區域的 TSIG 金鑰 (確定這些金鑰同時也是 DNS 和 DHCP 伺服器使用的金鑰)。使用更新全域動態 DNS 設定,來依據動態 DNS 環境自動更新及調整全域 DHCP 伺服器設定。最後,定義每個動態 DNS 的哪些轉遞和反向區域需要更新,為兩個區域都指定主要名稱伺服器的名稱。選取確定返回子網路組態對話方塊 (請參閱圖形 27.8 「DHCP 伺服器︰設定子網路」)。再次選取確定返回最初的進階組態對話方塊。

DHCP 伺服器︰動態 DNS 的介面組態
圖 27.10︰ DHCP 伺服器︰動態 DNS 的介面組態
網路介面組態

若要定義 DHCP 伺服器應該監聽的介面以及調整防火牆組態,請從進階組態對話方塊中選取進階 › 介面組態。從顯示的介面清單中,選取一或多個要由 DHCP 伺服器處理的介面。如果所有子網路中的用戶端都必須能與伺服器通訊,並且伺服器主機還要執行防火牆,請對防火牆進行相應的調整。若要這樣做,請選取調整防火牆設定。接著,YaST 會根據新的條件調整 SuSEFirewall2 的規則 (請參閱圖形 27.11 「DHCP 伺服器︰網路介面和防火牆」),之後您即可選取確定返回最初的對話方塊。

DHCP 伺服器︰網路介面和防火牆
圖 27.11︰ DHCP 伺服器︰網路介面和防火牆

完成所有組態步驟後,按一下確定關閉對話方塊。伺服器現在會以新的組態啟動。

27.2 DHCP 軟體套件

SUSE Linux Enterprise Server 可以使用 DHCP 伺服器,也可以使用 DHCP 用戶端。可用的 DHCP 伺服器是 dhcpd (由 Internet Systems Consortium 發佈)。用戶端提供了 dhcp-client (ISC 也有提供) 及 wicked 套件附帶的工具。

依預設,wicked 工具會連同 wickedd-dhcp4wickedd-dhcp6 服務一起安裝。系統每次開機時,會自動啟動它們,以監視 DHCP 伺服器。它們不需要組態檔來執行其工作,而且大部份的標準設定可以直接使用。如果情況較為複雜,請使用 ISC dhcp-client,此程式透過組態檔 /etc/dhclient.conf/etc/dhclient6.conf 來控制。

27.3 DHCP 伺服器 dhcpd

任何 DHCP 系統的核心都是動態主機組態通訊協定精靈。這個伺服器會依照組態檔 /etc/dhcpd.conf 中定義的設定,租用位址並監看其使用情形。藉由變更此檔案中的參數及值,系統管理員可以透過數種方式影響程式的行為。請參閱 範例 27.1 「組態檔 /etc/dhcpd.conf」 中的 /etc/dhcpd.conf 基本範例檔案。

範例 27.1︰ 組態檔 /etc/dhcpd.conf
default-lease-time 600;         # 10 minutes
max-lease-time 7200;            # 2  hours

option domain-name "example.com";
option domain-name-servers 192.168.1.116;
option broadcast-address 192.168.2.255;
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;

subnet 192.168.2.0 netmask 255.255.255.0
 {
  range 192.168.2.10 192.168.2.20;
  range 192.168.2.100 192.168.2.200;
 }

這個簡單的組態檔應足以讓 DHCP 伺服器在網路中指派 IP 位址。請確定每行結尾都插入分號,否則不會啟動 dhcpd。

範例檔可以分為三個部分。第一個部分定義要求用戶端預設可租用 IP 位址的秒數 (default-lease-time),此時間過後將需要申請續約。其中還包含機器可以保留 DHCP 伺服器指派之 IP 位址、不申請續約的最長期限的陳述式 (max-lease-time)。

在第二部份中,一些基本網路參數定義於全域層級︰

  • option domain-name 定義了您網路的預設網域。

  • 利用 option domain-name-servers 項目,最多可指定三個 DNS 伺服器值,用來將 IP 位址解析為主機名稱,或將主機名稱解析為 IP 位址。最好在設定 DHCP 前先設定機器上或網路上其他位置的名稱伺服器。該名稱伺服器也可以為每個動態位址定義主機名稱,反之亦然。若要瞭解如何設定您自己的名稱伺服器,請參閱 第 26 章 「網域名稱系統

  • option broadcast-address 這一行定義要求用戶端應使用的廣播位址。

  • 利用 option routers,可設定伺服器要將無法傳送至區域網路上之主機的資料封包傳送到什麼地方 (依據提供的來源和目的主機位址及子網路遮罩)。通常情況下,特別是在較小的網路中,此路由與網際網路閘道是完全一樣的。

  • 利用 option subnet-mask,指定指定給用戶端的網路遮罩。

檔案的最後一個部分定義網路,包括子網路遮罩。若要完成設定,請指定 DHCP 精靈用來指派 IP 位址給相關用戶端的位址範圍。在範例 27.1 「組態檔 /etc/dhcpd.conf」中,用戶端的指定位址可介於 192.168.2.10192.168.2.20 之間或 192.168.2.100192.168.2.200 之間。

編輯這幾行後,便可以使用指令 systemctl start dhcpd 來啟動 DHCP 精靈。該精靈可以立即使用。使用指令 rcdhcpd check-syntax 執行簡短的語法檢查。如果遇到任何組態方面的非預期問題 (例如伺服器因出現錯誤而中止或在啟動時沒有傳回 done),則可以使用指令 journalctl 查詢主系統記錄中的資訊,找出問題所在 (如需更多資訊,請參閱第 15 章 「journalctl︰查詢 systemd 日誌)。

在預設的 SUSE Linux Enterprise Server 系統上,出於安全性考量,DHCP 精靈會在 chroot 環境中啟動。組態檔必須複製到 chroot 環境,如此精靈才可以找到這些檔案。通常情況下不需要擔心發生這種情形,因為指令 systemctl start dhcpd 會自動複製檔案。

27.3.1 使用固定 IP 位址的用戶端

DHCP 也可以用來指派預先定義的靜態位址給特定用戶端。明確指派的位址永遠比集區的動態位址優先。當可用位址不足,伺服器必須在用戶端之間重新分配位址時 (舉例而言),動態位址便會過期,靜態位址則不同,它永遠不會過期。

為了識別使用靜態位址設定的用戶端,dhcpd 會使用硬體位址 (硬體位址是全球唯一的固定數字代碼,由六對八位元組組成),用來識別所有網路裝置 (例如,00:30:6E:08:EC:80)。如果相對的行 (如 範例 27.2 「組態檔的增加部分」 中所示) 新增到 範例 27.1 「組態檔 /etc/dhcpd.conf」 的組態檔,DHCP 精靈始終會指定相同的資料集給對應的用戶端。

範例 27.2︰ 組態檔的增加部分
host jupiter {
hardware ethernet 00:30:6E:08:EC:80;
fixed-address 192.168.2.100;
}

在第一行中輸入相應用戶端的名稱 (host HOSTNAME,在本例中為 jupiter),在第二行中輸入 MAC 位址。在 Linux 主機上,使用指令 ip link show 並在後面接上網路裝置 (例如,eth0) 可尋找 MAC 位址。輸出應該包含如下內容

link/ether 00:30:6E:08:EC:80

在上述範例中,系統會自動給具有網路卡且 MAC 位址為 00:30:6E:08:EC:80 的用戶端指定 IP 位址 192.168.2.100 及主機名稱 jupiter。幾乎所有情況中輸入的硬體類型會是 ethernet,儘管通常在 IBM 系統上找到的是 token-ring,也是可以支援的。

27.3.2 SUSE Linux Enterprise Server 版本

為了提高安全性,SUSE Linux Enterprise Server 版 ISC DHCP 伺服器在出貨時即套用了 Ari Edelkind 的 non-root/chroot 修補程式。這樣可讓 dhcpd 利用使用者 ID nobody 執行,而且也能在 chroot 環境下 (/var/lib/dhcp) 執行 dhcpd。若要這樣做,組態檔 dhcpd.conf 必須位於 /var/lib/dhcp/etc。init 程序檔啟動時會自動複製檔案到此目錄。

透過檔案 /etc/sysconfig/dhcpd 中的項目,可控制伺服器與此功能相關的行為。若是不要在 chroot 環境下執行 dhcpd,請將 /etc/sysconfig/dhcpd 中的 DHCPD_RUN_CHROOTED 變數設定為 no

若要讓 dhcpd 從 chroot 環境內解析主機名稱,必須也要複製以下其他的組態檔︰

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

啟動 init 程序檔時,這些檔案會複製到 /var/lib/dhcp/etc/。如果 /etc/ppp/ip-up 之類的程序檔動態修改了這些檔案,則進行所需變更時,也要考量到這些副本。不過,如果組態檔僅指定 IP 位址 (而不是指定主機名稱) 時,則不需要擔心。

如果組態包含要複製到 chroot 環境的其他檔案,請在檔案 /etc/sysconfig/dhcpd 中的變數 DHCPD_CONF_INCLUDE_FILES 下設定這些檔案。為了確定重新啟動 syslog 精靈後,DHCP 記錄功能仍起作用,/etc/sysconfig/syslog 檔案中還要有另一個項目 SYSLOGD_ADDITIONAL_SOCKET_DHCP

27.4 更多資訊

如需有關 DHCP 的詳細資訊,請參閱 Internet Systems Consortium 的網站 https://www.isc.org/dhcp/。在 dhcpddhcpd.confdhcpd.leasesdhcp-options man 頁面中也可以找到資訊。