自动安装系统
(壹)基于U盘的自动安装系统(一般安装单个主机系统)
(贰)基于网络的自动安装系统(多台主机安装系统)
(叁)基于网络的自动安装系统(cobbler实现)
(肆)自动安装系统相关的杂项知识
(壹)基于U盘的自动安装系统(一般安装单个主机系统)
制作引导光盘和U盘
创建引导光盘:
-
mkdir –pv /data/myiso
-
cp -r /misc/cd/isolinux/ /data/myiso/
注意: 拷贝的是 isolinux/ 文件夹 -
修改启动时的菜单
vim /app/myiso/isolinux/isolinux.cfg
initrd=initrd.img text ks=cdrom:/myks.cfg
# ^字符之后的字面是对应行的快捷键
# timeout 表示默认倒计时==> timeout 600 表60s
label linux CentOS 7
menu label Install Mini CentOS ^7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.38.57/ksdir/ks7_mini.cfg
label linux CentOS 6
menu label Install Mini CentOS ^6
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.38.57/ksdir/ks6_mini.cfg
label local
menu label Boot from ^local drive
menu default
localboot 0xffff
-
cp /root/ks7_mini.cfg /data/myiso/(ks7_mini.cfg使用system-config-kickstart生成的)
-
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 \ --boot-info-table -V “CentOS boot” -b isolinux/ \ isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/
-
注意:以上相对路径都是相对于光盘的根,和工作目录无关
创建U盘启动盘
- dd if=/root/boot.iso of=/dev/sdb (直接使用dd命令刻录iso文件时,磁盘不具备启动功能)
将文件转换为具有启动功能 <需要使用syslinux工具><正常在windows可以使用一些刻录工具将iso文件直接刻录至U盘>
- yum install syslinux -y
- isohybrid boot.iso
然后重新使用dd刻录至U盘
- dd if=/root/boot.iso of=/dev/sdb
注意:记住dd命令后同步磁盘sync <立即写磁盘>
mkisofs命令
- -o 指定映像文件的名称。
- -b 指定在制作可开机光盘时所需的开机映像文件。
- -c 制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容 作成一个文件。
- -no-emul-boot 非模拟模式启动。
- -boot-load-size 4 设置载入部分的数量
- -boot-info-table 在启动的图像中现实信息
- -R 或 -rock 使用 Rock RidgeExtensions
- -J 或 -joliet 使用 Joliet 格式的目录与文件名称
- -v 或 -verbose 执行时显示详细的信息
- -T 或 -translation-table 建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上
(贰)基于网络的自动安装系统(多台主机安装系统)
PXE自动化安装CentOS 7
电脑通过网络自动安装,网卡必须具备PXE功能。目前一般的网卡一般均带有PXE功能。
PXE自动化安装CentOS大致过程如下
①网卡具有PXE功能相当于网卡内部安装有dhcp客户端和tftp客户端,然后新电脑打开
时若主机硬件没有具有可引导操作系统启动的设备,就可以从网卡引导。
②此时向网络中发起DHCP请求,然后DHCP服务器不仅给予当前主机ip,netmask,
getway,dns,..等等,而且还可以给予当前主机tftp主机的ip和具有启动功能的
"pxelinux.0"文件
③然后启动tftp客户点,通过tftp服务器端得到"pxelinux.0"文件,然后还会自动的
在同一目录寻找内核文件,去加载内核,加载选择菜单。此时与光盘安装OS类似,第
一步应该先加载安装选项的菜单。
④安装OS选项菜单在一个约定俗成的路径,当前主机自动去那个路径寻找菜单,菜单目
录: pxelinux.cfg/ (注意pxelinux.cfg/是目录),则完整路径为:/var/lib/
tftpboot/pxelinux.cfg/ 然后找到其目录下的default菜单文件
⑤然后菜单选择安装的OS,然后提供内核位置,initrd位置,内核参数等等。。。实
现基于网络的自动安装OS。
实现步骤:如下
(1)在dhcpserver端配置: 指明了tftp的server地址和去下载的文件filename
- 当然目前配置的DHCP和TFTPserver均是一台主机
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.1 10.10.10.253;
option routers 10.10.10.2;
option domain-name-servers 180.76.76.76, 8.8.8.8;
option domain-name "example.org";
next-server 10.10.10.254;
filename "pxelinux.0";
}
(2)但是默认主机上没有"pxelinux.0" 这个文件,其中"pxelinux.0"由syslinux.x86_64安装包提供
pxelinux.0 类似于BootLoader的功能
搜索:~]# yum search pxelinux
syslinux.x86_64 : ... 提供"pxelinux.0"
syslinux-extlinux.x86_64 :....
syslinux-tftpboot.noarch :....
安装:yum install syslinux.x86_64
搜索:~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
(3)配置tftp中的所需文件: /var/lib/tftpboot/ 放于默认路径
①先将pxelinux.0复制于/var/lib/tftpboot/目录中
~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
②提供内核相关文件 vmlinuz 和 initrd.img 文件
cp /var/www/html/centos/7/os/x86_64/isolinux/initrd.img /var/lib/tftpboot/
cp /var/www/html/centos/7/os/x86_64/isolinux/vmlinuz /var/lib/tftpboot/
③提供菜单选项 至步骤(4)
(4)提供约定俗称的菜单文件夹(pxelinux.cfg/),和对应的菜单文件(pxelinux.cfg/default)
cd /var/lib/tftpboot
mkdir pxelinux.cfg/
cp /misc/cd/isolinux/isolinux.cfg pxelinux.cfg/default
然后根据实际需要修改pxelinux.cfg/default 菜单文件
精简的菜单风格:此处设置如下:
/usr/share/syslinux/menu.c32 syslinux安装包提供
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
vim pxelinux.cfg/default
default menu.c32
timeout 600
...
menu title Auto Install CentOS 7 <仅留下了大标题>
...
label linux <需要安装的OS和对应的内核参数>
menu label Install CentOS ^7
kernel vmlinuz
append initrd=initrd.img ks=http://10.10.10.254/ksdir/ks7_mini.cfg
label local <原本的基于本地启动>
....
(5)httpd 服务提供应答文件askmethod 和 yum源路径
├── centos
│ ├── 6
│ │ └── os
│ │ └── x86_64
│ └── 7
│ └── os
│ └── x86_64
│ ├── EFI
│ │ └── BOOT
│ │ └── fonts
│ ├── images
│ │ └── pxeboot
│ ├── isolinux
│ ├── LiveOS
│ ├── Packages
│ └── repodata
└── ksdir
(6) 生成应答文件和指定应答文件的url
步骤汇总:
VMware初始化环境:关闭防火墙,关闭selinux,时间同步。
(1) 由一台主机提供以下所有服务(也可以分别由多台主机提供各自的服务):相关软件包:dhcp,httpd,syslinux(提供pxelinux.0和菜单风格文件menu.c32),tftp-server,system-config-kickstart(生成应答文件)
(2)配置http服务:/var/www/html/目录下实现基于网络的yum光盘和应答文件
/var/www/html/
centos
└── 7
│ └── os
│ └── x86_64
│ └── 系统光盘下的所有文件(以及对应系统的目录架构)
└── ksdir(存放应答文件目录ksdir/*.cfg文件)
然后启动服务,设为开启自动
(2-1)VMware实验,挂载光盘
编辑/etc/fstab文件
/dev/sr0 /var/www/html/centos/7/os/x86_64 iso9660 defaults 0 0
mount -a
(3)应答文件的生成:system-config-kickstart
- 主要是基于网络:url --url=“http://10.10.10.254/centos/7/os/x86_64/”
(4)dhcp服务:
- 配置其配置文件:/etc/dhcpd/dhcpd.conf
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.1 10.10.10.253;
option routers 10.10.10.2;
option domain-name-servers 180.76.76.76, 8.8.8.8;
option domain-name "example.org";
next-server 10.10.10.254;
filename "pxelinux.0";
}
- systemctl start dhcpd ; systemctl enable dhcpd
(5)tftp:
- /var/lib/tftpboot/ 目录下文件
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default -- > 文件内容如下
└── vmlinuz
vim pxelinux.cfg/default
default menu.c32
timeout 600
...
menu title Auto Install CentOS 7 <仅留下了大标题>
...
label linux <需要安装的OS和对应的内核参数>
menu label Install CentOS ^7
kernel vmlinuz
append initrd=initrd.img ks=http://10.10.10.254/ksdir/ks7_mini.cfg
label local <原本的基于本地启动>
kernel 和 initrd 的位置,给出内核参数。。
....
- systemctl start tftp;systemctl enable tftp
(6) 在B主机上测试,一台新主机,按下开机键,自动安装centos 7 系统
PXE自动安装OS总结
PXE自动安装支持传统的基于BIOS安装,但是如果是主板上是UEFI安装,PXE对UEFI安装的支持就不够。UEFI安装的解决方案:cobbler。但是cobbler的实现也依赖于PXE,但是将以上的服务做了相应的整合。
(叁)基于网络的自动安装系统(cobbler实现)
cobbler介绍:
- 快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装 windows
- PXE的二次封装,将多种安装参数封装到一个菜单
- Python编写
- 提供了CLI和Web的管理形式
cobbler的工作流程
- client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
- DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
- client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
- cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
- client裸机通过上面告知的TFTP server地址通信,下载引导文件
- client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向 cobbler server请求kickstart文件和os image
- cobbler server发送请求的kickstart和os iamge
- client裸机加载kickstart文件
- client裸机接收os image,安装该os image
cobbler 软件包介绍
- 软件包:cobbler 基于EPEL源
- cobbler 服务集成
PXE
DHCP
rsync
Http
DNS
Kickstart
IPMI 电源管理 - 检查cobbler环境
cobbler check
配置文件目录 /etc/cobbler
/etc/cobbler/settings : cobbler 主配置文件
/etc/cobbler/iso/: iso模板配置文件
/etc/cobbler/pxe: pxe模板文件
/etc/cobbler/power: 电源配置文件
/etc/cobbler/user.conf: web服务授权配置文件
/etc/cobbler/users.digest: web访问的用户名密码配置文件
/etc/cobbler/dhcp.template : dhcp服务器的的配置末班
/etc/cobbler/dnsmasq.template : dns服务器的配置模板
/etc/cobbler/tftpd.template : tftp服务的配置模板
/etc/cobbler/modules.conf : 模块的配置文件
cobbler相关术语
发行版:
表示一个操作系统版本,它承载了内核和 initrd 的信息,以及内核参数等其他数据
配置文件:
包含一个发行版、一个 kickstart 文件以及可能的存储库,还包含更多特定的
内核参数 等其他数据
系统:
表示要配置的主机,它包含一个配置文件或一个镜像,还包含 IP 和 MAC 地
址、电源 管理(地址、凭据、类型)以及更为专业的数据等信息
存储库:保存一个 yum 或 rsync 存储库的镜像信息
cobbler 目录介绍
数据目录
/var/lib/cobbler/config/: 用于存放distros,system,profiles 等信息配置文件
/var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstart/: 默认存放kickstart文件
/var/lib/cobbler/loaders/: 存放各种引导程序
镜像目录
/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
/var/www/cobbler/images/ : 导入发行版kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/: yum 仓库存储目录
日志目录
/var/log/cobbler/installing: 客户端安装日志
/var/log/cobbler/cobbler.log : cobbler日志
cobbler 命令介绍
cobbler check 核对当前设置是否有问题
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息
cobbler 配置文件的作用参数
vim /etc/cobbler/settings中重要的参数设置
default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
manage_dhcp:1
manage_tftpd:1
pxe_just_once:1
next_server:< tftp服务器的 IP 地址>
server:<cobbler服务器的 IP 地址>
实现自动安装的步骤
(1)安装,启动服务,设为开自动:<注意:修改服务配置文件必须重启服务或者重新加载才能生效>
yum install cobbler dhcp
systemctl start httpd tftp cobblerd
~]# systemctl enable httpd tftp cobblerd dhcpd
(2)cobbler check <列出需要做的事情的清单>
(3)然后照着cobbler check 一项一项设置即可。
主要修改配置文件:/etc/cobbler/settings
server:<cobbler服务器的 IP 地址>
next_server:< tftp服务器的 IP 地址>
default_password_crypted: <如果不设置,默认cobbler>
manage_dhcp:1
以上为总计以后的所有修改
(4)cobbler get-loaders 下载 menu.c32和pxelinux.0等文件<要求cobbler主机需要能访问互联网>
- 但是下载的目标并不是/var/lib/tftpboot/目录,之后需要执行cobbler sync <同步至/var/lib/tftpboot/>
cobbler get-loaders
cobbler sync
(5)root默认口令,生成cobbler环境后,导入安装光盘,导入安装光盘后会自动生成一个最小化安装的应答文件,而自动化应答文件中需要设置root口令,需要指,如果默认未指定为cobbler。
修改配置文件:/etc/cobbler/settings中default_password_crypted:
使用openssl passwd -1 :生成加密口令
然后修改:default_password_crypted:后面的密码
(6)DHCP配置文件:
cobbler可以自动生成DHCP的配置文件,两步操作:
①修改/etc/cobbler/settings,使cobbler能管理DHCP配置文件manage_dhcp:1
然后重启cobblerd 服务
②修改/etc/cobbler/dhcp.template (cobbler的dhcp模板文件)
然后执行cobbler sync,借助于修改的模板生成dhcp配置文件
DHCP配置文件具备,就可以启动dhcp服务了。
(7)导入操作系统:
将安装的操作系统导入,然后成为可供cobbler管理的yum源
cobbler import --help 导入的帮助
cobbler import --arch= --path= --kickstart= (应答文件) --name=
kickstart如果不导入,默认会生成一个最小化安装的应答文件
更改自己生成的应答文件:url --url=$tree
(8)增加删除启动菜单
profile 菜单名
distro 导入的OS名称
首先需要更改自己生成的应答文件中:url --url=$tree
cobbler profile remove --name=CentOS6.10-x86_64 删菜单
增加启动菜单
cobbler profile add --name=CentOS7_mini --distro=CentOS7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7_mini.cfg
查看菜单名使用哪个菜单文件
cobbler profile report --name=centos7_mini
更改菜单名对应菜单文件
cobbler profile edit --name=CentOS7_mini --distro=CentOS7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7_mini.cfg
更改菜单名:
cobbler profile rename --name=旧的菜单名 --newname=更改的名称
cobbler的web管理的实现
cobbler-web
- 提供cobbler的基于web管理界面,epel源
- yum install cobbler-web
cobbler-web cobbler是基于Python实现的,因此cobbler在实现web的时候,需
要依赖于一些web框架,Python和web框架相结合的比较著名的框架:django...
但是由于目前的yum源中的Django版本是1.11.23版本和cobbler-web的兼容性有
问题,Django版本过新导致安装web时出现如下故障。
目前的解决方案:
yum install cobbler-web
python2-django-1.11.23-1.el7 <版本太新,有兼容性问题>
rpm -e python2-django --nodeps <不能使用yum卸载,会将依赖的包都卸载>
yum install python2-pip <借助于Python中的pip工具,安装老版本Django>
pip install --upgrade pip <升级pip,省略也行>
pip install Django==1.8.17
systemctl restart httpd
web访问cobbler
- 通过https://cobblerserver/cobbler_web访问
打开web界面
默认账户密码均是:cobbler
cobbler网页界面
支持的认证方式:
- 认证方法配置文件:/etc/cobbler/modules.conf
- 支持多种认证方法:
authn_configfile
authn_pam
支持的验证方法:
# authentication:
# what users can log into the WebUI and Read-Write XMLRPC?
# choices:
# authn_denyall -- no one (default)
# authn_configfile -- use /etc/cobbler/users.digest
# authn_passthru -- ask Apache to handle it
# authn_ldap -- authenticate against LDAP
# authn_spacewalk -- ask Spacewalk/Satellite (experimental)
# authn_pam -- use PAM facilities
# authn_testing -- username/password is always testing/testing
# (user supplied) -- you may write your own module
默认账户和密码:
[authentication]
module = authn_configfile 默认的认证方式 在对应认证方式上面有对应文件
# authn_configfile -- use /etc/cobbler/users.digest
可见默认的账户密码
~]# cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
账户:领域:密码
修改默认的账户密码:
①直接编辑修改文件:
②使用命令编辑修改:(建议做法)
~]# htdigest /etc/cobbler/users.digest Cobbler admin
查看:添加的用户
~]# cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
admin:Cobbler:cb43955b6f0b86cc063485e9c6fa4ecc
更改验证方法:
1)更改配置文件
vim /etc/cobbler/modules.conf
[authentication]
module = authn_pam
2)创建cobbler用户
useradd -s /sbin/nologin cobbler2
echo centos | passwd --stdin cobbler2
3)将OS 账户授权给cobbler
~]# vim /etc/cobbler/users.conf
...
[admins]
admin = "cobbler2"
cobbler = "" <密码因为账户设置密码了,此处不用设置>
4)重启cobbler服务
(肆)自动安装系统相关的杂项知识
centos的安装操作系统过程的实现:
-
anaconda:系统安装程序
gui:图形窗口
tui:基于图形库curses的文本窗口
curses的文本窗口==>类似setup的文本窗口 -
安装OS时需要借助光盘中的若干文件,来进行启动安装的过程
1)MBR:isolinux/boot.cat <类似MBR功能>
2)stage2:isolinux/isolinux.bin <类似于stage2功能>
3)配置文件:isolinux/isolinux.cfg
isolinux/isolinux.cfg 文件功能: <菜单,加载内核><文本文件>
每个对应的菜单选项:
加载内核:isolinuz/vmlinuz
向内核传递参数:append initrd=initrd.img …
由于光盘是只读的,无法修改,因此想修改isolinux/isolinux.cfg,改完之后刻一张新的光盘
4)装载根文件系统,并启动anaconda
默认启动GUI接口
若是显式指定使用TUI接口:向内核传递text参数即可
(1)按tab键,在后面增加text
(2)按ESC键:boot: linux text
isolinux/isolinux.cfg 文件内容分析结合开机启动界面
-
isolinux/isolinux.cfg 文件内容分析
-
centos6的isolinux/isolinux.cfg文件
分析:各种模式的不同就是在initr 后面添加了一个内核参数 -
光盘启动界面
-
按ESC键:进入boot:
此处可填参数:
linux askmethod
linux recuse<进入救援模式>
linux text<基于文本>
linux ks=
…(等参数)
linux askmethod <默认从光盘中去读取安装包,然后进行安装,,askmethod参数加上后,可以设置从哪去获取安装包,可以基于网络等>
手动安装需要制定各项参数(自动安装时就需要指明,否则就会停在相应的位置)
-
anaconda工作过程
Anaconda安装系统分成三个阶段:
安装前配置阶段
安装过程使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
特殊设备:iSCSI
设定主机名
配置网络接口
时区
管理员密码
设定分区方式及MBR的安装位置
创建一个普通用户
选定要安装的程序包 -
anaconda的配置方式:(应答文件此次系统安装的应答文件/root/anaconda-ks.cfg)
(1)交互式配置方式
(2)通过读取事先给定的配置文件自动完成配置
按特定语法给出的配置选项
kickstart文件
通过system-config-kickstart 软件生成应答文件:
-
①yum install system-config-kickstart
-
②system-config-kickstart (如果xshell连接打开需要运行x server)
Xmanager - Passive ==> x server
-
③参照安装系统的/root/anaconda-ks.cfg修改修改生成此ks.cfg文件
-
④ksvalidator 检查生成ks.cfg(应答文件)文件的语法是否有误
-
注意:若使用system-config-kickstart工具生成应答文件时的Package Selection中安装包为出现需要将yum配置的名称修改为[development]
#cat base.repo
[development]
name=base
baseurl=file:///misc/cd/
gpgcheck=1
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7
- 注意:centos6 和 centos7 的应答文件不通用!
DCHP服务
(1)DHCP: (Dynamic Host Configuration Protocol)
- 动态主机配置协议
- 局域网协议,UDP协议(服务器67端口,客户端68端口)
防火墙打开时:如果要从DHCP获取地址,要确保防火墙打开67端口,68端口。
(2)主要用途:
- 用于内部网络和网络服务供应商自动分配IP地址给用户
- 用于内部网络管理员作为对所有电脑作集中管理的手段
(3)使用场景
- 自动化安装系统
- 解决IPV4资源不足问题
(4)DHCP常用的4种报文
- DHCP DISCOVER:客户端到服务器
- DHCP OFFER :服务器到客户端
- DHCP REQUEST:客户端到服务器
- DHCP ACK :服务器到客户端
(5)DHCP获取的地址有租期,续租情况
- 50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的 DHCPREQUEST请求。如果dhcp服务没有拒绝的理由,则回应DHCPACK信 息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
- 87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时, 主机会再发送一次广播请求
(6)DHCP
- 同网段多DHCP服务
DHCP服务必须基于本地
先到先得的原则 - 跨网段
RFC 1542 Compliant Routers
<允许DHCP的广播通过><对路由器有要求>
dhcrelay: 中继
<中继代理与DHCP服务器通信形式是单播><中继代理已知DHCP地址,中继可以转发主机申请地址的报文> - 相关协议
Arp
rarp
(7)DHCP实现原理
- 地址分配原理
(8)DHCP服务器配置
- 由于DHCP时基于广播机制的,因此DHCP server 和DHCP client应该处于同一网段,跨网段时一般采用dhcrelay(中继)的方式,目前一般路由器端口均带有中继功能,以节省DHCP服务器。
(9)DHCP的实现
-
inux DHCP协议的实现程序:dhcp, dnsmasq(dhcp,dns)
-
Dhcp Server
软件包:dhcp
/etc/dhcp/dhcpd.conf 配置文件
/etc/dhcp/dhcpd6.conf 分配ipv6的地址的配置文件
/usr/sbin/dhcpd dhcp server的主程序
/usr/sbin/dhcrelay dhcp的中继代理的主程序
程序对应的service文件
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/var/lib/dhcpd/dhcpd.leases 分配地址的记录存放目录 <数据库文件>
配置文件未配置,dhcp不能启动
默认配置文件:
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example <提示参考范例>
# see dhcpd.conf(5) man page
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.1 10.10.10.253; (注意分号结尾) (设置ip和子网掩码)
option routers 10.10.10.2;(设置网关)
option domain-name-servers 180.76.76.76, 8.8.8.8;(DNS)
option domain-name "example.org";(域后缀)
}
default-lease-time 600; 默认时间 server端租期时间 <可改为86400>
max-lease-time 7200; 默认最长时间 <可改为864000>
申请固定地址:将某主机的MAC和对应的ip绑定,范例如下:
host NAME(随便写) {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 10.10.10.200;
}
-
Dhcp client dhclient
自动获取的IP信息:/var/lib/dhclient -
dhcpd.conf:
帮助参考:man 5 dhcpd.conf
全局配置 subnet {
...
}
host {
}
地址分配记录 /var/lib/dhcpd/dhcpd.leases
- 其它配置选项:(与自动安装相关选项 )
filename: 指明 引导文件名称
next-server:提供引导文件的服务器IP地址
示例:自动安装操作系统
filename "pxelinux.0";
("pxelinux.0") 此文件提供安装的相当于BootLoader类似的功能
("pxelinux.0") 此文件需要事先放在一个共享服务器上,为客户端提供
next-server 192.168.1.100;
next-server指定TFTP服务器
- 检查语法
service dhcpd configtest
TFTP服务
- TFTP:Trivial File Transfer Protocol ,是一种用于传输文件的简单高级协议,是文件传输协议(FTP)的 简化版本。用来传输比文件传输协议(FTP)更易于使用但功能较少的文件
FTP和TFTP的区别
1、安全性区别
- FTP支持登录安全,具有适当的身份验证和加密协议,在建立连接期间需要与FTP身份验证通信 TFTP是一种开放协议,缺乏安全性,没有加密机制,与TFTP通信时不需要认证
2、传输层协议的区别
- FTP使用TCP作为传输层协议,TFTP使用UDP作为传输层协议
3、使用端口的区别
- FTP使用2个端口:TCP端口21,是个侦听端口;TCP端口20或更高TCP端口1024以上用于源连接 TFTP仅使用一个具有停止和等待模式的端口:端口69/udp
4、RFC的区别
- FTP是基于RFC 959文档,带有其他RFC涵盖安全措施;TFTP基于RFC 1350文档
5、执行命令的区别
- FTP有许多可以执行的命令(get,put,ls,dir,lcd)并且可以列出目录等
- TFTP只有5个指令可以执行(rrq,wrq,data,ack,error)
TFTP服务器的搭建:(支持小文件的传输)(非独立服务)
yum install tftp-server(tftp软件包安装)
~]# rpm -ql tftp-server tftp(客户端软件包tftp)
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
.socket和.service TFTP启动谁都一样
/usr/sbin/in.tftpd 主程序
/var/lib/tftpboot 默认tftp共享文件的存放路径
~]# systemctl start tftp.socket 启动服务
~]# ss -tunl 查看监听端口 69
~]# lsof -i :69 (查看69端口谁在监听) ==> systemd (centos7的非独立服务)
systemd 1 root 26u IPv6 59457 0t0 UDP *:tftp
PXE介绍
电脑通过网络自动安装,网卡必须具备PXE功能。目前一般的网卡一般均带有PXE功能。新电脑打开时若主机硬件没有具有可引导操作系统启动的设备,就可以从网卡引导。
PXE:
- Preboot Excution Environment 预启动执行环境
- Intel公司研发
- 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载 映像,并由此支持通过网络启动操作系统
- PXE可以引导和安装Windows,linux等多种操作系统
PXE工作原理
-
Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检 测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的 位置信息一并传送给Client
-
Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client 发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后, 正式向Client发送pxelinux.0
-
Client执行接收到的pxelinux.0文件
-
Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下), TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
-
Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
-
Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
-
Client启动Linux内核
-
Client下载安装源文件,读取自动化安装脚本