Debian Linux 上安裝配置 ISC DHCP 伺服器全過程

linux.cn發表於2015-12-25

動態主機控制協議(Dynamic Host Control Protocol)(DHCP)給網路管理員提供了一種便捷的方式,為不斷變化的網路主機或是動態網路提供網路層地址。其中最常用的 DHCP 服務工具是 ISC DHCP Server。DHCP 服務的目的是給主機提供必要的網路資訊以便能夠和其他連線在網路中的主機互相通訊。DHCP 服務提供的資訊包括:DNS 伺服器資訊,網路地址(IP),子網掩碼,預設閘道器資訊,主機名等等。

本教程介紹執行在 Debian 7.7 上 4.2.4 版的 ISC-DHCP-Server 如何管理多個虛擬區域網(VLAN),也可以非常容易應用到單一網路上。

測試用的網路是通過思科路由器使用傳統的方式來管理 DHCP 租約地址的。目前有 12 個 VLAN 需要通過集中式伺服器來管理。把 DHCP 的任務轉移到一個專用的伺服器上,路由器可以收回相應的資源,把資源用到更重要的任務上,比如路由定址,訪問控制列表,流量監測以及網路地址轉換等。

另一個將 DHCP 服務轉移到專用伺服器的好處,以後會講到,它可以建立動態域名伺服器(DDNS),這樣當主機從伺服器請求 DHCP 地址的時候,這樣新主機的主機名就會被新增到 DNS 系統裡面。

安裝和配置 ISC DHCP 伺服器

1、使用 apt 工具用來安裝 Debian 軟體倉庫中的 ISC 軟體,來建立這個多宿主伺服器。與其他教程一樣需要使用 root 或者 sudo 訪問許可權。請適當的修改,以便使用下面的命令。(LCTT 譯註:下面中括號裡面是註釋,使用的時候請刪除,#表示使用的 root 許可權)

# apt-get install isc-dhcp-server       [安裝 the ISC DHCP Server 軟體]
# dpkg --get-selections isc-dhcp-server     [確認軟體已經成功安裝]
# dpkg -s isc-dhcp-server           [用另一種方式確認成功安裝]

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

2、 確認服務軟體已經安裝完成,現在需要提供網路資訊來配置伺服器,這樣伺服器才能夠根據我們的需要來分發網路資訊。作為管理員最起碼需要了解的 DHCP 資訊如下:

  • 網路地址
  • 子網掩碼
  • 動態分配的地址範圍

其他一些伺服器動態分配的有用資訊包括:

  • 預設閘道器
  • DNS 伺服器 IP 地址
  • 域名
  • 主機名
  • 網路廣播地址

這只是能讓 ISC DHCP 伺服器處理的選項中非常少的一部分。如果你想檢視所有選項及其描述需要在安裝好軟體後輸入以下命令:

# man dhcpd.conf

3、 一旦管理員已經確定了這臺伺服器分發的所有必要資訊,那麼是時候配置伺服器並且分配必要的地址池了。在配置任何地址池或伺服器配置之前,必須配置 DHCP 伺服器偵聽這臺伺服器上面的一個介面。

在這臺特定的伺服器上,設定好網路卡後,DHCP 會偵聽名稱名為’bond0′的介面。請適根據你的實際情況來更改伺服器以及網路環境。下面的配置都是針對本教程的。

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

這行指定的是 DHCP 服務偵聽介面(一個或多個)上的 DHCP 流量。修改主配置檔案,分配適合的 DHCP 地址池到所需要的網路上。主配置檔案在 /etc/dhcp/dhcpd.conf。用文字編輯器開啟這個檔案

# nano /etc/dhcp/dhcpd.conf

這個配置檔案可以配置我們所需要的地址池/主機。檔案頂部有 ‘ddns-update-style‘ 這樣一句,在本教程中它設定為 ‘none‘。在以後的教程中會講到動態 DNS,ISC-DHCP-Server 將會與 BIND9 整合,它能夠使主機名更新指向到 IP 地址。

4、 接下來的部分是管理員配置全域性網路設定,如 DNS 域名,預設的租約時間,IP地址,子網的掩碼,以及其它。如果你想了解所有的選項,請閱讀 man 手冊中的 dhcpd.conf 檔案,命令如下:

# man dhcpd.conf

對於這臺伺服器,我們需要在配置檔案頂部配置一些全域性網路設定,這樣就不用到每個地址池中去單獨設定了。

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

我們花一點時間來解釋一下這些選項,在本教程中雖然它們是一些全域性設定,但是也可以單獨的為某一個地址池進行配置。

  • option domain-name “comptech.local”; – 所有使用這臺 DHCP 伺服器的主機,都將成為 DNS 域 “comptech.local” 的一員
  • option domain-name-servers 172.27.10.6; DHCP 向所有配置這臺 DHCP 伺服器的的網路主機分發 DNS 伺服器地址為 172.27.10.6
  • option subnet-mask 255.255.255.0; – 每個網路裝置都分配子網掩碼 255.255.255.0 或 /24
  • default-lease-time 3600; – 預設有效的地址租約時間(單位是秒)。如果租約時間耗盡,那麼主機可以重新申請租約。如果租約完成,那麼相應的地址也將被儘快回收。
  • max-lease-time 86400; – 這是一臺主機所能租用的最大的租約時間(單位為秒)。
  • ping-check true; – 這是一個額外的測試,以確保伺服器分發出的網路地址不是當前網路中另一臺主機已使用的網路地址。
  • ping-timeout; – 在判斷地址以前沒有使用過前,伺服器將等待 ping 響應多少秒。
  • ignore client-updates; 現在這個選項是可以忽略的,因為 DDNS 在前面已在配置檔案中已經被禁用,但是當 DDNS 執行時,這個選項會忽略主機更新其 DNS 主機名的請求。

5、 檔案中下面一行是權威 DHCP 所在行。這行的意義是如果伺服器是為檔案中所配置的網路分發地址的伺服器,那麼取消對該權威關鍵字(authoritative stanza)的註釋。

通過去掉關鍵字 authoritative 前面的 ‘#’,取消註釋全域性權威關鍵字。這臺伺服器將是它所管理網路裡面的唯一權威。

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

預設情況下伺服器被假定為不是網路上的權威伺服器。之所以這樣做是出於安全考慮。如果有人因為不瞭解 DHCP 服務的配置,導致配置不當或配置到一個不該出現的網路裡面,這都將帶來非常嚴重的連線問題。這行還可用在每個網路中單獨配置使用。也就是說如果這臺伺服器不是整個網路的 DHCP 伺服器,authoritative 行可以用在每個單獨的網路中,而不是像上面截圖中那樣的全域性配置。

6、 這一步是配置伺服器將要管理的所有 DHCP 地址池/網路。簡短起見,本教程只講到配置的地址池之一。作為管理員需要收集一些必要的網路資訊(比如域名,網路地址,有多少地址能夠被分發等等)

以下這個地址池所用到的資訊都是管理員收集整理的:網路 ID 172.27.60.0, 子網掩碼 255.255.255.0 或 /24, 預設子網閘道器 172.27.60.1,廣播地址 172.27.60.255.0 。

以上這些資訊對於構建 dhcpd.conf 檔案中新網路非常重要。使用文字編輯器修改配置檔案新增新網路進去,這裡我們需要使用 root 或 sudo 訪問許可權。

# nano /etc/dhcp/dhcpd.conf

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

當前這個例子是給用 VMWare 建立的虛擬伺服器分配 IP 地址。第一行顯示是該網路的子網掩碼。括號裡面的內容是 DHCP 伺服器應該提供給網路上面主機的所有選項。

第一行, range 172.27.60.50 172.27.60.254; 這一行顯示的是,DHCP 服務在這個網路上能夠給主機動態分發的地址範圍。

第二行,option routers 172.27.60.1; 這裡顯示的是給網路裡面所有的主機分發的預設閘道器地址。

最後一行, option broadcast-address 172.27.60.255; 顯示當前網路的廣播地址。這個地址不能被包含在要分發放的地址範圍內,因為廣播地址不能分配到一個主機上面。

必須要強調的是每行的結尾必須要用(;)來結束,所有建立的網路必須要在 {} 裡面。

7、 如果要建立多個網路,繼續建立完它們的相應選項後儲存文字檔案即可。配置完成以後如果有更改,ISC-DHCP-Server 程式需要重啟來使新的更改生效。重啟程式可以通過下面的命令來完成:

# service isc-dhcp-server restart

這條命令將重啟 DHCP 服務,管理員能夠使用幾種不同的方式來檢查伺服器是否已經可以處理 dhcp 請求。最簡單的方法是通過 lsof 命令來檢視伺服器是否在偵聽67埠,命令如下:

# lsof -i :67

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

這裡輸出的結果表明 dhcpd(DHCP 服務守護程式)正在執行並且偵聽67埠。由於在 /etc/services 檔案中67埠的對映,所以輸出中的67埠實際上被轉換成了 “bootps”。

在大多數的系統中這是非常常見的,現在伺服器應該已經為網路連線做好準備,我們可以將一臺主機接入網路請求DHCP地址來驗證服務是否正常。

測試客戶端連線

8、 現在許多系統使用網路管理器來維護網路連線狀態,因此這個裝置應該預先配置好的,只要對應的介面處於活躍狀態就能夠獲取 DHCP。

然而當一臺裝置無法使用網路管理器時,它可能需要手動獲取 DHCP 地址。下面的幾步將演示怎樣手動獲取以及如何檢視伺服器是否已經按需要分發地址。

‘ifconfig‘工具能夠用來檢查介面的配置。這臺被用來測試的 DHCP 伺服器的裝置,它只有一個網路介面卡(網路卡),這塊網路卡被命名為 ‘eth0‘。

# ifconfig eth0

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

從輸出結果上看,這臺裝置目前沒有 IPv4 地址,這樣很便於測試。我們把這臺裝置連線到 DHCP 伺服器併發出一個請求。這臺裝置上已經安裝了一個名為 ‘dhclient‘ 的DHCP客戶端工具。因為作業系統各不相同,所以這個客戶端軟體也是互不一樣的。

# dhclient eth0

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

當前 ‘inet addr:’ 欄位中顯示了屬於 172.27.60.0 網路地址範圍內的 IPv4 地址。值得欣慰的是當前網路還配置了正確的子網掩碼並且分發了廣播地址。

到這裡看起來還都不錯,讓我們來測試一下,看看這臺裝置收到新 IP 地址是不是由伺服器發出的。這裡我們參照伺服器的日誌檔案來完成這個任務。雖然這個日誌的內容有幾十萬條,但是裡面只有幾條是用來確定伺服器是否正常工作的。這裡我們使用一個工具 ‘tail’,它只顯示日誌檔案的最後幾行,這樣我們就可以不用拿一個文字編輯器去檢視所有的日誌檔案了。命令如下:

# tail /var/log/syslog

在 Debian Linux 上安裝配置 ISC DHCP 伺服器

OK!伺服器記錄表明它分發了一個地址給這臺主機 (HRTDEBXENSRV)。伺服器按預期執行,給它充當權威伺服器的網路分發了適合的網路地址。至此 DHCP 伺服器搭建成功並且執行。如果有需要你可以繼續配置其他的網路,排查故障,確保安全。

在以後的Debian教程中我會講一些新的 ISC-DHCP-Server 功能。有時間的話我將寫一篇關於 Bind9 和 DDNS 的教程,融入到這篇文章裡面。

相關文章