一、DHCP基础概念


DHCP:dynamic host configration protocol 动态主机配置协议


c/s架构:

    server:静态地址。提供了一个地址池(列表):67/udp

    client:动态地址,68/udp(服务器有时会向客户端发起请求)



DHCP工作范围:当前的物理网络,不能跨网络进行;



DHCP通信过程:(广播方式,brodcast)

    client:dhcp discover报文

    server:dhcp offer报文

    client:dhcp request报文

    server:dhcp ack报文(确认)


DHCP有租约的概念(lease),当可用时间剩余50%时进行续租(单播),续租时,client端再次发送dhcp request报文,server端发送dhcp ack报文,将使用时间延长至最大使用时间。当server端无法为该地址进行续租,就发送dhcp nak报文给client端,client重新发送discover报文请求新的地址;


二、DHCP基础配置


   

[root@localhost ~]# yum install -y dhcp
[root@localhost ~]# rpm -ql dhcp
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp
/etc/dhcp/dhcpd.conf        #dhcp配置文件(ipv4)默认为空,应该使用样例文件覆盖之
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd           #服务程序
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  #使用此配置文件进行配置
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
/usr/share/doc/dhcp-4.2.5/ldap
/usr/share/doc/dhcp-4.2.5/ldap/README.ldap
/usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
/usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8/dhcpd.8.gz
/usr/share/man/man8/dhcrelay.8.gz
/usr/share/systemtap/tapset/dhcpd.stp
/var/lib/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases

[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf
cp:是否覆盖"./dhcpd.conf"? y

[root@localhost dhcp]# sed -n "/^[^#]/p" dhcpd.conf   #显示配置文件中非#号开头的行
option domain-name "tz.com";                      #定义全局的域名        
option domain-name-servers 172.16.0.1;            #定义全局的dns域
default-lease-time 3600;
max-lease-time 7200;
log-facility local7;
subnet 172.16.0.0 netmask 255.255.0.0 {          #定义dhcp服务范围
	range 172.16.61.1 172.16.61.61;          #定义dhcp地址池
	option routers 172.16.61.2;              #定义该地址池所分配的路由
}


[root@localhost dhcp]# systemctl start dhcpd     #启动dhcp服务
[root@localhost dhcp]# ss -uan
State       Recv-Q Send-Q                 Local Address:Port         Peer Address:Port 
UNCONN      0      0                           *:67                          *:*

使用同一物理网络的客户端进行dhcp请求:

wKioL1bLG56RkuHYAAA5aaMbeP0767.png

DHCPOFFER来源于dhcp server

分配到的地址为172.16.61.1




PXE:preboot execution environment(域引导加载环境)

通过网卡引导操作系统


filename "":基于网卡引导时要加载的initial boot file的文件名;

next-server HOST:initial boot file所在的服务主机地址;

    tftp—server:trivial


一、配置tftp-server


[root@localhost ~]# yum install -y tftp-server
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot

[root@localhost ~]# systemctl start tftp.socket   #启动tftp-server服务

[root@localhost ~]# yum install -y syslinux   #安装syslinux,提供各种bootloader
[root@localhost ~]# rpm -ql syslinux | grep "\<pxe"
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/pxechain.com
/usr/share/syslinux/pxelinux.0         #该文件为pxe使用到的bootloader


二、配置PXE(以CentOS 7为例)


[root@localhost tftpboot]# ll
总用量 3×××
-rw-r--r--. 1 root root    20832 2月  23 08:46 chain.c32   #syslinux提供的bootloader
-rw-r--r--. 1 root root 35745476 3月  28 2015 initrd.img   #提供ramdisk文件(光盘提供)
-rw-r--r--. 1 root root    33756 2月  23 08:46 mboot.c32   #syslinux提供的bootloader
-rw-r--r--. 1 root root    26268 2月  23 08:46 memdisk     #syslinux提供    
-rw-r--r--. 1 root root    55140 2月  23 08:46 menu.c32    #syslinux提供的bootloader
-rw-r--r--. 1 root root    26771 2月  23 08:37 pxelinux.0   #syslinux提供
drwxr-xr-x. 2 root root        6 2月  23 08:47 pxelinux.cfg  #创建该目录
-rw-r--r--. 1 root root  5029136 3月   6 2015 vmlinuz       #提供内核文件(光盘提供)

[root@localhost pxelinux.cfg]# vim default     #在pxelinux.cfg目录下创建default文件

default menu.c32               #展示文本界面
  prompt 30                   #提示符   
  timeout 60                 #超时时长
  MENU TITLE CentOS 7 PXE Menu    #全局菜单项

  LABLE linux                          #boot LABEL
  MENU LABLE Install CentOS 7 x86_64    #菜单项名称
  KERNEL vmlinuz                   #提供内核文件
  APPEND initrd=initrd.img inst.repo=http://172.16.61.2/centos7 ks=http://172.
16.61.2/centos7.cfg      #提供pxe的repo仓库以及ks文件

[root@localhost cdrom]# mount --bind /media/cdrom/ /var/www/html/centos7   #使用光盘提供repo仓库
[root@localhost ~]# ls /var/www/html/
centos7  centos7.cfg  index.html           #配置好yum仓库以及ks文件
[root@localhost ~]# systemctl start httpd    #启动httpd


三、配置dhcp-server


subnet 172.16.0.0 netmask 255.255.0.0 {
        range 172.16.61.44 172.16.61.61;
        option routers 172.16.61.2;
        filename "pxelinux.0";
        next-server 172.16.61.2;    #通过172.16.61.2主机加载pxelinux.0
}
[root@localhost ~]# systemctl start dhcpd  #启动dhcp服务


四、测试PXE



使用同一物理网络的主机调整boot顺序,将网卡引导调整到硬盘引导之上

wKioL1bL2OvzV_OHAAAWx4MJyJA368.png


wKioL1bL4CixEFqDAABP7Odn3xE306.png

wKiom1bL37yQtzsLAAAiAfEeavU123.png




当我们需要为局域网内的多台主机安装操作系统时pxe实现了统一安装的需求,我们不需要手动为每台主机安装操作系统,但是当我们对于每台主机有不同的需求的时,例如,有的主机需要安装CentOS6有主机需要安装CentOS7时,pxe就无法为我们提供可以选择的不同的操作系统。这时我们就需要用到cobbler了。