Linux学习之路-Linux-DHCP设置及PXE13---20180101
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习之路-Linux-DHCP设置及PXE13---20180101相关的知识,希望对你有一定的参考价值。
一、DHCP服务
DHCP(动态主机配置协议)是一种协议,它允许IP网络上的各个设备从DHCP服务器获取自己的网络配置信息(IP地址,子网掩码,广播地址等)。 DHCP的总体目的是使管理大型网络更容易。 dhcp软件包包括ISC DHCP服务和中继代理。
要在您的网络上使用DHCP,请安装DHCP服务(或中继代理),并在客户端上运行DHCP客户端守护程序。 dhcp包提供了ISC DHCP服务和中继代理。
1、网络配置方法:
静态指定
动态获取有两种方式:
bootp:boot protocol MAC与IP一一静态对应
dhcp:增强的bootp,动态
2、DHCP: (Dynamic Host Configuration Protocol)
动态主机配置协议
局域网协议,UDP协议,用到了67(服务器端),68(客户端)端口
注意:如果设置防火墙,别拦截67,68端口
3、主要用途:
用于内部网络和网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作集中管理的手段
4、使用场景
自动化安装系统
解决IPV4资源不足问题
5、DHCP共有八种报文
DHCP DISCOVER:客户端到服务器
DHCP OFFER :服务器到客户端
DHCP REQUEST:客户端到服务器
DHCP ACK :服务器到客户端
DHCP NAK:服务器到客户端,通知用户无 法分配合适的IP地址
DHCP DECLINE :客户端到服务器,指 示地址已被使用
DHCP RELEASE:客户端到服务器,放弃 网络地址和取消剩余的租约时间
DHCP INFORM:客户端到服务器, 客户 端如果需要从DHCP服务器端获取更为详细 的配置信息,则发送Inform报文向服务器 进行请求,极少用到
6、续租
50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST请求。如果dhcp服务没有拒绝的理由,则回应DHCPACK信息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求
7、DHCP服务简介
a、同网段多DHCP服务
DHCP服务必须基于本地
先到先得的原则
b、相关协议
Arp
rarp
c、跨网段获取DHCP动态地址的方法:
RFC 1542 Compliant Routers
dhcrelay: 中继
二、DHCP实现
1、Linux DHCP协议的实现程序:
dhcp软件包
dnsmasq软件包,包含dhcp、dns服务(适合小环境)
2、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
3、Dhcp clientdh
client
自动获取的IP信息:
/var/lib/dhclient
4、DHCP配置文件
dhcpd.conf:
帮助参考:man 5 dhcpd.conf全局配置
subnet { ... } host { }
地址分配记录
/var/lib/dhcpd/dhcpd.leases
5、dhcpd.conf 示例
option domain-name "magedu.com"; option domain-name-servers 192.168.0.1,8.8.8.8; default-lease-time 86400; max-lease-time 86400; subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.1 192.168.100.200; option routers 192.168.100.1; }
6、其它配置选项:
filename: 指明引导文件名称
next-server:提供引导文件的服务器IP地址
示例:
filename "pxelinux.0";
next-server 192.168.100.100;
检查语法
service dhcpd configtest
[[email protected]~]#rpm -ql dhcp ..... /etc/dhcp/dhcpd.conf ---> dhcp配置文件 /var/lib/dhcpd/dhcpd.leases ---> 已分配的地址数据库 [[email protected]~]#vim /etc/dhcp/dhcpd.conf # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample --->dhcp配置文件模板 # see 'man 5 dhcpd.conf' ... [[email protected]~]#vim /etc/dhcp/dhcpd.conf ... option domain-name "example.org"; --->域名解析 option domain-name-servers 114.114.114.114, ns2.example.org; --->DNS设置 default-lease-time 86400; --->分配的地址时效 max-lease-time 864000; --->特殊需求可以申请的最大时间 ... # DHCP server to understand the network topology. subnet 192.168.27.0 netmask 255.255.255.0 { --->DHCP服务器所在的网段及子网掩码 range 192.168.27.100 192.168.27.200; --->设置自动获取ip的网段 option routers 192.168.27.1; --->设置网关.最后的分号千万别写错了,不然服务启动不了 filename "pxelinux.0"; --->tftp文件名字 next-server 192.168.27.6; --->服务器ip地址 } ... host fantasia { --->设置固定mac和ip地址绑定 hardware ethernet 08:00:07:26:c0:a5; --->写明mac地址 fixed-address 192.168.27.100; --->写明ip地址 还可以在加网关和dns选项 } ... [[email protected]~]#ss -nutlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:67 *:* users:(("dhcpd",3917,7)) ... 其余用不上的段落,可以使用 .,$s/^/#/ 在本行到最后一行前面加#注释掉,有一个的就是本次注释的,两个的就是之前注释掉的。 [[email protected]~]#service dhcpd configtest --->这个命令现在只能在centos6中使用,7中已失效 Syntax: OK
注意:最后的分号千万别写错了,不然服务启动不了
三、PXE实现
1、PXE:
Preboot Excution Environment 预启动执行环境
Intel公司研发
基于Client/Server的网络模式,支持远程主机通过网络 从远端服务器下载映像,并由此支持通过网络启动操作系统
PXE可以引导和安装Windows,linux等多种操作系统
2、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下载安装源文件,读取自动化安装脚本
四、PXE自动化安装Centos 7
1、安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
安装软件包
httpd
tftp-server
dhcp
syslinux
system-config-kickstart
配置文件共享服务:
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
准备kickstart文件
/var/www/html/ks/centos7.cfg 注意:权限
配置tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
[[email protected]~]#yum info tftp ... Description :简单文件传输协议(TFTP)通常仅用于引导无盘工作站。 tftp软件包为TFTP提供了用户界面,允许用户将文件传入和传出远程机器。 这个程序和TFTP提供的安全性非常低,除非明确需要,否则不应启用。 [[email protected]~]#cat /etc/xinetd.d/tftp --->centos6需要设置xinetd.d下面的配置文件 ... disable = no --->默认是yes,修改成no,为启动服务 socket_type = dgram 或者执行chkconfig tftp on命令 protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot per_source = 11 cps = 100 2 flags = IPv4 [[email protected]~]#ss -nul State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:69 *:* [[email protected]~]#rpm -ql tftp-server /etc/xinetd.d/tftp /usr/sbin/in.tftpd ... /var/lib/tftpboot --->客户端访问的tftp服务,就是默认访问这个目录 如果用tpfp访问下取文件,必须提前告知文件名字,不然无法查询文件。 [[email protected]]#cat 6.9-mini.ks --->自己写的迷你配置文件 #version=DEVEL install url --url=http://172.18.27.6/centos/6 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 network --hostname=Centos6-mini.L rootpw --iscrypted $6$Pa.VQGS2Ic.1vnLd$bJq6seXxmSRIWRuBy8LMl4NfangNX/5nmyBFF.arZz27I2z8b8788hnQFIOyUqaPuEBFM77.p8Alnoe2DNLEb1 firewall --disabled firstboot --disable authconfig --enableshadow --passalgo=sha512 selinux --diabled timezone Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all --initlabel # Clear the Master Boot Record zerombr part /boot --fstype=ext4 --size=512 part / --fstype=ext4 --size=20480 part /app --fstype=ext4 --size=10240 part swap --size=1024 %packages @core @Base @server-policy @workstation-policy %end %post rm -f /etc/yum.repos.d/* cat > /etc/yum.repos.d/base.repo <<EOF [base] name=file.cdrom baseurl=file:///misc/cd gpgcheck=0 enabled=1 [epel] name=epel-ali baseurl=https://mirrors.aliyun.com/epel/6/x86_64/ gpgcheck=0 enabled=1 EOF useradd L echo lanyangyang | passwd --stdin L &> /dev/null %end [[email protected]]#cat 6.9-server.ks ---> 用raid分区模式 #version=DEVEL install url --url=http://192.168.27.6/centos/6 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 network --hostname=Centos6-server.L rootpw --iscrypted $6$nKc0Av3Bje8Tcm9a$u2DsNPgkEnuBg6kKSA/9pwaWU0wpmmzkC8SMnk3brKLAJQrwmMEN.5a7zHB.cIgLp9zPlxwyU9VP0JDYs27zv1 firewall --disabled authconfig --enableshadow --passalgo=sha512 selinux --disabled timezone Asia/Shanghai bootloader --location=mbr --driveorder=sda,sdb --append="crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work # Clear the Master Boot Record zerombr clearpart --all --initlabel raid / --fstype=ext4 --level=0 --device=md0 raid.008002 raid.008017 raid /app --fstype=ext4 --level=0 --device=md1 raid.008003 raid.008018 raid swap --level=0 --device=md2 raid.008005 raid.008019 raid /home --fstype=ext4 --level=0 --device=md3 raid.008006 raid.008021 part /boot --fstype=ext4 --size=1024 part raid.008002 --size=20480 part raid.008003 --size=10240 part raid.008005 --size=2048 part raid.008006 --size=5120 part raid.008017 --size=20480 part raid.008018 --size=10240 part raid.008019 --size=2048 part raid.008021 --size=5120 %packages @core @Base @server-policy @workstation-policy %end
2、配置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
[[email protected]~]#ss -nutlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:67 *:* users:(("dhcpd",3059,7)) udp UNCONN 0 0 *:68 *:* users:(("dhclient",3035,7)) udp UNCONN 0 0 *:69 *:* users:(("xinetd",1569,5)) tcp LISTEN 0 128 :::80 :::* users:(("httpd",3118,4),("httpd",3129,4),("httpd",3130,4),("httpd",3131,4),("httpd",3132,4), ("httpd",3133,4),("httpd",3134,4),("httpd",3135,4),("httpd",3136,4)) [[email protected]]#mount ... /dev/sr1 on /misc/cd type iso9660 (ro,nosuid,nodev) /dev/sr0 on /var/www/html/centos/7 type iso9660 (ro) --->把有的系统光盘提前挂在上 /dev/sr1 on /var/www/html/centos/6 type iso9660 (ro) --->或者把系统iso文件内容拷贝到httpd服务器文件夹中
2、准备相关文件
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
[[email protected]]#tree . ├── ks6.9-cb.cfg ├── ks6.9-mini.cfg ├── ks6.9-server.cfg ├── ks7.4-cb.cfg ├── ks7.4-mini.cfg └── ks7.4-server.cfg [[email protected]]#tree . ├── 6 │ ├── initrd.img │ └── vmlinuz ├── 7 │ ├── initrd.img │ └── vmlinuz ├── menu.c32 ├── pxelinux.0 ├── pxelinux.cfg │ └── default ├── splash.jpg └── vesamenu.c32
3、准备启动菜单
Vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title PXE INSTALL MENU
label auto
menu label Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg
label manual
menu label Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7
label local
menu default
menu label ^Boot from local drive
localboot 0xffff
[[email protected]]#cat pxelinux.cfg/default default vesamenu.c32 #prompt 1 timeout 100 menu background splash.jpg menu title Welcome to CentOS Install System menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label local menu default menu lable Boot from ^local drive localboot 0xffff label Cenots-6.9-server menu label Install 6.9-^serversystem kernel 6/vmlinuz append initrd=6/initrd.img ks=http://192.168.27.6/ksdir/ks6.9-server.cfg label Cenots-6.9-mini menu label Install 6.9-^minisystem kernel 6/vmlinuz append initrd=6/initrd.img ks=http://192.168.27.6/ksdir/ks6.9-mini.cfg label Cenots-6.9-cb menu label Install 6.9-^cbsystem kernel 6/vmlinuz append initrd=6/initrd.img ks=http://192.168.27.6/ksdir/ks6.9-cb.cfg label Cenots-7.4-mini menu label Install 7.4-^minisystem kernel 7/vmlinuz append initrd=7/initrd.img ks=http://192.168.27.6/ksdir/ks7.4-mini.cfg label Cenots-7.4-cb menu label Install 7.4-^cbsystem kernel 7/vmlinuz append initrd=7/initrd.img ks=http://192.168.27.6/ksdir/ks7.4-cb.cfg label Cenots-7.4-server menu label Install 7.4-^serversystem kernel 7/vmlinuz append initrd=7/initrd.img ks=http://192.168.27.6/ksdir/ks7.4-server.cfg
五、PXE自动化安装Centos 6
1、安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
安装相应软件包
dhcp
httpd
tftp-server
syslinux
chkconfig tftp on
chkconfig xinetd on
chkconfig httpd on
chkconfig dhcpd on
service httpd start
service xneted start
2、准备Yum 源和相关目录
mkdir -pv /var/www/html/centos/{6,ks}
mount /dev/sr0 /var/www/html/centos/6
3、准备kickstart文件
/var/www/html/centos/ks/centos6.cfg
注意权限:
chmod 644 /var/www/html/centos/ks/centos6.cfg
4、准备相关的启动文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cd /misc/cd/images/pxeboot/
cp vmlinuz initrd.img /var/lib/tftpboot
cd /misc/cd/isolinux/
cp boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot
5、准备启动菜单文件
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 指定菜单风格
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to wang CentOS 6
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label auto
menu label ^Automatic Install Centos6
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.100.100/centos/ks/centos6.cfg
label manual
menu label ^Manual Install Centos
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.100.100/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
6、目录结构如下:
tree /var/lib/tftpboot/ /var/lib/tftpboot/
├── boot.msg
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
| └── default
├── splash.jpg
├── vesamenu.c32
└── vmlinuz
1 directory, 7 files
7、配置dhcp服务
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
/etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 192.168.100.1;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
option routers 192.168.100.1;
filename "pxelinux.0";
next-server 192.168.100.100;
}
service dhcpd start
[[email protected]]#cat /etc/dhcp/dhcpd.conf # dhcpd.conf ...... # DHCP server to understand the network topology. subnet 192.168.27.0 netmask 255.255.255.0 { range 192.168.27.100 192.168.27.200; option routers 192.168.27.1; filename "pxelinux.0"; next-server 192.168.27.6; }
以上是关于Linux学习之路-Linux-DHCP设置及PXE13---20180101的主要内容,如果未能解决你的问题,请参考以下文章