1、原理部分
許多管理人員在網絡管理中,非常頭疼的問題就是為使用者進行安裝作業系統。許多企業的用戶端配置基本上很少有帶cd-rom,也不可能所有用戶端都有作業系統安裝CD光牒。筆者經常發現許多元護人員手拿光驅、CD光牒來為使用者重新進行或更新作業系統。為解決這一枯燥而又重複的工作,不少企業建立了windows遠端安裝伺服器與Linux遠端安裝伺服器。在這裡主要探讨一下關于Linux方面的遠端安裝過程及實作。
在安裝過程中Linux首先需要一個引導程式來讓安裝程式啟動,再實行配置與安裝。遠端網絡安裝那麼就需要我們的安裝程式能夠遠端地通過網絡傳送給用戶端。是以在搭建遠端Linux安裝伺服器時候首先要值得注意以下幾個問題:
1. 遠端用戶端屬于裸機。
這裡所定義的裸機是除了标準硬體之外沒有任何的作業系統與軟體程式。當然也可以擁有作業系統或者是軟體,之是以告訴大家是裸機是主要說明最簡單的一種思維方式。
2. 遠端用戶端必須能夠支援網絡啟動。
遠端用戶端為了能夠發送安裝請求必須能夠通過網絡的方式,将安裝請求發送給伺服器端。是以用戶端必須存在網卡,并且網卡上擁有PXE ROM(預引導執行環境)晶片而且BIOS能夠支援網絡啟動。
3. 利用DHCP服務為用戶端分發IP位址
在遠端計算機啟動後将會出現初始化設定,此時因用戶端沒有進入作業系統或處于在裸機狀态下,不可能綁定我們所熟悉TCP/IP位址或者其他網絡協定位址。是以他們之間的溝通必須通過IP位址自動配置設定服務----DHCP來為用戶端進行分發IP位址,進而實作Client-Server端之間的連結與溝通。
4. 利用UDP方式傳送引導程式
在遠端安裝用戶端得到IP位址之後,将請求遠端安裝伺服器給用戶端一個Linux引導程式以便于引導Linux并在用戶端上實作安裝界面。但是在TCP/IP協定棧中如果采用TCP協定進行傳送服務,那麼将會出現TCP三向交握過程,進而導緻遠端用戶端等待逾時而無法完成引導過程。是以就需要采用UDP協定進行快速傳遞,確定遠端用戶端的引導。是以筆者在這裡所采用的程式為TFTP[瑣碎檔案傳輸協定]服務作為遠端傳輸伺服器傳送Linux引導程式的伺服器。
5. 利用TCP方式傳送安裝程式
雖然UDP速度非常快速,但是其屬于不可靠協定,不具備糾錯、確定資料到達目的地等保障機制,是以在傳輸大量檔案或者是大檔案時候還是需要采用TCP方式,這樣将不會出現因UDP協定傳輸丢包而導緻安裝無法進行。
在這裡有多種方式供大家選擇:
1)NFS[網絡檔案系統]
2)HTTP
3)FTP等
筆者在這裡選擇采用NFS方式。
是以準備建立遠端安裝伺服器至少需要三個服務:DHCP、TFTP、NFS,三個服務可以在三台不同的計算機上,也可以在同一台計算機上進行實作。
原理歸納:
遠端用戶端計算機啟動,由于BIOS設定了網卡啟動,是以網卡PXE ROM(自啟動晶片)中的程式被調入記憶體執行。以UDP(簡單使用者資料報協定)發送一個廣播請求,向網絡中的DHCP伺服器索取IP位址等資訊。DHCP伺服器收到用戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它将給用戶端一個“提供”響應,這個“提供”響應中包含了為用戶端配置設定的IP位址、pxelinux啟動程式(TFTP)位置,以及配置檔案所在位置。
同時DHCP伺服器聯系到TFTP伺服器為此用戶端發送一個bootstrap(引導程式)。用戶端收到bootstrap(檔案pxelinux.0)後執行,bootstrap會請求TFTP傳送bootstrap的配置檔案(pxelinux.cfg)。收到後讀取配置檔案。根據配置檔案内容和客戶情況,用戶端請求TFTP傳送核心映象檔案(vmlinuz)和根檔案系統檔案(initrd.img)。最後啟動核心。
用戶端通過pxelinux.cfg/default檔案成功的引導Linux安裝核心後,安裝程式首先必須确定你通過什麼安裝媒體來安裝linux,如果是通過網絡安裝(NFS, FTP, HTTP),則會在這個時候初始化網絡,并定位安裝源位置。或許你會說,剛才PXE不是已經擷取過IP位址了嗎?為什麼現在還需要一次?這是由于PXE擷取的是安裝用的核心以及安裝程式等,而安裝程式要擷取的是安裝系統所需的二進制包以及配置檔案。由于它們需要的内容不同造成PXE子產品和安裝程式是相對獨立的,PXE的網絡配置并不能傳遞給安裝程式。進而進行兩次擷取IP位址過程。
接着會讀取該檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載下傳該檔案。
将ks.cfg檔案下載下傳回來後,通過該檔案找到OS Server,并按照該檔案的配置請求下載下傳安裝過程需要的軟體包。
OS Server和用戶端建立連接配接後,将開始傳輸軟體包,用戶端将開始安裝作業系統。安裝完成後,将提示重新開機計算機。這個時候注意,在重新開機的過程中一定要将BIOS修改回從硬碟啟動,不然的話又會重複的自動安裝作業系統。
這就是一個完整的pxe建構過程。然而要使網卡啟動後再繼續網絡安裝系統,則最後還需要FTP服務将系統所需安裝檔案放置FTP相應目錄中進行傳輸安裝。
下面用圖形來表述原理:

Linux安裝實作步驟
2、 配置DHCP伺服器
配置DHCP伺服器主要用途是為了能夠給用戶端配置設定IP位址,進而讓用戶端與TFTP及FTP進行聯系
安裝檔案為:
dhcp-3.0.5-21.el5.i386.rpm ——DHCP軟體包(必裝)
dhcp-devel-3.0.5-21.el5.i386.rpm ——DHCP頭檔案,這裡用不到
[root@linux-a
~]# rpm -ivh /media/Server/dhcp-3.0.5-3.el5.i386.rpm
warning: /media/Server/dhcp-3.0.5-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
[root@linux-a ~]#
二、配置:
1、其配置檔案是/etc/dhcpd.conf,租約資料庫檔案是/var/lib/dhcpd/dhcpd.leases。
在第一次打開該檔案時,隻告知一個例子檔案的路徑(如下圖),可将該例子覆寫該配置檔案再進行修改。
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
----------------------------------------------------
注:這裡若找不到該模闆檔案,可以使用locate指令查詢位置
[root@server1 ~]# locate dhcpd.conf
/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample ----就是它了
/usr/share/logwatch/default.conf/services/dhcpd.conf
/usr/share/man/man5/dhcpd.conf.5.gz
----------------------------------------------------
2、 DHCP的配置檔案
dhcpd.conf檔案有二大部分,分别是全局配置和局部配置(如下圖)。當全局配置與局部配置發生沖突時,局部配置優先級更高。
常用參數:
●ddns-update-style (none|interim|ad-hoc):定義所支援的DNS動态更新類型,該參數必選且必須放在第一行且隻能在全局配置中使用。
none:不支援。 interim:DNS互動更新模式。 ad-hoc:特殊DNS更新模式。
●ignore-client-updates:忽略用戶端更新,該參數隻能在全局配配置中使用。
●default-lease-time:預設IP租約時間,機關秒,該參數可以在全局配置、局部配置均可使用。
●max-lesase-time:用戶端IP租約時間的最大值,機關秒,該參數可以在全局配置、局部配置均可使用。
● hardware
:指定網卡接口類型和MAC位址。
●server-name
通知DHCP客戶伺服器名稱。
get-lease-hostnames
flag 檢查用戶端使用的IP位址。
fixed-address ip 配置設定給用戶端一個固定的位址。
authritative 拒絕不正确的IP位址的要求。
常用聲明:
●subnet 網絡号 netmask 子網路遮罩 {…..}:定義作用域。
●range 起始IP 結束IP:動态IP位址範圍。
shared-network
用來告知是否一些子網絡分享相同網絡。
subnet 描述一個IP位址是否屬于該子網。
range 起始IP 終止IP 提供動态配置設定IP 的範圍。
host 主機名稱 參考特别的主機。
group 為一組參數提供聲明。
allow unknown-clients;deny unknown-client 是否動态配置設定IP給未知的使用者。
allow bootp;deny bootp 是否響應激活查詢。
allow booting;deny booting 是否響應使用者查詢。
filename 開始啟動檔案的名稱. 應用于無盤工作站。
next-server 設定伺服器從引導檔案中裝如主機名,應用于無盤工作站。
常用選項:
●option routes IP位址:為用戶端設定預設網關,該選項可以在全局配置、局部配置均可使用。
●option subnet-mask 子網路遮罩:預設子網路遮罩,該選項可以在全局配置、局部配置均可使用。
●option domain-name:DNS字尾,該選項可以在全局配置、局部配置均可使用。
●option time-offset:為用戶端指定格林威治時間領銜時間,機關秒,該選項可以在全局配置、局部配置均可使用。
domain-name
為用戶端指明DNS名字。
host-name 為用戶端指定主機名稱。
broadcast-address 為用戶端設定廣播位址。
ntp-server 為用戶端設定網絡時間伺服器IP位址。
time-offset 為用戶端設定和格林威治時間的偏移時間,機關是秒。
我們看一個标準配置:
ddns-update-style interim; ----------配置使用DHCP-DNS互動更新模式。這裡不要修改,而且必須有
ignore client-updates; ----------不允許用戶端更新,也不要改,而且必須存在
subnet 169.254.215.0 netmask 255.255.255.0 { ---------子網聲明,就是你要進行dhcp的網段,本實驗是169.254.215.0
# --- default gateway
option routers 169.254.215.76; -------------預設網關,根據實際情況修改,下同
option subnet-mask 255.255.255.0; -------------用戶端的子網路遮罩
option nis-domain "nisdomain.com"; -------------用戶端的NIS域名,有NIS伺服器的話才要設定
option domain-name "ccg.com"; -------------用戶端的域名,本實驗是ccg.com
option domain-name-servers 169.254.215.76; -------------用戶端設定域名伺服器
option time-offset -18000; # Eastern Standard Time -------偏移時間,不用改
# option ntp-servers 169.254.215.76; -------NTP伺服器位址,就是時間伺服器
# option netbios-name-servers 169.254.215.76; --------wins伺服器位址
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2; ---------netbios節點類型,不用改
range dynamic-bootp 169.254.215.125 169.254.215.200; ----------位址池,你要進行配置設定的位址規劃,本實驗是主機位125-200進行配置設定
default-lease-time 21600; ------預設租約時間,機關為秒
max-lease-time 43200; ---------最長租約時間,機關秒
# we want the nameserver to appear at a fixed address ---------下面是設定主機綁定的,并不是必須有的
host ns { ---------這5行是模闆,不起作用
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
host ns1 { ---------這個名稱可以随便起,但是最好不要重複
next-server marvin.redhat.com; ---------無盤工作站用得着,這裡可有可無
hardware ethernet 00:0C:29:6C:79:8F;
---------要綁定的用戶端的MAC位址
fixed-address 169.254.215.130;
---------要綁定MAC位址的主機對應的IP
}
配置本次我們需要的dhcpd.cfg檔案:
接下來我們需要配置相關資訊。為了滿足我們的安裝需求,假設PXE伺服器、DHCP伺服器、TFTP伺服器全部安裝在一台為192.168.0.7的計算機上。我們需要進行如下操作:
(1)修改/etc/dhcpd.conf 檔案,指定 IP 位址等資訊。
(2)在'''/etc/dhcpd.conf''' 中增加 tftp-server 需要推送給用戶端的啟動檔案(bootstrap):filename"pxelinux.0";因為 tftp 的預設目錄是 /tftpboot,是以檔案的絕對路徑就是:/tftpboot/pxelinux.0";當然也可以指定為其它的路徑。
另外需要指定 next-server 參數,告訴用戶端在擷取到pxelinux.0 檔案之後去哪裡擷取其餘的啟動檔案: next-server 192.168.0.7;
最終的配置檔案結果如下所示:
三、啟動服務:
關閉DHCP伺服器:
#service dhcpd stop
配置完成後,重新開機DHCP服務,并将它設為開機自啟動:
[root@qiuriServer]# /etc/init.d/dhcpd start
啟動 dhcpd: [确定]
[root@qiuriServer]# chkconfig --level 35 dhcpd on
四、關于用戶端的配置
可以通過圖形化界面進行修改:
system-config-network-tui
也可以通過修改檔案的方式
[root@server1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改這條:
BOOTPROTO=dhcp
若想重新獲得配置設定的IP,直接重新開機網卡就行了
service network restart
使用下面這條指令也可以
ipconfig /renew
附加:(與本次安裝無關,僅作延伸閱讀)
●下面我們來看一個配置執行個體,執行個體中的網絡拓撲如下圖
上述配置實際上隻需在rhel中所提供的例子檔案中改幾處即可,在編寫配置檔案時需注意以下幾個問題:
●每行必須以分号結尾(如不用分号結尾,在啟動dhcpd時是不會報錯的,隻能通過檢視日志檔案/var/log/message得知)。
●局部配置必須包含在一對中括号之間。
●上面的例子中全局部分定義了參數option domain-name,在局部也定義了,這個在實際工作是沒有必要的,這裡隻是為了說明局部參數的優先級高于全局部分。
如希望實作保留功能(在保留中也可使用參數,當然保留中參數的優先級最高),首先需要知道指定用戶端網卡的MAC位址,然後在配置檔案中加入如下内容即可。
●将dhcp的網關指向192.168.159.18
●編輯/etc/syconfig/dhcpd檔案
●在dhcp上建立超級作用域,并為192.168.100.0/24建立作用域
●在中繼代理上安裝dhcp、dhcp-devel包。
●在中繼代理上運作,并将其加入/etc/rc.local中。
●編輯/etc/sysconfig/dhcrelay檔案
●啟用中繼代理