DHCP介绍、PXE自动安装系统、cobbler介绍

关于本文提到的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“

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值