关于本文提到的kickstart文件格式可以参考https://blog.csdn.net/zerocdn/article/details/103546319
DHCP介绍
网络配置
静态指定
动态获取: bootp:boot protocol MAC与IP一一静态对应
dhcp:增强的bootp,动态
DHCP: (Dynamic Host Configuration Protocol)
动态主机配置协议
局域网协议,UDP协议
主要用途:
用于内部网络和网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作集中管理的手段
使用场景
自动化安装系统
解决IPV4资源不足问题
DHCP共有八种报文
DHCP DISCOVER:客户端到服务器
DHCP OFFER :服务器到客户端
DHCP REQUEST:客户端到服务器
DHCP ACK :服务器到客户端
DHCP NAK:服务器到客户端,通知用户无法分配合适的IP地址
DHCP DECLINE :客户端到服务器,指示地址已被使用
DHCP RELEASE:客户端到服务器,放弃网络地址和取消剩余的租约时间
DHCP INFORM:客户端到服务器, 客户端如果需要从
DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,极少用到
续租
50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST请求。如果dhcp服务没有拒绝的理由,则回应DHCPACK信息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求
同网段多DHCP服务
DHCP服务必须基于本地
先到先得的原则
跨网段
RFC 1542 Compliant Routers
dhcrelay: 中继
相关协议
Arp
rarp
Linux DHCP协议的实现程序:dhcp, dnsmasq(dhcp,dns)
Dhcp Server
/usr/sbin/dhcpd
/etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd
/etc/dhcp/dhcpd6.conf–> /etc/rc.d/init.d/dhcpd6
/usr/sbin/dhcrelay
/etc/rc.d/init.d/dhcrelay
dhcp server:67/udp
dhcp client: 68/udp
dhcpv6 client:546/udp
Dhcp client
dhclient
自动获取的IP信息: /var/lib/dhclient
DHCP配置文件
dhcpd.conf:
帮助参考:man 5 dhcpd.conf
全局配置
subnet {
…
}
host {
}
地址分配记录
/var/lib/dhcpd/dhcpd.leases
配置文件dhcpd.conf示例
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; ##地址池
option domain-name-servers 192.168.1.17; ##DNS服务器地址
option domain-name "test.com"; ##域名
option routers 192.168.1.17; ##默认路由
option broadcast-address 192.168.100.255; ##广播地址
default-lease-time 300; ##默认租约时间
max-lease-time 7200; ##最大租约时间
}
设定MAC获取指定IP
host test{
hardware ethernet 4c:94:e3:f2:98:5f;
fixed-address 192.168.1.9;
}
其它配置选项:
filename: 指明引导文件名称
next-server:提供引导文件的TFTP服务器IP地址
示例:
filename “pxelinux.0”;
next-server 192.168.100.1;
也可以DHCP同时做TFTP服务器
subnet 192.168.1.0 netmask 255.255.255.0 { 子网和子网掩码
range 192.168.1.10 192.168.1.200; 可使用IP段
option routers 192.168.1.1; 网关
filename "pxelinux.0"; 引导文件名
next-server 192.168.1.2; TFTP地址
}
检查语法
service dhcpd configtest
PEX自动安装系统
1.安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
2.安装软件包
httpd tftp-server dhcp syslinux system-config-kickstart
3.配置文件共享服务:
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
4.准备kickstart文件
/var/www/html/ks/centos7.cfg
5.配置tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
注意:TFTP和KS及yum源的文件访问权限
6.配置DHCP服务
vim /etc/dhcp/dhcpd.conf
option domain-name "example.com";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
filename "pxelinux.0";
next-server 192.168.100.100;
}
systemctl enable dhcpd
systemctl start dhcpd
7.准备相关文件
pxelinux.0和menu.c32文件可以从syslinux包中获取。
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
文件列表如下:
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
8.准备启动菜单
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title CentOS Auto Install
label linux
menu label ^Install CentOS 7 Mini
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.1.10/ksdir/ks7_mini.cfg
label local
menu label Boot from ^local dirve
menu default
localboot 0xffff
目录结构:
├── initrd.img
├── menu.c32
├── pxelinux.cfg
└──default
├── pxelinux.0
└── vmlinuz
注意:如果内存小于2G会报no space left on device
cobbler介绍
cobbler可以快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows。
PXE的二次封装,将多种安装参数封装到一个菜单。
由Python编写。
提供了CLI和Web的管理形式。
cobbler工作流程
client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器发送其分配好的一个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配置文件和目录说明
配置文件目录 /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 : 模块的配置文件
数据目录
/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 import 导入光盘源文件
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息
cobbler常用参数
/etc/cobbler/settings文件中
default_password_crypted: “
1
1
1gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/” 定义ks文件中的默认密码
manage_dhcp:1 自动生成dhcp配置文件
manage_tftpd:1 自动生成tftp配置文件
pxe_just_once:1 防止循环重装
next_server:< tftp服务器的 IP 地址>
server:<cobbler服务器的 IP 地址>
使用步骤
1.安装cobbler和dhcp
yum install cobbler dhcp
需要epel源
2.执行cobbler check查看提示,大部分是修改/etc/cobbler/settings中的设置
示例:
vim /etc/cobbler/settings
next_server:192.168.1.10
server:192.168.1.10
default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
manage_dhcp:1
其中default_password_crypted的加密内容可用openssl得到
openssl passwd -1
3.修改dhcp模板
vim /etc/cobbler/dhcp.template
修改地址
subnet 192.168.1.0 netmask 255.255.255.0 {.
optionrouters 192.168.1.10;
optiondomain-name-servers 192.168.1.10;
optionsubnet-mask 255.255.255.0;
rangedynamic-bootp 192.168.1.100 192.168.1.254;
4.执行cobbler get-loaders下载文件,下载后不会自己拷贝到目录中,需要执行cobbler sync。如果有错误,需要确认dhcp或其他服务配置模板中的设定是否正确。
5.挂载光盘,如果安装了autofs自动挂载也可以直接用
mount /dev/sr0 /mut
6.导入光盘源
cobbler import --path=/mnt --name CentOS7-x86_67 --arch=x86_64
--name 自己起名字
--arch CPU架构
导入完毕之后default文件中自动生成菜单,至此cobbler搭建完成
自定义ks文件
可以把自己以前写好的ks文件拿过来,把URL那改成变量$tree
把文件复制到/var/lib/cobber/kickstarts/
例如:/var/lib/cobber/kickstarts/centos7-x86_64.cfg
cobber distro list查看当前有的安装源
添加引导方案信息
cobbler profile add --name=centos-7-min-x86_64 --distro=centos-7-x86_64 --kickstart= /var/lib/cobbler/kickstarts/centos7-x86_64.cfg
--name 名字,可以自己定,最后会显示在菜单
--distro 指定安装源
--kickstart 指定ks文件
cobber profile list查看已有的引导方案
web管理cobbler
cobbler-web
提供cobbler的基于web管理界面,epel源
yum install cobbler-web
认证方式
认证方法配置文件:/etc/cobbler/modules.conf
支持多种认证方法:
authn_configfile
authn_pam
使用authn_configfile模块认证cobbler_web用户
vim /etc/cobbler/modules.conf
[authentication]
module=authn_configfile
添加或修改用户密码
格式:
htdigest 文件 领域 用户名
htdigest /etc/cobbler/users.digest Cobbler test 添加test用户
加上-c会重新生成文件,即清除其他用户
使用authn_pam模块认证cobbler_web用户
vim /etc/cobbler/modules.conf
[authentication]
module = authn_pam
创建cobbler用户:useradd cobbler
vim /etc/cobbler/users.conf
[admins]
admin = "cobbler“