网络无人值守安装
网络无人值守安装的作用
常见的Linux安装方式有光盘安装和U盘安装两种,如果我们有几十台甚至上百台服务器需要统一部署上架,不论是光盘安装还是U盘安装,在生产环境中都需要一台一台的逐个安装,即使你有足够多的光驱并刻录足够多的光盘,你也会发现这是一个既耗时又耗力的苦差事。因此,我们就希望于使用一种可以批量化部署的方案,以此解决减少部署时间和部署负责度的问题。这种方法就是网络无人值守安装方案。
网络无人值守安装就是通过网络启动时推送启动或安装选项,通过匹配被安装服务器的网卡MAC地址段确认安装源和安装方式的一种技术集合,它不是一种技术而是多种技术组合完成的。
网络无人值守安装的流程简介
1)DHCP:用以分配ip地址
2)预启动施行环境(PXE):通过网卡引导计算机
3)PXELINUX:提供引导文件及内核等文件
4)kickstart文件:提供安装介质
DHCP的部署
dhcp简介
DHCP是DynamicHostConfigurationProtocol的缩写。
它的前身是BOOTP。BOOTP原本是用于无盘主机连接的网络上面的:网络主机使用BOOTROM而不是磁盘起动并连接上网络﹐BOOTP则可以自动地为那些主机设定TCP/IP环境。但BOOTP有一个缺点:在设定前须事先获得客户端的硬件MAC地址,而且与IP的对应是静态的。换而言之,BOOTP非常缺乏”动态性”,若在有限的IP资源环境中,BOOTP的一对一的对应关系会造成非常大的浪费。DHCP可以看作是BOOTP的增强版本﹐它分为两个部份:服务器端和客户端。所有的IP地址设定资料都由DHCP服务器集中管理﹐并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP环境资料。比较起BOOTP,DHCP透过“租约”的概念,有效且动态的分配客户端的TCP/IP设定,而且作为兼容考量,DHCP也完全照顾了BOOTPClient 的需求。
当DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 资料,它会向网络发出一个 DHCPDISCOVER封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源位址会为 0.0.0.0 ,而目的位址则为 255.255.255.255 ,然后再附上DHCPDISCOVER 的信息,向网络进行广播。 当 DHCP 服务器监听到客户端发出的DHCPDISCOVER 广播后,它会从那些还没有租出的IP地址范围内按一定顺序选出一个IP 地址 ,连同其它TCP/IP 设置,回应给客户端一个DHCPOFFER 封包。由于客户端在开始的时候还没有 IP 位址,所以在其DHCPDISCOVER 封包内会带有其MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器回应的DHCPOFFER封包则会根据这些资料传递给要求租约的客户。根据服务器端的设置,DHCPOFFER封包会包含一个租约期限的信息。如果客户端收到网络上多台DHCP 服务器的回应,只会挑选其中一个DHCPOFFER(通常是最先抵达的那个),并且会向网络发送一个DHCPREQUEST广播封包,告诉所有DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。同时,客户端还会向网络发送一个ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 DHCPOFFER,并重新发送 DHCPDISCOVER 信息。 当 DHCP 服务器接收到客户端的 DHCPREQUEST 之后,会向客户端发出一个DHCPACK 回应,以确认 IP 租约的正式生效,也就结束了一个完整的DHCP 工作过程。
注意:dhcp是不能跨物理网络的,同样,如果说同一个环境中有多个dhcp服务器,则会选择使用最先返回结果的那个dhcp服务器提供的IP地址。
所以在实验环境里,我们统一关闭eth0,以192.168.0.0/24网段的服务器来进行试验。
基础环境配置如下:
servera作为网关,serverg作为配置整体服务的服务器。
1)serverg关闭eth0
[kiosk@foundation0 Desktop]$ ssh root@172.25.0.10
Last login: Thu Dec 8 08:02:03 2016 from 172.25.0.250
[root@servera ~]# ssh root@192.168.0.16
The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established.
ECDSA key fingerprint is 0b:1f:3b:13:2e:d2:10:53:4c:3d:c8:f4:86:24:d3:5e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.16' (ECDSA) to the list of known hosts.
root@192.168.0.16's password:
Last login: Thu Dec 8 08:01:22 2016 from 172.25.0.250
[root@serverg ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
IPV6INIT=no
IPADDR=192.168.0.16
GATEWAY=192.168.0.10
NETMASK=255.255.255.0
[root@serverg ~]# systemctl restart network
[root@serverg ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.10 0.0.0.0 UG 0 0 0 eth1
172.25.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
[root@serverg ~]# ifdown eth0
2)servera配置防火墙规则,让serverg访问172.25.254.250的数据包能够出去
[root@servera ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@servera ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@servera ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 172.25.0.10
[root@serverg ~]# mount 172.25.254.250:/content /mnt
配置 DHCP
1)安装软件包
[root@serverg mnt]# yum -y install dhcp
Loaded plugins: langpacks
rhel_dvd | 4.1 kB 00:00
(1/2): rhel_dvd/group_gz | 134 kB 00:00
(2/2): rhel_dvd/primary_db | 3.4 MB 00:00
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-36.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
dhcp x86_64 12:4.2.5-36.el7 rhel_dvd 510 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 510 k
Installed size: 1.4 M
Downloading packages:
dhcp-4.2.5-36.el7.x86_64.rpm | 510 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 12:dhcp-4.2.5-36.el7.x86_64 1/1
Verifying : 12:dhcp-4.2.5-36.el7.x86_64 1/1
Installed:
dhcp.x86_64 12:4.2.5-36.el7
Complete!
2)配置DHCP服务
[root@serverg mnt]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@serverg mnt]# vim /etc/dhcp/dhcpd.conf
allow booting; # 定义能够pxe启动
allow bootp; # 定义支持bootp
option domain-name "pod0.example.com";
option domain-name-servers 172.25.254.254;
default-lease-time