DHCP基础配置及基于网络自动化安装系统

本文介绍了DHCP协议的基本原理和配置,包括IP分配、DNS服务器指向等,以及如何通过DHCP进行网络自动化安装操作系统,利用kickstart文件实现系统的自动化安装。同时,讨论了DHCP中继的作用和配置,以及在CentOS系统中的PXE环境设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

    DHCP(Dynamic Host Configuration Protocol)用于实现对某一或多个网段内主机进行IP分配、DNS服务器指向等作用,监听在UDP的67号端口(客户端为UDP的68号端口)。DHCP由于引入租约时间的机制,所以可以将少数的可用IP最大化利用。
    客户端想要获取动态获取IP,就必须联系上DHCP服务器请求分配。又由于客户端此时无IP,并不知道谁是DHCP服务器,于是均使用广播的形式与DHCP服务器联系,大概为以下步骤:

1、dhcp discover:客户端发起广播,请求dhcp对其响应
2、dhcp offer:服务端收到广播后将响应信息(IP、DNS、GATEWAY等)发给客户端
3、dhcp request:客户端确认使用某一地址后将确认信息发送给DHCP服务器
4、dhcp ack:服务器确认用户选择

    在有长时间IP占有需求时,则不会在上一地址过期后再向DHCP申请IP地址,如果正在访问互联网时由于IP过期而网络中断显然不是期望看到的。当祖约时间过一半时,客户端就会向自己的DHCP服务器单播申请续租,续租成功后则将剩余时间延长至默认租约时间。如服务端未响应,再过一半时间,即剩余1/4祖约时间,再次申请续租,若仍然未响应。仍然再使用剩余时间的一半,即剩余1/8祖约时间时再次申请,若还未响应,则重新发起广播DHCP请求。

DHCP中继:
    通常在企业网络中为便于实现管理会有子网划分,或者多个局域网。DHCP工作依赖于广播报文,每一个局域网此间是广播隔离的,此时为每一个局域网提供一台DHCP服务器显然不是好的选择。DHCP中继是通过某一个设备(路由器,服务器等)在自己本地开放一个端口,模拟提供DHCP服务,在对应网段的主机,则会认为这是一台DHCP服务器。而中继器收到DHCP请求后并非由自己处理,而是向自己指向的真正的DHCP服务器转发客户端请求,充当客户端与真正DHCP服务器通信的信使,这样一来,就可以利用一台DHCP服务器对多个局域网提供DHCP服务。
注:此时通信的模式与之前不同,客户端与中继器之间仍然是以广播形式通信,而中继器与DHCP服务器则是单播形式进行通信。如果DHCP服务器部署在某一局域网,又向其他局域网提供服务,则必须可以,也应该向本地主机提供服务。

dhcpd基本配置

配置文件基本结构:

全局配置
subnet { }    地址池定义
host { }    保留地址,固定主机分配
shared-network { }     多个网络段定义于同一地址池

注:/usr/share/doc/dhcp*/dhcpd.conf.sample,程序提供模板,手动复制到/etc/dhcp/

基础配置指令:

option domain-name "test.com";    搜索域,如在ping www时,将此后缀自动补在www后面
option domain-name-servers 10.0.1.222;    域名服务器,建议使用IP地址
## 注:option可定义于subnet{}中

default-lease-time 43200;    默认租约时间,单位s
max-lease-time 86400;    最大租约时间,单位s
log-facility local7;    日志定制

## 为当前DHCP服务器所在网络提供服务
subnet 172.27.0.0 netmask 255.255.0.0 {
	option routers 172.27.0.1;    分配网关
	range 172.27.100.50 172.27.100.99;    地址范围
}

注:IP租借信息存放于 /var/lib/dhcpd/dhcpd.leases

基于网络自动化安装操作系统

    DHCP的前生叫bootp(boot protocol),用于引导无盘操作系统。在启动初网卡与bootp服务器通信,将所需文件装载至内存。所带来的缺陷则是每一次为同一台主机分配的IP应该是相同的,用以区分不同主机产生的系统文件。
    同样,也可以利用此技术来进行操作系统的引导安装,再结合kickstart文件,就可以实现操作系统的自动化安装,省去了大量人力。要使客户端再相应服务器上获得相应文件,就得事先配置好DHCP服务器指向一个提供操作系统的TFTP(Trivial File Transfer Protocol,简单文件传输协议,主要用于无盘工作站的引导,UDP/69)服务器。

1、TFTP服务由超级守护进程xinetd代为监听
2、其存放文件的根目录为/var/lib/tftpboot
3、服务端安装程序:tftp-server,客户端程序:tftp

    Intel公司提供了一个PXE(Preboot eXecute Environment)环境,用户辅助客户端从DHCP服务器获取地址,从tftp服务器引导并从一个文件服务器装载安装文件。在Linux上通过安装syslinux程序包来获得PXE环境。

具体步骤:
注:此方法适用于CentOS 6,对于CentOS 7在如下配置中带Marker标识的步骤有所不同,见附1

## 注:TFTP,DHCP,HTTP均部署于同一台主机

## 1、DHCP环境准备
# vim /etc/dhcp/dhcpd.conf
/*
    subnet 172.27.0.0 netmask 255.255.0.0 {
    	option routers 172.27.100.1;
    	range 172.27.100.50 172.27.100.99;
    	filename "pxelinux.0";
    	next-server 172.27.100.1
    }
*/
# service dhcpd restart


## 2、TFTP环境准备
# yum install tftp-server
# vim /etc/xinetd.d/tftp
/* 修改如下项
    disable = no
*/
# service xinetd restart


## 3、相关文件准备
# yum install syslinux
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot    # /media为安装光盘的挂载目录
# cp /media/isolinux/{boot.cat,vesamenu.c32} /var/lib/tftpboot    # Marker1:见附1
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default    # Marker2:见附1


## 4、web服务器准备,此处基于HTTP服务安装系统
# yum install httpd
# mkdir /var/www/html/centos6
# mount /dev/sr0 /var/www/html/centos6
# service httpd start


## 5、kickstart文件及安装前选项
# yum install system-config-kickstart
# system-config-kickstart    # 基于图形界面配置生成kickstart文件
    注:在安装方法界面选择HTTP安装模式,输入服务器地址及目录
       HTTP:172.27.100.1
       HTTP目录:/centos6
       我生成的kickstart文件为 ~/ks.cfg
       如果在图形界面有些选项漏选,在安装过程中可能会询问用户,所以尽可能配置完整
# cp ~/ks.cfg /var/www/html/

# vim /var/lib/tftpboot/pxelinux.cfg/default
/* 编辑相应选项,在我的系统是vesa栏目的append选项里,追加ks文件路径:
    ks=http://172.27.100.1/ks.cfg
    
    把对应安装方式设为默认,添加配置行:
    menu default    # 若原来默认启动行非本栏目,则删除对应的menu行防止冲突

    注:如果没有写权限,则手动添加
    # chmod u+w /var/lib/tftpboot/pxelinux.cfg/default
*/


## 6、系统准备及安装
1、以vbox为例,新建虚拟机,在虚拟机“设置”里选择“系统”栏,启动顺序勾选“网络”,最好调整该选项至第一条
    注:ks文件磁盘划分不要超过虚拟机分配磁盘大小
2、确保服务器tftp、dhcpd、httpd服务处于开启状态,新安装主机与服务器在同一网络
3、启动虚拟机


附1:
Marker1:在CentOS 7中,应该复制如下文件:

# cp /usr/share/syslinux/{chain.c32, mboot.c32, menu.c32, memdisk} /var/lib/tftpboot

Marker2:在CentOS 7中,手动编写/var/lib/tftpboot/pxelinux.cfg/default

# vim /var/lib/tftpboot/pxelinux.cfg/default
/*
    default menu.c32
        prompt 0
        timeout 30
        MENU TITLE CentOS 7 PXE

	LABEL centos7
	MENU LABEL Install CentOS 7
	KERNEL vmlinuz
	APPEND initrd=initrd.img inst.repo=http://172.27.100.1/centos7 ks=http://172.27.100.1/ks.cfg
	
	注:上“具体步骤”中演示为CentOS 6,所以在安装CentOS 7时,
	   不仅是该两项步骤不同,
	   创建挂载目录,光盘镜像挂载,以及ks文件的生成等都应以CentOS 7具体情况为准
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值