1. 程式人生 > >LINUX DHCP 服務配置詳解

LINUX DHCP 服務配置詳解

安裝軟體包

         yum install -y dhcp
         yum install -y dhcp-common
         yum install -y dhcp-lib

dhcp包包含的主要檔案

       rpm -ql dhcp    #檢視dhcp包安裝了哪些檔案和程式

       /etc/dhcpd.conf                                                                 #主配置檔案
      /etc/rc.d/init.d/dhcpd                                                           #服務啟動指令碼
      /etc/rc.d/init.d/dhcrelay                                                       #繼dhcp服務啟動指令碼
      /etc/sysconfig/dhcpd                                                           #次要配置檔案
      /etc/sysconfig/dhcrelay
      /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example                #示例檔案
      /ust/lib/systemd/system/dhcpd.services                            # 服務啟動指令碼 systemctl start dhcpd
      /var/lib/dhcpd/dhcpd.leases                                               #租約資訊存放的檔案

客戶機和伺服器配置檔案

           /var/lib/dhclient/dhclient.leases          #客戶端租約檔案

           /var/lib/dhcpd/dhcpd.leases               #伺服器端的租約檔案在

          /etc/dhcp/dhcpd.conf                            #dhcp配置檔案

服務埠對應配置檔案

         cat   /etc/services                                              #linux下基本服務的埠,協議,描述等資訊。

            http            80/tcp          www www-http    # WorldWideWeb HTTP      httpd服務

           bootps          67/tcp                          # BOOTP server   這就是dhcp服務埠
           bootps          67/udp                        ##是dhcp服務

 

常用命令

        systemctl start dhcp

       systemctl stop dhcpd

配置dhcp伺服器

     配置檔案都放在/etc/dhcp目錄下,主配置檔案為dhcpd.conf

  •      編寫dhcpd.conf  (可以複製dhcpd.conf.example模板檔案來修改,也可以直接編輯dhcpd.conf)
##  1、拷貝示例檔案覆蓋原來的空檔案。通過rpm -ql dhcp檢視自己模板配置檔案(不一定和我一樣的版本)    
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf     

## 2、預先處理,去掉 註釋和空行,保留 生效語句,和可選語句。 
sed -ri '/(^#[[:space:]]+|^#$|^$)/{d}'  /etc/dhcp/dhcpd.conf

    刪除沒用的那些行,保留內容如下:

主配置檔案樣板:

#ddns-update-style none;
#authoritative;
log-facility local7;

subnet 10.1.1.0  netmask 255.255.255.0 {
  range 10.1.1.100  10.1.1.200;                                 ##地址池 
  option domain-name-servers  202.96.128.166;                   ##DNS伺服器地址
  option domain-name "class.com";                               ##域名
  option routers 10.1.1.1;                                      ##預設路由
  option broadcast-address 10.1.1.255;                          ##廣播地址
  default-lease-time 300;                                       ##預設租約時間 
  max-lease-time 7200;                                          ##最大租約時間 
}

注意:dhcp伺服器必須要有一張網絡卡在10.1.1.0/24網路,並且它只會給這張網絡卡所在網路(廣播域)主機分配ip。

 

  • 一個dhcp伺服器給多區域網提供服務

          

      1、先將兩張網絡卡接入兩個不同網路,並設定靜態ip

      2、修改配置檔案/etc/dhcp/dhcpd.conf  如下:

#ddns-update-style none;
#authoritative;
log-facility local7;

subnet 10.1.1.0  netmask 255.255.255.0 {
  range 10.1.1.100  10.1.1.200;                                 ##地址池 
  option domain-name-servers  202.96.128.166;                   ##DNS伺服器地址
  option domain-name "class.com";                               ##域名
  option routers 10.1.1.1;                                      ##預設路由
  option broadcast-address 10.1.1.255;                          ##廣播地址
  default-lease-time 300;                                       ##預設租約時間 
  max-lease-time 7200;                                          ##最大租約時間 
}

subnet 192.168.100.0  netmask 255.255.255.0 {
  range 192.168.100.3  192.168.100.100;                         ##地址池 
  option domain-name-servers  202.96.128.166;                   ##DNS伺服器地址
  option domain-name "class.com";                               ##域名
  option routers 192.168.100.1;                                 ##預設路由
  option broadcast-address 192.168.100.255;                     ##廣播地址
  default-lease-time 300;                                       ##預設租約時間 
  max-lease-time 7200;                                          ##最大租約時間 
}

   小結:系統在收到dhcp請求時,會看是哪張網絡卡收到的請求,根據該網絡卡的ip地址選擇對應配置檔案裡的地址池給對應網路主機分配地址。

mac繫結ip (巢狀一段就好)

#ddns-update-style none;
#authoritative;
log-facility local7;

subnet 10.1.1.0  netmask 255.255.255.0 {
  range 10.1.1.100  10.1.1.200;                                 ##地址池 
  option domain-name-servers  202.96.128.166;                   ##DNS伺服器地址
  option domain-name "class.com";                               ##域名
  option routers 10.1.1.1;                                      ##預設路由
  option broadcast-address 10.1.1.255;                          ##廣播地址
  default-lease-time 300;                                       ##預設租約時間 
  max-lease-time 7200;                                          ##最大租約時間 

   host serverftp {            ## 備註名稱,可以自行定義。
       hardware ethernet 12:34:56:78:AB:CD;  ##靜態繫結mac和ip
       fixed-address 10.1.1.5;
       }
}

dhcp配置檔案中下面配置作用:客戶機通過dhcp獲得dns域名和IP地址,並且將dns--ip 儲存到/etc/resolv.conf中!
             option domain-name-servers  202.96.128.166;                   ##DNS伺服器地址
             option domain-name "class.com";                                ##域名


客戶機/etc/resolv.conf配置檔案

            ; generated by /usr/sbin/dhclient-script      ##指令碼載入客戶端租約檔案/var/lib/dhclient/dhclient.leases
           search localdomain     ##dhcp分配的dns域名
          nameserver 192.168.109.2     ##dhcp分配的dns伺服器的ip

 

 預設租約時間 與 最大租約時間
      注意:這裡的時間都是utc時間,比如我們是15:00獲取的ip 配置檔案裡顯示的是07:00,比北京時間少8小時 

      客戶機續約過程如下:
                假如:預設使用 10 小時租約期 ,10小時內續約,可以繼續使用該IP地址。
                           1、線上:第5小時找一次dhcp自動續約
                           2、(1請求失敗)8.5小時的時候,再嘗試
                           3、(2請求失敗)找別的dhcp伺服器
                           4、(3請求失敗)繼續使用原先的IP地址,直到過期。根據預設租約期限

                ####伺服器的 /var/lib/dhcpd/dhcpd.lease 資訊檔案。
                             

                              starts 起始時間點:
                              ends 結束(過期時間點):
                              相隔時間= default-lease-time 的設定。
                              (從這個時間間隔中可以推測出下一次該IP地址的續約時間。)


                   #### 客戶端的 /var/lib/dhclient/dhcpd-eth0.lease 資訊檔案。
                              
                       得到的資源資訊:
                       renew:下一次去找dhcpd伺服器續約的時間點。 = 租約時間的50%
                       rebind:renew失敗後,重試的時間點。              =租約時間的 85% 左右
                       expire:過期的時間點
                        每次續約成功,就會更新一次 /var/lib/dhclient/dhcpd-eth0.lease 租約檔案。

               最大租約期限
                         max-lease-time 43200; 最大租約時間(秒)12小時
                         說明:最大和預設租約時間,機制一樣,在客戶端沒有特殊的租約時間請求的時候,都會
                              統一的指 派預設租約時間(多數情況)。 如果客戶端請求了自定義的租約時間,伺服器將會啟用最大租約時
                              間作為限制,客戶端自己請求的租約時間不能大於該值。max time
                       

自定義 日誌輸出路徑和級別

   
        update /etc/rsyslog.conf file
       # Save boot messages also to boot.log
                 local7.* /var/log/boot.log ##預設與 boot.log 放在一起,
                local2.* /var/log/dhcpd.log ## 自定義獨立存放。

             #define KERN_EMERG "<0>" /* system is unusable */
            #define KERN_ALERT "<1>" /* action must be taken immediately */
            #define KERN_CRIT "<2>" /* critical conditions */
            #define KERN_ERR "<3>" /* error conditions */
            #define KERN_WARNING "<4>" /* warning conditions */
            #define KERN_NOTICE "<5>" /* normal but significant condition */
            #define KERN_INFO "<6>" /* informational */
            #define KERN_DEBUG "<7>" /* debug-level messages */