Linux 的 PXE 与 UEFI PXE 依赖服务器配置

Linux 的 PXE 与 UEFI PXE 依赖服务器配置

PXE(preboot execute environment)是一个 C/S 模式,是以工作站通过网络远程服务器下载映像,通过网络来批量部署系统。

一. PXE 原理过程

客户端 PXE 网卡启动 --> 通过 Bootp 协议广播 dhcp 请求 --> DHCP 服务器 --> 获取 IP,TFTP 服务器地址 --> 从 TFTP 服务器下载boot/{vmlinuz,initrd.img};或者读取 NFS 文件共享服务器共享boot目录 --> 启动系统 --> 到制定 url 去下载 ks.cfg 文件 --> 根据(ks.cfg 文件去 NFS/HTTP/FTP服务器自动下载软件包)安装系统 --> 完成安装

  1. 原理过程

支持来自网络中远程服务器上的操作系统的启动过程启动过程中,终端会要求 DHCP 服务器分配 IP 地址,然后使用 TFTP/FTP 或者 MTFTP(multicast trivial file transfer protocol)协议下载启动软件包(initramfs.img、vmlinuz)到本机内存中并执行,由这个启动软件包终端基本软件设置,从而引导预先安装在服务器中的终端操作系统映像。

  1. FTP 协议与 TFTP 协议对比

FTP:文件传输协议,可以应用在任意大于两台主机的环境下使用,FTP 不仅是协议,也是一个应用程序。
TFTP:简单文件传输协议,是 FTP 的简化版。应用场景:只有你知道“确切的文件名”与“确定的位置”才可以选择使用 TFTP。

  • FTP 是完整、面向会话、常规用途是文件传输协议。TFTP 是用作特殊目的文件传输协议。
  • 交互使用 FTP 协议,TFTP 仅允许单向传输的文件。
  • FTP 提供身份验证,TFTP 不提供身分验证。
  • FTP 使用以 TCP 的端口:21(控制端口)、20(数据端口,但数据端口不一定是20端口,这和FTP应用模式有关。如果是主动模式,21号是数据端口;如果为被动模式,由服务器端和客户端协商决定 “FTP Port模式”与“FTP Passive模式”);TFTP 是使用 UDP 端口的 69 号端口进行文件传输。
  • FTP 依赖于 TCP 协议,是面向连接并提供可靠的控件。TFTP 依赖 UDP 协议,为了减小开销,几乎不提供空间。

二. PXE 服务器搭建

  1. 基础环境需求

搭建 pxe 服务器环境需要有:一个 DHCP 服务器、TFTP/FTP 服务器和一个文件服务器(文件服务器可以是:ftp服务器、http服务器、nfs等文件服务器)。并且需要在客户机的固件、网卡支持这样的服务。

  1. PXE 启动过程
    • 调整固件配置,设置开机启动项为网络启动。
    • 客户机开机进入网络启动模式,此时客户机没有 IP 地址需要发送广播报文(PXE 网卡内置了 DHCP 客户端程序),在同一局域网内服务器端,DHCP 服务器响应客户端请求,分配给客户端相应的 IP 地址与掩码等信息。
    • 客户端得到 IP 地址后,与 tftp 通信,下载启动软件包与启动配置文件。
    • NFS 文件共享服务器提供文件共享的目录boot、LiveOS目录。
部署各服务器

一. 部署 TFTP 服务器

  1. 安装 tftp、xinetd
# fedora,Centos
dnf install tftp xinetd tftp-server
  1. 配置、测试 TFTP
# 配置 TFTP
vim /etc/xinetd.d/tftp
# TFTP 服务器默认的根文件路径:“/var/lib/tftpboot”

# 关闭防火墙、启用服务
/etc/init.d/iptables stop   # 关闭防火墙
systemctl restart xinetd        # 重启 xinetd 服务,因为
                            # TFTP 服务受控于xinetd
                            # xinetd是管理服务的服务
                            # 是不需要端口的
systemctl enable tftp       # 开机自启
systemctl restart tftp      # 重启服务

# 验证 TFTP 服务是否起来
netstat -nlp | grep 69
# 若出现以下信息则代表已启动
udp 0 0.0.0.0.0:69  0.0.0.0:*

# 设置服务开机自动运行级别
chkconfig --livel 345 xinetd on
chkconfig --livel 345 tftp on

# 测试 TFTP 服务器
cd /var/lib/tftpboot
touch test_tftpboot.txt
cd                          # 回到家目录
# 进入 tftp: tftp localhost;tftp “ip地址 DHCP 服务器配置文件指定的”
tftp> get tftp_tftpboot.txt
tftp> quit
ls -al tftp_tftpboot.txt        # 查看是否获取到tftp_tftpboot.txt文件

二. 部署 DHCP 服务器

DHCP 使用 UDP 的67号端口,运行原理:请求DHCP服务器、提供IP地址、选择IP地址、IP地址提供确认、重新租约、更新租约。

DHCP客户          DHCP服务器
    ->IP租用请求->
    <-IP租用提供<-
    ->IP租用选择->
    <-IP租用确认<-
#1. 第一步请求DHCP服务器
客户端在局域网广播发送 DHCP discovery包,寻找DHCP服务器,
即向255.255.255.255发送特定的广播信息,每一台安装了
TCP/IP协议的主机都会有这个广播地址,但只有DHCP服务器才会做出回应
#2. 第二步提供IP地址
服务器收到DHCP discovery包后,向客户机发送一个包含分配
的IP地址和其它设置的 DHCP offer 包,目的告诉客户机,我能
为你提供IP地址。
#3. 第三步选择IP地址
客户机收到DHCP offer提供信息包后,(如果客户机在一段时间
内没有接收到DHCP服务器发出dhcp offer包,则会重新
发送dhcp discover。如果广播区域内不止一台dhcp服务器,
则由客户机决定使用哪个)客户机选择第一个接收到的提供信息包,
以广播的方式再发送一个DHCP request请求信息包,
客户机向服务器请求IP地址。
#4. 第四步提供IP地址确认
服务端收到客户机回应的DHCP request 请求信息包之后,便向
客户机发送一个DHCP ack 确认信息包,告诉客户机可以使用
它提供的IP地址。
#5. 第五步重新登陆
以后DHCP客户机每次使用此IP地址时,就不需要再发送DHCP discovery包了,
而是直接发送一个包含前一次所分配的IP地址的DHCP request请求
信息。当DHCP服务器收到这一信息以后,它会继续让客户机
使用此IP地址,并回答一个DHCP ack确认信息。如果此IP地址
已无法再分配给原来的客户机使用时,则DHCP服务器给客户机回答
一个DHCP nack否认信息。当原来的客户机收到此DHCP nack否认
信息后,它就必须重新发送DHCP discovery寻找信息来请求新的IP地址。
#6. 第六步更新租约
DHCP服务器向客户机出租的IP地址都有一个租借期限,期满后DHCP
服务器便会收回出租的IP地址。如果客户机要延长其IP租约,必须
更新其IP租约。客户机启动时和IP租约期限过一半时,
客户机都会自动向DHCP服务器发送更新其IP租约的信息。
  1. 安装 dhcp
dnf install -y dhcp
  1. 配置、测试 DHCP
# vim /etc/dhcp/dhcpd.conf

# dhcpd.conf
# 设置租时间、最大租时间
default-lease-time 600;
max-lease-time 7200; 
# 定义域名
option domain-name "XXXXX"
# 定义地址池的子网和掩码、定义地址池的大小
subnet 10.1.255.0.0 netmast 255.255.255.0 {
    range 10.1.255.10 10.1.255.100;
# 定义引导服务器,即tftp服务器的引导文件和tftp服务器地址
# 注意此处的 filename 是有针对性的,此处的文件只是基于 linux-X86的架构有效
    
}

简便的方式是设置静态 IP、指定 IP 地址与子网掩码、关闭防火墙、重启 DHCP 服务

# 设置静态 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 服务器
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;
}

# 关闭防火墙、重启 DHCP 服务
systemctl stop firewalld
systemctl restart dhcp
# 或者重启 NetworkManager 服务,重启网络服务系统也会重新从 DHCP 服务器重新获取 IP
  1. 服务端与客户端的测试
#1. 服务器端:
# 在服务器上监听日志:tail -f /var/log/messages

#2. 客户端:
# 打开两个 terminal 去显示网络信息与时实日志信息
# 重启网络:systemctl restart NetworkManager
# 监听日志:tail -f /var/log/messages
# 查看网关:route  -n  |  grep  UG
#查看路由: cat  /etc/resolv.conf
  1. 配置好DHCP后,检查、测试网络是否通
#1 使用ifconfig观察本地网络设置是否正确
#2 ping 127.0.0.1来检查本地的TCP/IP协议有没有设置好
ping 127.0.0.1ping的通说明tcp协议栈没有问题

#3 ping本机IP地址,这样是为了检查本机的IP地址是否设置有误
ping 主机地址 ping的通说明网卡没有问题

#4 ping本网网关或本网IP地址来检查硬件设备或者本地网络是否正常,ping的通说明包可以到达路由器
ping 192.168.1.255

#5 ping本地DNS地址,这样做是为了检查DNS是否能够将IP正确解析
ping localhost

#6 ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常
  • 可能出现的问题 ping IP :“Destination Host Unreachable”
1、 局域网使用DHCP动态分配IP地址时,DHCP出现故障或者失败
2、 子网掩码设置错误
3、 路由表返回错误信息
  • 重启网卡: systemctl restart network
  • 关闭 selinux
# 临时关闭selinux:
setenforce 0
# 永久关闭selinux:
vim  /etc/selinux/config
SELINUX=disabled   # 将enforcing改为disabled
reboot             # 重启系统永久生效

三. 部署 NFS 服务器

  1. NFS 运行机制

NFS是Network File System的缩写,即网络文件系统,一种用于分散式文件系统的协定,功能作用是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据。让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix间实现磁盘文件共享的一种方法。

  1. RPC 介绍

RPC是Remote Procedure Call,即远程过程调用,是能使客户端执行其他系统中程序的一种机制。NFS在文件传送或信息传送过程中依赖于RPC协议,NFS本身是没有信息传输的协议和功能,但NFS可以通过网络进行资料的分享,这是因为NFS使用了RPC的功能。

  1. NFS 与 RPC 关系

可以说NFS本身就是使用RPC的一个程序,或者说NFS也是一个 RPC SERVER,所以只要用到NFS的环境系统,不论是NFS SERVER还是NFS CLIENT都要开启RPC服务(通俗的理解其关系:NFS是一个文件系统,而RPC是负责信息的传输)。

  • 安装、配置基础环境
# 安装 nfs rpc
dnf install nfs-ttils rpcbind
# 关闭防火墙
systemctl stop firewalld #防止防火墙开机自起:disable
# 关闭 selinux
setenforce 0 #临时关闭SELINUX
getenforce   #查看SELINUX是否关闭

  • 配置 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服务
systemctl restart rpcbind
systemctl restart nfs-service
  1. 相关命令
  • export
-a 重新启动/etc/exports中的内容 
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v :在export的时候,将详细的信息输出到屏幕上。
  • showmount
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录
  • rpcinfo
查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些
  • selinux三种模式
enforcing ===>强制模式,SELinux已经启动
permissive===>宽容模式,SELinux已经启动,
             但不会禁止,只是会提出警告信息
disabled  ===>关闭模式,关闭SELinux
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容