Linux 的 PXE 與 UEFI PXE 依賴服務(wù)器配置

Linux 的 PXE 與 UEFI PXE 依賴服務(wù)器配置

PXE(preboot execute environment)是一個 C/S 模式,是以工作站通過網(wǎng)絡(luò)遠(yuǎn)程服務(wù)器下載映像,通過網(wǎng)絡(luò)來批量部署系統(tǒng)。

一. PXE 原理過程

客戶端 PXE 網(wǎng)卡啟動 --> 通過 Bootp 協(xié)議廣播 dhcp 請求 --> DHCP 服務(wù)器 --> 獲取 IP,TFTP 服務(wù)器地址 --> 從 TFTP 服務(wù)器下載boot/{vmlinuz,initrd.img};或者讀取 NFS 文件共享服務(wù)器共享boot目錄 --> 啟動系統(tǒng) --> 到制定 url 去下載 ks.cfg 文件 --> 根據(jù)(ks.cfg 文件去 NFS/HTTP/FTP服務(wù)器自動下載軟件包)安裝系統(tǒng) --> 完成安裝

  1. 原理過程

支持來自網(wǎng)絡(luò)中遠(yuǎn)程服務(wù)器上的操作系統(tǒng)的啟動過程啟動過程中,終端會要求 DHCP 服務(wù)器分配 IP 地址,然后使用 TFTP/FTP 或者 MTFTP(multicast trivial file transfer protocol)協(xié)議下載啟動軟件包(initramfs.img、vmlinuz)到本機(jī)內(nèi)存中并執(zhí)行,由這個啟動軟件包終端基本軟件設(shè)置,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)映像。

  1. FTP 協(xié)議與 TFTP 協(xié)議對比

FTP:文件傳輸協(xié)議,可以應(yīng)用在任意大于兩臺主機(jī)的環(huán)境下使用,F(xiàn)TP 不僅是協(xié)議,也是一個應(yīng)用程序。
TFTP:簡單文件傳輸協(xié)議,是 FTP 的簡化版。應(yīng)用場景:只有你知道“確切的文件名”與“確定的位置”才可以選擇使用 TFTP。

  • FTP 是完整、面向會話、常規(guī)用途是文件傳輸協(xié)議。TFTP 是用作特殊目的文件傳輸協(xié)議。
  • 交互使用 FTP 協(xié)議,TFTP 僅允許單向傳輸?shù)奈募?/li>
  • FTP 提供身份驗證,TFTP 不提供身分驗證。
  • FTP 使用以 TCP 的端口:21(控制端口)、20(數(shù)據(jù)端口,但數(shù)據(jù)端口不一定是20端口,這和FTP應(yīng)用模式有關(guān)。如果是主動模式,21號是數(shù)據(jù)端口;如果為被動模式,由服務(wù)器端和客戶端協(xié)商決定 “FTP Port模式”與“FTP Passive模式”);TFTP 是使用 UDP 端口的 69 號端口進(jìn)行文件傳輸。
  • FTP 依賴于 TCP 協(xié)議,是面向連接并提供可靠的控件。TFTP 依賴 UDP 協(xié)議,為了減小開銷,幾乎不提供空間。

二. PXE 服務(wù)器搭建

  1. 基礎(chǔ)環(huán)境需求

搭建 pxe 服務(wù)器環(huán)境需要有:一個 DHCP 服務(wù)器、TFTP/FTP 服務(wù)器和一個文件服務(wù)器(文件服務(wù)器可以是:ftp服務(wù)器、http服務(wù)器、nfs等文件服務(wù)器)。并且需要在客戶機(jī)的固件、網(wǎng)卡支持這樣的服務(wù)。

  1. PXE 啟動過程
    • 調(diào)整固件配置,設(shè)置開機(jī)啟動項為網(wǎng)絡(luò)啟動。
    • 客戶機(jī)開機(jī)進(jìn)入網(wǎng)絡(luò)啟動模式,此時客戶機(jī)沒有 IP 地址需要發(fā)送廣播報文(PXE 網(wǎng)卡內(nèi)置了 DHCP 客戶端程序),在同一局域網(wǎng)內(nèi)服務(wù)器端,DHCP 服務(wù)器響應(yīng)客戶端請求,分配給客戶端相應(yīng)的 IP 地址與掩碼等信息。
    • 客戶端得到 IP 地址后,與 tftp 通信,下載啟動軟件包與啟動配置文件。
    • NFS 文件共享服務(wù)器提供文件共享的目錄boot、LiveOS目錄。
部署各服務(wù)器

一. 部署 TFTP 服務(wù)器

  1. 安裝 tftp、xinetd
# fedora,Centos
dnf install tftp xinetd tftp-server
  1. 配置、測試 TFTP
# 配置 TFTP
vim /etc/xinetd.d/tftp
# TFTP 服務(wù)器默認(rèn)的根文件路徑:“/var/lib/tftpboot”

# 關(guān)閉防火墻、啟用服務(wù)
/etc/init.d/iptables stop   # 關(guān)閉防火墻
systemctl restart xinetd        # 重啟 xinetd 服務(wù),因為
                            # TFTP 服務(wù)受控于xinetd
                            # xinetd是管理服務(wù)的服務(wù)
                            # 是不需要端口的
systemctl enable tftp       # 開機(jī)自啟
systemctl restart tftp      # 重啟服務(wù)

# 驗證 TFTP 服務(wù)是否起來
netstat -nlp | grep 69
# 若出現(xiàn)以下信息則代表已啟動
udp 0 0.0.0.0.0:69  0.0.0.0:*

# 設(shè)置服務(wù)開機(jī)自動運行級別
chkconfig --livel 345 xinetd on
chkconfig --livel 345 tftp on

# 測試 TFTP 服務(wù)器
cd /var/lib/tftpboot
touch test_tftpboot.txt
cd                          # 回到家目錄
# 進(jìn)入 tftp: tftp localhost;tftp “ip地址 DHCP 服務(wù)器配置文件指定的”
tftp> get tftp_tftpboot.txt
tftp> quit
ls -al tftp_tftpboot.txt        # 查看是否獲取到tftp_tftpboot.txt文件

二. 部署 DHCP 服務(wù)器

DHCP 使用 UDP 的67號端口,運行原理:請求DHCP服務(wù)器、提供IP地址、選擇IP地址、IP地址提供確認(rèn)、重新租約、更新租約。

DHCP客戶          DHCP服務(wù)器
    ->IP租用請求->
    <-IP租用提供<-
    ->IP租用選擇->
    <-IP租用確認(rèn)<-
#1. 第一步請求DHCP服務(wù)器
客戶端在局域網(wǎng)廣播發(fā)送 DHCP discovery包,尋找DHCP服務(wù)器,
即向255.255.255.255發(fā)送特定的廣播信息,每一臺安裝了
TCP/IP協(xié)議的主機(jī)都會有這個廣播地址,但只有DHCP服務(wù)器才會做出回應(yīng)
#2. 第二步提供IP地址
服務(wù)器收到DHCP discovery包后,向客戶機(jī)發(fā)送一個包含分配
的IP地址和其它設(shè)置的 DHCP offer 包,目的告訴客戶機(jī),我能
為你提供IP地址。
#3. 第三步選擇IP地址
客戶機(jī)收到DHCP offer提供信息包后,(如果客戶機(jī)在一段時間
內(nèi)沒有接收到DHCP服務(wù)器發(fā)出dhcp offer包,則會重新
發(fā)送dhcp discover。如果廣播區(qū)域內(nèi)不止一臺dhcp服務(wù)器,
則由客戶機(jī)決定使用哪個)客戶機(jī)選擇第一個接收到的提供信息包,
以廣播的方式再發(fā)送一個DHCP request請求信息包,
客戶機(jī)向服務(wù)器請求IP地址。
#4. 第四步提供IP地址確認(rèn)
服務(wù)端收到客戶機(jī)回應(yīng)的DHCP request 請求信息包之后,便向
客戶機(jī)發(fā)送一個DHCP ack 確認(rèn)信息包,告訴客戶機(jī)可以使用
它提供的IP地址。
#5. 第五步重新登陸
以后DHCP客戶機(jī)每次使用此IP地址時,就不需要再發(fā)送DHCP discovery包了,
而是直接發(fā)送一個包含前一次所分配的IP地址的DHCP request請求
信息。當(dāng)DHCP服務(wù)器收到這一信息以后,它會繼續(xù)讓客戶機(jī)
使用此IP地址,并回答一個DHCP ack確認(rèn)信息。如果此IP地址
已無法再分配給原來的客戶機(jī)使用時,則DHCP服務(wù)器給客戶機(jī)回答
一個DHCP nack否認(rèn)信息。當(dāng)原來的客戶機(jī)收到此DHCP nack否認(rèn)
信息后,它就必須重新發(fā)送DHCP discovery尋找信息來請求新的IP地址。
#6. 第六步更新租約
DHCP服務(wù)器向客戶機(jī)出租的IP地址都有一個租借期限,期滿后DHCP
服務(wù)器便會收回出租的IP地址。如果客戶機(jī)要延長其IP租約,必須
更新其IP租約??蛻魴C(jī)啟動時和IP租約期限過一半時,
客戶機(jī)都會自動向DHCP服務(wù)器發(fā)送更新其IP租約的信息。
  1. 安裝 dhcp
dnf install -y dhcp
  1. 配置、測試 DHCP
# vim /etc/dhcp/dhcpd.conf

# dhcpd.conf
# 設(shè)置租時間、最大租時間
default-lease-time 600;
max-lease-time 7200; 
# 定義域名
option domain-name "XXXXX"
# 定義地址池的子網(wǎng)和掩碼、定義地址池的大小
subnet 10.1.255.0.0 netmast 255.255.255.0 {
    range 10.1.255.10 10.1.255.100;
# 定義引導(dǎo)服務(wù)器,即tftp服務(wù)器的引導(dǎo)文件和tftp服務(wù)器地址
# 注意此處的 filename 是有針對性的,此處的文件只是基于 linux-X86的架構(gòu)有效
    
}

簡便的方式是設(shè)置靜態(tài) IP、指定 IP 地址與子網(wǎng)掩碼、關(guān)閉防火墻、重啟 DHCP 服務(wù)

# 設(shè)置靜態(tài) IP 
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROT=static
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes

# 配置 DHCP 服務(wù)器
ddns-update-style interim;
allow booting;
allow bootp;
next-server 192.168.1.200;
filename "vmlinuz";

default-lease-time 1800;
max-lease-time 7200;
ping-check true;

subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.210 192.168.1.230;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}

# 關(guān)閉防火墻、重啟 DHCP 服務(wù)
systemctl stop firewalld
systemctl restart dhcp
# 或者重啟 NetworkManager 服務(wù),重啟網(wǎng)絡(luò)服務(wù)系統(tǒng)也會重新從 DHCP 服務(wù)器重新獲取 IP
  1. 服務(wù)端與客戶端的測試
#1. 服務(wù)器端:
# 在服務(wù)器上監(jiān)聽日志:tail -f /var/log/messages

#2. 客戶端:
# 打開兩個 terminal 去顯示網(wǎng)絡(luò)信息與時實日志信息
# 重啟網(wǎng)絡(luò):systemctl restart NetworkManager
# 監(jiān)聽日志:tail -f /var/log/messages
# 查看網(wǎng)關(guān):route  -n  |  grep  UG
#查看路由: cat  /etc/resolv.conf
  1. 配置好DHCP后,檢查、測試網(wǎng)絡(luò)是否通
#1 使用ifconfig觀察本地網(wǎng)絡(luò)設(shè)置是否正確
#2 ping 127.0.0.1來檢查本地的TCP/IP協(xié)議有沒有設(shè)置好
ping 127.0.0.1ping的通說明tcp協(xié)議棧沒有問題

#3 ping本機(jī)IP地址,這樣是為了檢查本機(jī)的IP地址是否設(shè)置有誤
ping 主機(jī)地址 ping的通說明網(wǎng)卡沒有問題

#4 ping本網(wǎng)網(wǎng)關(guān)或本網(wǎng)IP地址來檢查硬件設(shè)備或者本地網(wǎng)絡(luò)是否正常,ping的通說明包可以到達(dá)路由器
ping 192.168.1.255

#5 ping本地DNS地址,這樣做是為了檢查DNS是否能夠?qū)P正確解析
ping localhost

#6 ping遠(yuǎn)程IP地址,這主要是檢查本網(wǎng)或本機(jī)與外部的連接是否正常
  • 可能出現(xiàn)的問題 ping IP :“Destination Host Unreachable”
1、 局域網(wǎng)使用DHCP動態(tài)分配IP地址時,DHCP出現(xiàn)故障或者失敗
2、 子網(wǎng)掩碼設(shè)置錯誤
3、 路由表返回錯誤信息
  • 重啟網(wǎng)卡: systemctl restart network
  • 關(guān)閉 selinux
# 臨時關(guān)閉selinux:
setenforce 0
# 永久關(guān)閉selinux:
vim  /etc/selinux/config
SELINUX=disabled   # 將enforcing改為disabled
reboot             # 重啟系統(tǒng)永久生效

三. 部署 NFS 服務(wù)器

  1. NFS 運行機(jī)制

NFS是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng),一種用于分散式文件系統(tǒng)的協(xié)定,功能作用是通過網(wǎng)絡(luò)讓不同的機(jī)器、不同的操作系統(tǒng)能夠彼此分享個別的數(shù)據(jù)。讓應(yīng)用程序在客戶端通過網(wǎng)絡(luò)訪問位于服務(wù)器磁盤中的數(shù)據(jù),是在類Unix間實現(xiàn)磁盤文件共享的一種方法。

  1. RPC 介紹

RPC是Remote Procedure Call,即遠(yuǎn)程過程調(diào)用,是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機(jī)制。NFS在文件傳送或信息傳送過程中依賴于RPC協(xié)議,NFS本身是沒有信息傳輸?shù)膮f(xié)議和功能,但NFS可以通過網(wǎng)絡(luò)進(jìn)行資料的分享,這是因為NFS使用了RPC的功能。

  1. NFS 與 RPC 關(guān)系

可以說NFS本身就是使用RPC的一個程序,或者說NFS也是一個 RPC SERVER,所以只要用到NFS的環(huán)境系統(tǒng),不論是NFS SERVER還是NFS CLIENT都要開啟RPC服務(wù)(通俗的理解其關(guān)系:NFS是一個文件系統(tǒng),而RPC是負(fù)責(zé)信息的傳輸)。

  • 安裝、配置基礎(chǔ)環(huán)境
# 安裝 nfs rpc
dnf install nfs-ttils rpcbind
# 關(guān)閉防火墻
systemctl stop firewalld #防止防火墻開機(jī)自起:disable
# 關(guān)閉 selinux
setenforce 0 #臨時關(guān)閉SELINUX
getenforce   #查看SELINUX是否關(guān)閉

  • 配置 NFS
cat > /etc/exports << "EOF"
/var/nfs *(ro,no_root_squash)
/var/bm *(rw,no_root_squash)
EOF
mkdir -pv /var/nfs
  1. 啟動 rpc、nfs服務(wù)
systemctl restart rpcbind
systemctl restart nfs-service
  1. 相關(guān)命令
  • export
-a 重新啟動/etc/exports中的內(nèi)容 
-r 重新讀取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v :在export的時候,將詳細(xì)的信息輸出到屏幕上。
  • showmount
-a 顯示已經(jīng)于客戶端連接上的目錄信息
-e IP或者h(yuǎn)ostname 顯示此IP地址分享出來的目錄
  • rpcinfo
查看rpc執(zhí)行信息,可以用于檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啟的端口所提供的程序有哪些
  • selinux三種模式
enforcing ===>強(qiáng)制模式,SELinux已經(jīng)啟動
permissive===>寬容模式,SELinux已經(jīng)啟動,
             但不會禁止,只是會提出警告信息
disabled  ===>關(guān)閉模式,關(guān)閉SELinux
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容