DHCP&PXE&Cobbler

DHCP&PXE&Cobbler

DHCP&PXE&Cobbler

一、DHCP簡介

(一)DHCP工作流程

DHCP: Dynamic Host Configuration Protocol 簡而言之動態主機配置協議,即然英文沒有說是IP配置協議,那么就是說除了給客戶機配置IP外它還能干點兒別的。

下面來看看一個簡單的流程說明

  • 第一步,客戶端啟動后暫未獲得IP地址,向所在局域網廣播一個DHCP discover報文。
  • 第二步,本地局域網中的DHCP服務器(可能不止一臺)收到客戶端的discover報文后,向本地網絡廣播(為了讓其他服務器也收到)發送DHCP offer報文,包含服務器從自己掌管的IP地址范圍內取出的一個IP。
  • 第三步,客戶端收到服務器的offer后,(如果有多臺服務器發送了offer,當然是采用最先到達的)。然后客戶端再向本地局域網廣播(讓所有服務器收到它已經擬采用某個IP)一個DHCP request報文。
  • 第四步,提供IP的服務器收到客戶端發來的request報文后,再次向本地網絡廣播發送acknowledgement報文,即ACK確認。
  • DHCP協議報文格式如下:

    DHCP&PXE&Cobbler

    • Op: 報文類型,分為 兩大類: Request(1) 和 Reply(2) ?
    • HW Type: 硬件類型,一般是以太網:1 ?
    • HW Len: 硬件地址長度,單位字節。對應以太網:6(mac地址長度為6字節48bit) ?
    • Transaction ID:事務ID,隨機數,由客戶端生成,服務器Reply時,會把Request中的Transaction拷貝到Reply報文中。 ?
    • Secs: 距離第一次發送IP請求或Renew請求過去的秒數 ?
    • Flags:標志位,目前僅第一個bit有使用,置1 標明廣播 ?
    • Client IP Address:當前客戶端的IP地址,客戶端初始時沒有IP地址,則置0,即0.0.0.0
    • Your IP Address: 服務器想客戶端提供IP地址時,會把IP地址填入本字段 ?
    • (Next)Server IP Address:客戶端獲取網絡引導文件的服務器,比如TFTP的IP地址 ?
    • Gateway (Relay) IP Address:? 網關(中繼)IP地址,有DHCP 中繼器在轉發DHCP報文的時候填入 ?
    • Server Name: Server名字,有64bytes,一般不使用,填充為0 ?
    • Boot File name:? 網絡啟動的引導文件名
    • Option: 選項,不定長度。 常用的比如DHCP Message Type(discover、request、offer、ack)
(二)DHCP主要配置參數
  • 配置文件路徑/etc/dhcp/dhcpd.conf
  • 主配置參數:
    option domain-name "wind.com"; #域名
    option domain-name-servers ns1.wind.com; #DNS服務器
    ?
    default-lease-time 600; #默認DHCP租約時間
    max-lease-time 7200; ?#最大租約時間,超過后不可續約必須重新獲取IP

    全局參數會被subnet的定義覆蓋,就是說越小范圍定義的參數優先起效。所以你可以只定義一個subnet配置段就好。

    subnet 192.168.10.0 netmask 255.255.255.0 { ?#定義子網網絡號,掩碼
      range 192.168.10.100 192.168.10.200; ?#本子網可分配的IP范圍
      option routers 192.168.10.1;      #網關
      option broadcast-address 192.168.10.255;  #廣播地址
      default-lease-time 600;   
      max-lease-time 7200;
    }

    另外有保留地址的配置段,可以給你局域網預留一些服務器的IP,比如,DNS、FTP服務器等等

    host fantasia { ?#host后面的名字隨便取,在配置文件中不重名即可
      hardware ethernet 0:0:c0:5d:bd:95; #預留IP對應的設備mac
      fixed-address fantasia.fugue.com;
    }

二、PXE環境配置

(一)PXE簡介

PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作于Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,并由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)協議下載一個啟動軟件包(CentOS中是pxelinux.0 )到本機內存中執行,由這個啟動軟件包完成終端(客戶端)基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。

PXE+Kickstart實現自動安裝系統的流程

DHCP&PXE&Cobbler

  1. Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0位于的TFTP服務器IP地址一并傳送給Client
  2. Client向PXE Server上的TFTP發送獲取網絡引導啟動文件pxelinux.0請求消息,TFTP接收到消息之后再向Client發送pxelinux.0
  3. Client執行接收到的pxelinux.0文件
  4. Client向TFTP發送Linux內核請求信息,TFTP接收到消息之后將內核文件發送給Client
  5. Client向TFTP發送根文件請求信息,TFTP接收到消息之后返回Linux根文件系統
  6. Client啟動Linux內核,此處會重新通過DHCP獲取IP,因為之前的IP是網卡的而不是內核的。?
  7. Client向TFTP Server發送針對本機的Kickstart文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行后續操作。
  8. Client下載軟件包安裝源文件,讀取自動化安裝腳本

PXE僅支持一個版本的系統安裝

(二)TFTP配置

CentOS7.4的話先安裝三個軟件包

yum -y install syslinux? xinetd.x86_64 tftp-server.x86_64

再systemctl start tftp.socket啟動tftp

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

三、Cobbler安裝與配置

簡而言之,Cobbler是為了進行多版本系統批量自動安裝的管理工具。

Cobbler的配置結構基于一組注冊的對象。每個對象表示一個與另一個實體相關聯的實體(該對象指向另一個對象,或者另一個對象指向該對象)。當一個對象指向另一個對象時,它就繼承了被指向對象的數據,并可覆蓋或添加更多特定信息。

Distros(發行版):表示一個操作系統,它承載了內核和initrd的信息,以及內核參數等其他數據。
Profile(配置文件):包含一個發行版、一個kickstart文件以及可能的存儲庫,還包含更多特定的內核參數等其他數據。
Systems(系統):表示需要額外配置給客戶機的系統參數。它包含一個配置文件或一個鏡像,還包含IP和MAC地址、電源管理(地址、憑據、類型)、(網卡綁定、設置valn等)。
Repository(鏡像):保存一個yum或rsync存儲庫的鏡像信息。
Image(存儲庫):可替換一個包含不屬于此類比的額文件的發行版對象(例如,無法分為內核和initrd的對象)。

各對象的關系圖如下:

DHCP&PXE&Cobbler

(一)主配置文件

yum install -y cobbler? #epel源安裝cobbler

  • /etc/cobbler/settings?? #cobbler自身的相關配置
    • default_password_crypted: “$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.”

      這個參數是指定批量安裝客戶機系統時指定初始的root密碼的密文

      一個簡單的辦法是,直接復制/etc/shadow中的用戶密碼密文進行替換。

      或者采用如下方法生成:

      openssl passwd -1 -salt $(openssl rand -hex 4) abc123 #最后是設定的密碼

    • default_kickstart: /var/lib/cobbler/kickstarts/default.ks

      默認的kickstart文件路徑,可直接修改默認文件達成自己的需求,或者修改cobbler的profile指定一個或者多個kickstart文件。

    • server ip 必須與cobbler服務器本機IP一致 ,不然cobbler相關命令會卡死。而且報錯卻是httpd未啟動或未代理cobbler頁面或防火墻未關閉。
  • /etc/cobbler/modules.conf ?

    可由cobbler托管的服務配置文件,RSYNC、DHCP、TFTP、DNS;及web訪問驗證方式配置。

    • [authentication]

      module = authn_configfile? #配置cobbler-web訪問時的驗證方式

      常用選項是authn_pam(pam模塊系統用戶驗證)、authn_configfile

      • 使用authn_pam模塊認證cobbler_web用戶
        1. 添加系統用戶,用戶名和密碼按需設定即可,而后將用戶名添加至cobbler_web的admin組中。
        2. 修改/etc/cobbler/users.conf文件,將用戶名添加為admin參數的值即可,如下所示。

          [admins]

          admin = “USER”

      • 使用authn_configfile模塊認證cobbler_web用戶

        創建其認證文件/etc/cobbler/users.digest,并添加所需的用戶 。cobbler_web的realm只能為Cobbler。 如下所示:

        htdigest -c /etc/cobbler/users.digest Cobbler cblradmin

(二)配置Cobbler
  • 管理distro
    • 配置Cobbler使之可用的第一步為定義distro,可以通過為其指定外部的安裝引導內核及ramdisk文件的方式實現。如果已經有完整的系統安裝樹(如CentOS6的安裝鏡像)則推薦使用import直接導入的方式進行。

      $ cobbler import --name=centos7.4 --arch=x86_64 --path=/mnt

      The –arch option need not be specified, as it will normally be auto-detected. We’re doing so in this example in order to prevent multiple architectures from being found (Fedora ships i386 packages on the full DVD, and cobbler will create both x86_64 and i386 distros by default).

      不需要指定 arch 選項, 因為它通常會自動檢測到。在這個例子中這樣做是為了防止發現多個體系結構 (例如Fedora在full DVD 中支持i386與x86_64 兩個版本, 而Cobbler將在默認情況下創建 x86_64 和 i386 發行版本)。

      import會自動將光盤文件復制到/var/www/下自動創建的cobbler目錄

      如果有kickstart文件,也可以使用“–kickstart=/path/to/kickstart_file”一并進行導入 ,不指定此選項,Cobbler也將在生成的profile中引用Cobbler默認的最小化安裝kickstart文件/var/lib/cobbler/kickstarts/default.ks

    • 可使用“cobbler distro list”列出所有的distro。
  • 管理profile

    cobbler使用profile來為特定的需求類別提供所需要安裝配置,即在distro的基礎上通過提供kickstart文件來生成一個特定的系統安裝配置。distro的profile可以出現在PXE的引導菜單中作為安裝的選擇之一。

    # cobbler profile add --name=centos-6.5-x86_64-basic --distro=centos-6.5-x86_64 --kickstart=/tmp/centos-6.5-x86_64.cfg

    可使用“cobbler profile list”查看已經創建的profile。

    運行cobbler sync 來同步配置,其實profile就是對/var/lib/tftpboot/pxelinux.cfg/default 文件中添加或者修改一個lable段

    DEFAULT menu
    PROMPT 0
    MENU TITLE Cobbler | http://cobbler.github.io/ #安裝版本選擇菜單的標題可以修改,但是每次同步cobbler設置會覆蓋你的修改
    TIMEOUT 200 ?#超時時間,查了官方文檔in units of 1/10 s. 也就是20s,依需要修改;如果你敲任意鍵將停止計時
    TOTALTIMEOUT 6000 #此超時是不論用戶是否敲鍵盤超時都將執行下一步操作
    
    # Wait 20 seconds unless the user types something, but
    # always boot after 10 minutes.
    ?
    ONTIMEOUT local #設置在超時時調用的命令行 (通常引用標簽)。如果未指定, 則使用 UI (如果存在) 或默認值。
    ?
    LABEL local
     ? ? ?  MENU LABEL (local)
     ? ? ?  MENU DEFAULT ? #默認條目,如果你添加了條目要實現自動安裝系統時將此項剪切過去
     ? ? ?  LOCALBOOT -1
    ?
    ?
    ?
    MENU end
  • system用的不多,因為我們有更好的選擇,ansible與puppet。

    cobbler安裝系統的流程如下:

    DHCP&PXE&Cobbler

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104319

(1)
net31_行者無疆net31_行者無疆
上一篇 2018-07-31 21:02
下一篇 2018-08-01

相關推薦

欧美性久久久久