dhcp动态主机配置协议

dhcp简介:

        动态主机设置协议Dynamic Host Configuration Protocol,DHCP)是一个局域网网络协议,使用UDP协议工作,计算机网络应用层协议

主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;

                                给用户用于内部网管理员作为对所有计算机作中央管理的手段。

主要作用:是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP采用C/S模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

DHCP具有以下功能:

1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

2. DHCP应当可以给用户分配永久固定的IP地址。

3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

4. DHCP服务器应当向现有的BOOTP客户端提供服务。

DHCP有三种机制分配IP地址:

1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

理论过程:

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的68号端口,DHCP服务器回应应答消息给主机的67号端口。

  1. DHCP Client以广播的方式发出DHCP Discover报文。

  2. 所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。

    DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。

  3. DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。

    DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。

  4. DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

  5. DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。

  6. DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。

在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。

在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。

需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定 [1]  的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求。

正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址。

如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息。

在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户端,让客户端重新发起地址请求过程。

过程如下图:

     server1                                    client                                          server2

搭建过程:

实验环境:   server1: 172.25.1.3                dhcp-server

                       localhost                                  dhcp-client

服务器端:

[root@server3 ~]# yum install -y dhcp                

[root@server3 ~]# cd /etc/dhcp/
[root@server3 dhcp]# ls
dhcpd6.conf  dhcpd.conf  scripts
[root@server3 dhcp]# cp /usr/share/doc/dhcp-*/dhcpd.conf.example ./dhcpd.conf
cp: overwrite ‘./dhcpd.conf’? y

[root@server3 dhcp]# vim dhcpd.conf

  1 # dhcpd.conf
  2 #
  3 # Sample configuration file for ISC dhcpd
  4 #
  5
  6 # option definitions common to all supported networks...
  7 option domain-name "example.org";                         //域名
  8 option domain-name-servers 114.114.114.114;             //客户端可以获得的DNS
  9

 10 default-lease-time 600;               //默认的最短租约期
 11 max-lease-time 7200;                 //最长租约期
 12
 13 # Use this to enble / disable dynamic dns updates globally.
 14 #ddns-update-style none;
 15
 16 # If this DHCP server is the official DHCP server for the local
 17 # network, the authoritative directive should be uncommented.
 18 #authoritative;
 19
 20 # Use this to send dhcp log messages to a different log file (you also
 21 # have to hack syslog.conf to complete the redirection).
 22 log-facility local7;
 23
 24 # No service will be given on this subnet, but declaring it helps the
 25 # DHCP server to understand the network topology.
 26
 27 # This is a very basic subnet declaration.
 28
 29 subnet 172.25.1.0 netmask 255.255.255.0 {                        //前者是网络位,后者为子网掩码
 30   range 172.25.1.100 172.25.1.200;                       //分配动态IP的IP地址池
 31   option routers 172.25.1.3;                    //设置客户端获得的网关
 32 }

[root@server3 dhcp]# systemctl start dhcpd                //开启dhcp服务

[root@server3 dhcp]# systemctl enable dhcpd            //设置开机自起

[root@server3 dhcp]# systemctl status dhcpd             //查看服务器状态

客户端:

注意:获取IP过程需要断网,这样才能看出实验效果,否则会有干扰

dhcp服务可以应用于我们封装虚拟机时,这样就不需要挨个给虚拟机配置ip地址了。

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
ONBOOT=yes

[root@localhost ~]# systemctl restart network

可以看到IP为我们所设置IP池的范围

当我们另外封装完一台虚拟机时在reboot后可以捕捉到:

封装虚拟机的过程可借鉴:https://blog.csdn.net/weixin_41922887/article/details/82819037

返回server3端:

[root@server3 dhcp]# cat /var/lib/dhcpd/dhcpd.leases                    //可以看到对应的IP给了谁

文件中hardware ethernet 和localhost中查看到的 link/ether 完全相同,从而说明localhost 的ip就是server3 动态分配的。

到此,dhcp服务已经实现,实验结束。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值