译
DHCP服务
DHCP的全称是动态主机配置协议,用来自动给客户机分配TCP/IP信息的网络协议。
Dynamic Host Configuration Protocol,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)
DHCP实际上是在应用层实现,请求报文分装在UDP数据报文中,其中UDP是不可靠的,面向无连接的传输协议。
DHCP通常被应用于局域网环境,其主要作用是用于集中管理,分配IP地址,客户端client动态获得IP地址,Gateway地址,DNS服务器地址等信息,并能够提升地址的使用率。
简单来说,DHCP是没有账号密码登录,自动给内网机器分配IP地址信息的协议。在实际应用上,大大减少了管理员的工作量,避免输入错误的可能,避免ip地址冲突;当更改IP地址段时,不需要重新配置每个用户IP地址,提高了IP地址的利用率,方便客户端的配置。
DHCP具体是怎么样的实现流程?
举一个生活列子来说
就是快递员拿着喇叭在楼下喊:
“某某某的快递下楼拿一下”
然后大家都往楼下看
最后真正的收件人回应:
“是我的快递”
然后你两建立连接
当然我这个列子可能不是很恰当,那小编就带大家以原理干货的形式来讲解。
发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
客户端使用续租达到50%,以单播的形式向服务器请求续约。
如果续约失败,则继续使用ip,达到续租的87.5%,以广播的形式向服务器续租。
如果续约失败,客户端则使用租约至100%,重新发送DHCP Discover包,重新广播寻找DHCP服务器。
续
步骤如上图所示:
1.客户端广播DHCP discover消息
2.服务器端提供地址续租(offer)
3.客户端选择并请求地址租用(request)
4.服务器确认地址租用给客户端(ACK)
续约的四部曲,在这里就先告一段落
下面是一些名词解释,以及每个过程的作用
DHCP DISCOVER
客户端开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER
服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
DHCP REQUEST
客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
DHCP ACK
服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
DHCP NAK
DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
DHCP RELEASE
一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
DHCP INFORM
客户端发出的向服务器请求一些信息的报文
DHCP DECLINE
当客户端发现服务器分配的IP地址无法使用,如IP地址冲突时,将发出此报文,通知服务器禁止
使用该IP地址。
测
实验环境:
两台虚拟机,网络连接模式定义为VMnet*模式
实验目的:
客户端发送请求给服务端,实现DHCP服务的
”客户端发送数据包“ ”服务器接收“ “客户端发出请求” “服务端进行接收”
注意事项:
检查防火墙是否关闭:
关闭防火墙
CentOS 6
chkconfig iptables off
CentOS 7
systemctl disable firewalld
检查selinux是否关闭:
getenforce (Permissive) 显示关闭
修改配置文件
sed -i '7s/enforcing/disabled/' /etc/selinux/config
关闭vm虚拟机的dhcp功能 在网络适配器中将其勾掉
实验步骤:
yum -y install dhcp
打开配置文件 vim /etc/dchpd.conf
cp-a/usr/share/doc/dhcp4.1.1/dhcpd.conf.sample ./dhcpd.conf
将这个dhcp-4.1.1文件 改名复制到dhcpd.conf中
选择 yes
vim dhcp.conf
找到subnet 来分配网段
subnet 192.168.199.0 代表是所有网段的ip
注意!!
客户端和主机ip 不在同一网段,导致互相无法ping通
所以subnet后面的ip 地址必须是和主机ip 同网段。
使用客户端的虚拟机来获取dhcp,在配置文件setup 勾选dhcp
重启网络配置 service network restart
tail -f /var/log/messages 监听dhcp 服务
图/ 能能
文/ 能能
97年气氛组的神