自动安装系统

自动安装系统

(壹)基于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下载安装源文件,读取自动化安装脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值