Linux 的 PXE 與 UEFI PXE 依賴服務(wù)器配置
PXE(preboot execute environment)是一個(gè) C/S 模式应民,是以工作站通過網(wǎng)絡(luò)遠(yuǎn)程服務(wù)器下載映像,通過網(wǎng)絡(luò)來批量部署系統(tǒng)蕾管。
一. PXE 原理過程
客戶端 PXE 網(wǎng)卡啟動(dòng) --> 通過 Bootp 協(xié)議廣播 dhcp 請(qǐng)求 --> DHCP 服務(wù)器 --> 獲取 IP,TFTP 服務(wù)器地址 --> 從 TFTP 服務(wù)器下載boot/{vmlinuz,initrd.img};或者讀取 NFS 文件共享服務(wù)器共享boot目錄 --> 啟動(dòng)系統(tǒng) --> 到制定 url 去下載 ks.cfg 文件 --> 根據(jù)(ks.cfg 文件去 NFS/HTTP/FTP服務(wù)器自動(dòng)下載軟件包)安裝系統(tǒng) --> 完成安裝
- 原理過程
支持來自網(wǎng)絡(luò)中遠(yuǎn)程服務(wù)器上的操作系統(tǒng)的啟動(dòng)過程啟動(dòng)過程中菩暗,終端會(huì)要求 DHCP 服務(wù)器分配 IP 地址掰曾,然后使用 TFTP/FTP 或者 MTFTP(multicast trivial file transfer protocol)協(xié)議下載啟動(dòng)軟件包(initramfs.img、vmlinuz)到本機(jī)內(nèi)存中并執(zhí)行停团,由這個(gè)啟動(dòng)軟件包終端基本軟件設(shè)置旷坦,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)映像。
- FTP 協(xié)議與 TFTP 協(xié)議對(duì)比
FTP:文件傳輸協(xié)議佑稠,可以應(yīng)用在任意大于兩臺(tái)主機(jī)的環(huán)境下使用秒梅,F(xiàn)TP 不僅是協(xié)議,也是一個(gè)應(yīng)用程序舌胶。
TFTP:簡(jiǎn)單文件傳輸協(xié)議捆蜀,是 FTP 的簡(jiǎn)化版。應(yīng)用場(chǎng)景:只有你知道“確切的文件名”與“確定的位置”才可以選擇使用 TFTP。
- FTP 是完整辆它、面向會(huì)話誊薄、常規(guī)用途是文件傳輸協(xié)議。TFTP 是用作特殊目的文件傳輸協(xié)議娩井。
- 交互使用 FTP 協(xié)議暇屋,TFTP 僅允許單向傳輸?shù)奈募?/li>
- FTP 提供身份驗(yàn)證,TFTP 不提供身分驗(yàn)證洞辣。
- FTP 使用以 TCP 的端口:21(控制端口)咐刨、20(數(shù)據(jù)端口,但數(shù)據(jù)端口不一定是20端口扬霜,這和FTP應(yīng)用模式有關(guān)定鸟。如果是主動(dòng)模式,21號(hào)是數(shù)據(jù)端口著瓶;如果為被動(dòng)模式联予,由服務(wù)器端和客戶端協(xié)商決定 “FTP Port模式”與“FTP Passive模式”);TFTP 是使用 UDP 端口的 69 號(hào)端口進(jìn)行文件傳輸材原。
- FTP 依賴于 TCP 協(xié)議沸久,是面向連接并提供可靠的控件。TFTP 依賴 UDP 協(xié)議余蟹,為了減小開銷卷胯,幾乎不提供空間。
二. PXE 服務(wù)器搭建
- 基礎(chǔ)環(huán)境需求
搭建 pxe 服務(wù)器環(huán)境需要有:一個(gè) DHCP 服務(wù)器威酒、TFTP/FTP 服務(wù)器和一個(gè)文件服務(wù)器(文件服務(wù)器可以是:ftp服務(wù)器窑睁、http服務(wù)器、nfs等文件服務(wù)器)葵孤。并且需要在客戶機(jī)的固件担钮、網(wǎng)卡支持這樣的服務(wù)。
- PXE 啟動(dòng)過程
- 調(diào)整固件配置尤仍,設(shè)置開機(jī)啟動(dòng)項(xiàng)為網(wǎng)絡(luò)啟動(dòng)箫津。
- 客戶機(jī)開機(jī)進(jìn)入網(wǎng)絡(luò)啟動(dòng)模式,此時(shí)客戶機(jī)沒有 IP 地址需要發(fā)送廣播報(bào)文(PXE 網(wǎng)卡內(nèi)置了 DHCP 客戶端程序)宰啦,在同一局域網(wǎng)內(nèi)服務(wù)器端鲤嫡,DHCP 服務(wù)器響應(yīng)客戶端請(qǐng)求,分配給客戶端相應(yīng)的 IP 地址與掩碼等信息绑莺。
- 客戶端得到 IP 地址后暖眼,與 tftp 通信,下載啟動(dòng)軟件包與啟動(dòng)配置文件纺裁。
- NFS 文件共享服務(wù)器提供文件共享的目錄boot诫肠、LiveOS目錄司澎。
部署各服務(wù)器
一. 部署 TFTP 服務(wù)器
- 安裝 tftp、xinetd
# fedora,Centos
dnf install tftp xinetd tftp-server
- 配置栋豫、測(cè)試 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ù),因?yàn)? # TFTP 服務(wù)受控于xinetd
# xinetd是管理服務(wù)的服務(wù)
# 是不需要端口的
systemctl enable tftp # 開機(jī)自啟
systemctl restart tftp # 重啟服務(wù)
# 驗(yàn)證 TFTP 服務(wù)是否起來
netstat -nlp | grep 69
# 若出現(xiàn)以下信息則代表已啟動(dòng)
udp 0 0.0.0.0.0:69 0.0.0.0:*
# 設(shè)置服務(wù)開機(jī)自動(dòng)運(yùn)行級(jí)別
chkconfig --livel 345 xinetd on
chkconfig --livel 345 tftp on
# 測(cè)試 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號(hào)端口丧鸯,運(yùn)行原理:請(qǐng)求DHCP服務(wù)器蛤铜、提供IP地址、選擇IP地址丛肢、IP地址提供確認(rèn)围肥、重新租約、更新租約蜂怎。
DHCP客戶 DHCP服務(wù)器
->IP租用請(qǐng)求->
<-IP租用提供<-
->IP租用選擇->
<-IP租用確認(rèn)<-
#1. 第一步請(qǐng)求DHCP服務(wù)器
客戶端在局域網(wǎng)廣播發(fā)送 DHCP discovery包穆刻,尋找DHCP服務(wù)器,
即向255.255.255.255發(fā)送特定的廣播信息杠步,每一臺(tái)安裝了
TCP/IP協(xié)議的主機(jī)都會(huì)有這個(gè)廣播地址氢伟,但只有DHCP服務(wù)器才會(huì)做出回應(yīng)
#2. 第二步提供IP地址
服務(wù)器收到DHCP discovery包后,向客戶機(jī)發(fā)送一個(gè)包含分配
的IP地址和其它設(shè)置的 DHCP offer 包幽歼,目的告訴客戶機(jī)朵锣,我能
為你提供IP地址。
#3. 第三步選擇IP地址
客戶機(jī)收到DHCP offer提供信息包后甸私,(如果客戶機(jī)在一段時(shí)間
內(nèi)沒有接收到DHCP服務(wù)器發(fā)出dhcp offer包诚些,則會(huì)重新
發(fā)送dhcp discover。如果廣播區(qū)域內(nèi)不止一臺(tái)dhcp服務(wù)器颠蕴,
則由客戶機(jī)決定使用哪個(gè))客戶機(jī)選擇第一個(gè)接收到的提供信息包,
以廣播的方式再發(fā)送一個(gè)DHCP request請(qǐng)求信息包助析,
客戶機(jī)向服務(wù)器請(qǐng)求IP地址犀被。
#4. 第四步提供IP地址確認(rèn)
服務(wù)端收到客戶機(jī)回應(yīng)的DHCP request 請(qǐng)求信息包之后,便向
客戶機(jī)發(fā)送一個(gè)DHCP ack 確認(rèn)信息包外冀,告訴客戶機(jī)可以使用
它提供的IP地址寡键。
#5. 第五步重新登陸
以后DHCP客戶機(jī)每次使用此IP地址時(shí),就不需要再發(fā)送DHCP discovery包了雪隧,
而是直接發(fā)送一個(gè)包含前一次所分配的IP地址的DHCP request請(qǐng)求
信息西轩。當(dāng)DHCP服務(wù)器收到這一信息以后,它會(huì)繼續(xù)讓客戶機(jī)
使用此IP地址脑沿,并回答一個(gè)DHCP ack確認(rèn)信息藕畔。如果此IP地址
已無法再分配給原來的客戶機(jī)使用時(shí),則DHCP服務(wù)器給客戶機(jī)回答
一個(gè)DHCP nack否認(rèn)信息庄拇。當(dāng)原來的客戶機(jī)收到此DHCP nack否認(rèn)
信息后注服,它就必須重新發(fā)送DHCP discovery尋找信息來請(qǐng)求新的IP地址韭邓。
#6. 第六步更新租約
DHCP服務(wù)器向客戶機(jī)出租的IP地址都有一個(gè)租借期限,期滿后DHCP
服務(wù)器便會(huì)收回出租的IP地址溶弟。如果客戶機(jī)要延長(zhǎng)其IP租約女淑,必須
更新其IP租約」加客戶機(jī)啟動(dòng)時(shí)和IP租約期限過一半時(shí)鸭你,
客戶機(jī)都會(huì)自動(dòng)向DHCP服務(wù)器發(fā)送更新其IP租約的信息。
- 安裝 dhcp
dnf install -y dhcp
- 配置擒权、測(cè)試 DHCP
# vim /etc/dhcp/dhcpd.conf
# dhcpd.conf
# 設(shè)置租時(shí)間袱巨、最大租時(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 是有針對(duì)性的瓣窄,此處的文件只是基于 linux-X86的架構(gòu)有效
}
簡(jiǎn)便的方式是設(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)也會(huì)重新從 DHCP 服務(wù)器重新獲取 IP
- 服務(wù)端與客戶端的測(cè)試
#1. 服務(wù)器端:
# 在服務(wù)器上監(jiān)聽日志:tail -f /var/log/messages
#2. 客戶端:
# 打開兩個(gè) terminal 去顯示網(wǎng)絡(luò)信息與時(shí)實(shí)日志信息
# 重啟網(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
- 配置好DHCP后劝贸,檢查、測(cè)試網(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動(dòng)態(tài)分配IP地址時(shí)件甥,DHCP出現(xiàn)故障或者失敗
2、 子網(wǎng)掩碼設(shè)置錯(cuò)誤
3哼拔、 路由表返回錯(cuò)誤信息
- 重啟網(wǎng)卡: systemctl restart network
- 關(guān)閉 selinux
# 臨時(shí)關(guān)閉selinux:
setenforce 0
# 永久關(guān)閉selinux:
vim /etc/selinux/config
SELINUX=disabled # 將enforcing改為disabled
reboot # 重啟系統(tǒng)永久生效
三. 部署 NFS 服務(wù)器
- NFS 運(yùn)行機(jī)制
NFS是Network File System的縮寫引有,即網(wǎng)絡(luò)文件系統(tǒng),一種用于分散式文件系統(tǒng)的協(xié)定倦逐,功能作用是通過網(wǎng)絡(luò)讓不同的機(jī)器譬正、不同的操作系統(tǒng)能夠彼此分享個(gè)別的數(shù)據(jù)。讓應(yīng)用程序在客戶端通過網(wǎng)絡(luò)訪問位于服務(wù)器磁盤中的數(shù)據(jù)檬姥,是在類Unix間實(shí)現(xiàn)磁盤文件共享的一種方法曾我。
- 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)行資料的分享虐秦,這是因?yàn)镹FS使用了RPC的功能平酿。
- NFS 與 RPC 關(guān)系
可以說NFS本身就是使用RPC的一個(gè)程序,或者說NFS也是一個(gè) RPC SERVER悦陋,所以只要用到NFS的環(huán)境系統(tǒng)蜈彼,不論是NFS SERVER還是NFS CLIENT都要開啟RPC服務(wù)(通俗的理解其關(guān)系:NFS是一個(gè)文件系統(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 #臨時(shí)關(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
- 啟動(dòng) rpc、nfs服務(wù)
systemctl restart rpcbind
systemctl restart nfs-service
- 相關(guān)命令
- export
-a 重新啟動(dòng)/etc/exports中的內(nèi)容
-r 重新讀取/etc/exports 中的信息 暮现,并同步更新/etc/exports还绘、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v :在export的時(shí)候,將詳細(xì)的信息輸出到屏幕上栖袋。
- showmount
-a 顯示已經(jīng)于客戶端連接上的目錄信息
-e IP或者h(yuǎn)ostname 顯示此IP地址分享出來的目錄
- rpcinfo
查看rpc執(zhí)行信息拍顷,可以用于檢測(cè)rpc運(yùn)行情況的工具,利用rpcinfo -p 可以查看出RPC開啟的端口所提供的程序有哪些
- selinux三種模式
enforcing ===>強(qiáng)制模式塘幅,SELinux已經(jīng)啟動(dòng)
permissive===>寬容模式昔案,SELinux已經(jīng)啟動(dòng),
但不會(huì)禁止电媳,只是會(huì)提出警告信息
disabled ===>關(guān)閉模式踏揣,關(guān)閉SELinux