PXE依赖于DHCP技术
DHCP:
把一个主机接入TCP/IP网络,要为其配置哪些网络参数
IP/MASK---只能本地网络通信
Gate---可以跨网段通信
DNS Server---可以基于主机名通信
Wins Server---基于windows主机名通信
NTP Server
参数配置方式:
静态指定
动态分配
bootp:boot protocol引导协议,无盘工作站使用,并且分配地址以后就固定了,因为服务端要绑定IP和操作系统。操作系统运行在内存中,跟硬盘没有关系
dhcp:重复收回,临时分配(有时候地址数小于主机数),引入了“租约”的bootp,也可以实现为特定主机保留某固定地址
DHCP:动态主机配置协议
arp:address resolving protocol地址解析协议
知道对方的IP但不知道对方的MAC
rarp:reverse arp反向地址解析协议
知道对方的MAC但不知道IP
监听的端口:
Server:67/udp
Client:68/udp---客户端也需要监听,必须是一个守护进程
工作流程:---都是通过广播完成的
(1)Client:dhcp discover---发现报文
(2)Server:dhcp offer(ip/mask,gw,...)---响应
lease time:租约期限,可以自己定义
(3)Client:dhcp request---请求使用服务器发给它的
(4)Server:dhcp ack---确认
续租:---单播
50%时提出续租,延长50%的租约时间,如果找不到在75%,再续租,如果找不到87%再广播
单播给服务器:
dhcp request
dhcp ack---确认可以继续用
dhcp request
dhcp nak---不租了
dhcp discover:广播
Centos:
dhcp包:(ISC提供,还有named包)named提供dns
dnsmasq包:提供dhcp&dns服务,很小的单进程,通常用在小规模环境中
dhcp:不能同时提供两种服务
dhcpd:dhcp服务
dhcrelay:中继服务
客户端刚开机时,发送一个rarp报文,请求地址,服务端找有没有可以分配的地址,然后发给客户端,客户端配置给自己,如果有多个服务器,那么谁的报文到达最快选择谁
DHCP分配地址的范围叫做作用域,管理多个作用域的时候还可以定义超级作用域,dhcp必须在本地网络为本地网络服务,不能为外部网络提供服务,dhcp还可以提供让客户端去服务器加载文件的功能
172.18.100.6
yum install -y dhcp---安装dhcp服务
rpm -ql dhcp---安装完以后,看生成的文件
vim /etc/dhcp/dhcpd.conf---里边是空的,但是有一个示例在/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
option domain-name "magedu。com";---option用来定义配置时的配置选项
option routers 172.18.100.6;---指定网关
option domain-name-servers 172.18.0.1;
default-lease-time 43200;---默认租约期限,单位秒
max-lease-time 86400;---最大租约期限
log-facility local7;
subnet 10.152.187.0 netmask 255.255.255.0 {}---subnet定义一个作用域,称为一个子网
subnet 172.18.0.0 netmask 25.255.0.0 {
range 172.18.100.101 172.18.100.120;
}
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;---指明地址池
option routers rtr-239-0-1.example.org,rtr-239-0-2.example.org;---用来指明其他参数,除了地址和掩码以外的
}
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;---DNS服务器地址,可以有多个,对linux而言最多是三个
option domain-name "internal.example.org";---指明搜索后缀
option routers 10.5.5.1;---指明网关
option broadcast-address 10.5.5.31;---指明广播地址
max-lease-time 7200;
}
host passacaglia {---指明一个主机名,并不是真正的主机名,而只是在dhcp配置文件中区别不同的主机的标识
hardware ehternet 0:0::c0:5d:bd:95;---只要是这个mac地址
filename "vmunix.passacaglia";---获取地址后腰去主机加载一个文件
server-name "toccata.fugue.com";---去这个主机加载这个文件
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com;---表示固定地址
}
定义好以后:
systemctl start dhcpd.service
ss -unl---dhcp监听在udp的67号端口
视频中演示:
先关闭虚拟机的dhcp功能,在客户端使用命令dhclient -d命令(这就是监听在客户端68端口的进程)表示运行在前台,不加-d表示运行在后台,会看到客户端发送的信息,此时如果修改dhcp的地址池,再重启dhcp服务,那么客户端会重新获得一个IP地址
route -n---可以查找网关,还可以指定网关,全局指定或者在子网中指定
如果没有变化,使用nmtui命令把获取方式改为自动获取
systemctl restart network.service
ifconfig
route -n
/etc/resolv.conf---dns在这里配置
如果不想使用服务端分配的dns
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
NAME="eno16777736"
DEVICE="eno16777736"
ONBOOT=yes
NETBOOT=yes
UUID="c4e3e4b5-e373-4743-a25d-dc2c02546ff9"
IPV6INIT=no
BOOTPROTO=dhcp
TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
PEERDNS=yes---把这里改为no
PEERROUTES=yes
然后编辑
vim /etc/resolv.conf
search magedu.com
nameserver 2.1.1.1
地址池中的地址分配给谁了,可以去
/var/lib/dhcpd/dhcpd.leases查看