DHCP服务
成为dhcp服务器的条件:
1.拥有真实物理网卡,或者连接广播域的真实物理网卡
2.该接口或者该物理网卡必须有一个合理的ip地址
DHCP有三种机制分配IP地址:
自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
工作原理
DHCP协议采用UDP作为传输协议,服务器端会启动port67监听客户端请求,而客户端会启动port68主动向服务器请求。
DHCP过程详解:
一、利用广播数据包搜索dhcp服务器:
由于客户端最开并不知道自己的ip,所以该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。一般主机接收到这个数据包之后会直接丢弃,若局域网内有DHCP服务器,则会开始后续行为。
二、服务器端:提供客户端网络相关的租约以供选择。(dhcp offer)
DHCP服务器在监听到客户端发出的dhcp discover广播后,会针对这个客户端的硬件地址( MAC)与本身的设置数据进行下列工作:
>到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。
>若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端。
>若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。
(4)服务器端:记录该次租约行为后并向客户端发送响应数据包信息以确认客户端的使用。
当服务器端收到客户端的request包时,服务器会回送确认的dhcp ack包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。那么该次租约何时会到期而被解约,有以下几种情况:
客户端脱机:关闭网络接口、重新启动、关机等行为,都算是脱机状态;
客户端租约到期:dhcp server端发放的IP有使用的期限,客户端使用这个IP到达期限规定的时间,而且没有重新提出DHCP的申请时
DHCP小常识:
由于目前的DHCP客户端程序大多数会主动依据租约时间去重新申请IP,所以即使有租约期限,也不需要在某个时间点手动去重新申请IP。
DHCP服务器的搭建
一、软件安装
[root@web ~]# yum install dhcp -y
二、配置文件格式说明
dhcp服务器的主要配置文件:/etc/dhcp/dhcpd.conf
dhcp服务器与客户端租约建立的起始与到期日记录文件:/var/lib/dhcpd/dhcpd.leases
主配置文件中主要分为两大板块:
1、服务器运行的全局设置
当IP分配设置没有定义到某些设置时,则以全局设置为准。
default-lease-time默认的租约时间(用户的计算机也能够要求一段特定长度的租约时间。但若用户没有特别要求租约时间,默认以此为准。时间单位默认为秒)
max-lease-time最大租约时间(如果用户要求的租约时间超过该值,则以此值为准)
option domain-name 域名(如果在/etc/resolv.conf里面设置了一个search xxx.com的话,这表示当你要查找主机名时,DNS系统会主动帮你在所要查找的主机名后加上这个域名后缀)
option domain-name-servers IP1、IP2(这个设置参数可以修改客户端的/etc/resolv.conf文件)
ddns-update-style 类型(因为dhcp客户端所取得的IP通常是一直变动的,所以此时DHCP可以通过ddns来更新主机名与IP的对应关系)
ignore client-updates(与上一个设置值有关,客户端可通过dhcp服务器来更新DNS相关的信息。设置成ignore为忽略)
option routers 路由器地址(设定路由器的IP地址)
#配置DHCP和dns服务的更新模式,一般不用,但是必须有该项,否则服务无法启动
ddns-update-style { interim | ad-hoe | none };
#作用:定义所支持的DNS动态更新类型。
# none:表示不支持动态更新
# interim:表示DNS互动更新模式
# ad-hoc:表示特殊DNS更新模式
ddns-update-style interim; # dns动态更新模式
ignore client-updates; #这个选项是不允许客户机更新 DNS 记录。当然,也可能允许,但会有一点问题。
2、IP分配设置
由于dhcp主要是针对局域网来分配IP参数。指定局域网的方式使用如下参数:
subnet 网络地址 netmask 子网掩码地址 {
range IP1 IP2
host 主机名 {……}
hardware ethernet
fixed-address
}
#子网配置段
#声明网段和掩码
subnet 192.168.40.0 netmask 255.255.255.0 {
#指定地址池范围
range dynamic-bootp 192.168.40.130 192.168.40.254;
#指定网关
option routers 192.168.40.1;
#指定掩码
option subnet-mask 255.255.255.0;
#指定DNS
option domain-name-servers 114.114.114.114;
#默认租约
default-lease-time 21600;
#最大租约
max-lease-time 43200;
}
案例一:
1、单网段配置 将客户端,主机dhcp选项取消
[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.40.0 netmask 255.255.255.0 {
option routers 192.168.40.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.40.200 192.168.40.254;
default-lease-time 60;
max-lease-time 60;
}
systemctl restart dhcpd
在客户端获取ip地址
案例二
2、固定IP配置
[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
host boss {
hardware ethernet 00:0c:29:17:b4:32;
fixed-address 192.168.221.250;
}
host ns2 {
hardware ethernet 00:0c:29:7f:32:10;
fixed-address 192.168.40.249;
}