网络服务-DHCP

本文深入讲解DHCP(动态主机配置协议)的工作原理,包括DHCP客户端如何请求IP地址,DHCP服务器如何响应,以及租约和续租的过程。同时,详细介绍了在虚拟机环境下搭建DHCP服务的步骤,包括配置文件的生成、服务的启动和测试,以及如何实现地址保留和超级作用域等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络服务-DHCP

  1. DHCP简介

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个工作在应用层的局域网网络协议,使用不可靠的传输协议UDP工作,通常被应用到大型的局域网络环境中,主要作用是集中管理和分配网络资源,使网络环境中的主机能动态的获取IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。


  2. DHCP工作原理(租约+续租)

在这里插入图片描述

DHCP Client 首先会在局域网内进行广播,寻找DHCP Server,当找到了DHCP Server,DHCP Server就会回复Offer给客户机,客户机则会告诉服务器是否接受,服务器会再次确认。

(通俗来说:求职者在一定区域内海投找工作,当通过简历筛选,公司会先你发来offer邀请,你就会回复是否去面试,面试后,公司会告诉你是否招你)

  • DHCP客户端进行IP请求

    当一个DHCP客户机启动时,会自动将自己的IP设置成0.0.0.0缺省ip,由于使用0.0.0.0不能进行正常的通信,所以客户机就必须通过DHCP服务器来获取一个合法的IP地址。由于客户就不知道DHCP服务器的ip地址,所以它使用0.0.0.0作为源地址,255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息。广播信息DHCP Discover中包含了DHCP客户机的MAC地址和计算机名,以便DHCP服务器能确定是哪个客户机发生的请求。

  • DHCP服务器相应请求

    当DHCP服务器接收到客户机请求ip地址的信息时,它就会在自己的ip地址池中查找是否有合法的ip地址提供给客户机。如果有,DHCP服务器就会在此ip地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包括下列信息时DHCP Offer信息:

    ​ DHCP客户机的MAC地址;DHCP服务器提供的合法ip地址;子网掩码;默认网关;租约的期限;DHCP服务器的ip地址-MAC.

    ​ 因为DHCP客户机还没有ip地址,所以DHCP服务器使用自己的ip地址作为源地址,使用255.255.255.255作为目标地址,使用udp端口68作为源端口来广播DHCP Offer信息,对于MAC的DHCP客户机会接收。

  • DHCP客户机选择IP

    ​ DHCP客户机从接收到的第一个DHCP Offer消息中选择ip地址,发出该ip地址的DHCP服务器将该地址保留,锁定该地址,这样该地址就不能提供给另一个DHCP客户机。当客户机从第一个DHCP服务器接收到DHCP Offer并选择地址后,DHCP租约的第三过程发生。客户机将DHCP Request消息广播到所有的DHCP服务器,表明它接受提供的内容。DHCP Request消息包括了该客户机提供ip配置的服务器的ip地址,如果那些DHCP Offer被拒绝,则DHCP服务器会取消提供并保留其ip地址用于下一个ip租约的请求。

    ​ 在客户机选择ip的过程中,虽然客户机选择了ip地址,但是还没有配置ip地址,而在一个网络中,可能有几个DHCP服务器,所以客户机仍然使用0.0.0.0的地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 67端口作为目的端口来广播DHCP Request的信息。

  • DHCP服务器确认租约

    服务器确认租约:DHCP ACK

    ​ DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功的确认,该消息包含了ip地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约,但是客户机还没有收到DHCP ACK消息,所以服务器仍然使用自己的ip地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口来广播DHCP ACK信息。当客户机接收到DHCP ACK消息时,它就配置了ip地址,完成TCP/IP的初始化。

    服务器拒绝租约:DHCP NACK(DHCP NAK)

    ​ 如果DHCP Request不成功,例如客户机试图租约先前的ip地址,但该ip地址不再可用,或者因为客户机移到了其他的子网,该ip无效时,DHCP服务器将广播否定确认消息DHCP NACK.当客户机收到不超过的确认时,会重新开始DHCP租约的过程。

  • DHCP客户机的续租

在这里插入图片描述

​ DHCP客户机会在租期到50%的时候,直接向为其提供ip地址的DHCP服务器发生DHCP Request消息包,如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就会根据包中所提供的新的租期以及其他新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有接收到该服务器的回复,则客户机继续使用现有的ip地址,因为还剩下50%租期。

​ 如果在50%时没有更新,则DHCP客户机将在租期到87.5%的时候再次向为其提供ip地址的DHCP服务器联系。如果还是不成功,到最大租期的时候,DHCP客户机就必须放弃这个ip地址,重新申请。


  1. DHCP服务搭建

  • 准备实验环境(虚拟机中模拟)

    两台主机,网络连接模式设为自定义VMnet*模式

    防护的关闭:

    1. iptables -L #防火墙

    2. getenforce #SELinux

      setenforce 0	
      

    3. 关闭vmware虚拟网络编辑器的DHCP功能,重要!!!

在这里插入图片描述

  • DHCP相关信息

软件名:注释
dhcpDHCP服务软件包
dhcp-commonDHCP命令软件包(默认已安装)
服务名:注释
dchpdDHCP服务名
dhcrelayDHCP中继服务名
端口号注释
udp 67作为客户端的目标端口,接收客户端的请求DHCP请求
udp 68作为服务器的源端口,用来向客户端回复数据包
配置文件功能
dhcpd /etc/dhcp/dhcpd.conf该文件默认是空的,需要找模板生成
dhcpd.conf.sample /user/share/doc/dhcp-4.x.x/dhcpd.conf.sampleDHCP的模板配置文件
dhcrelay /etc/sysconfig/dhcrelay中继配置文件,中继实验中用到
  • DHCP配置文件

    subnet 192.168.88.0 netmask 255.255.255.0{  #声明要分配的网段和子网掩码
    	range 192.168.88.3 192.168.88.254;	    #声明可用的ip地址池
    	option domain-name "dddd.com";			#设置DNS域
    	option domain-name-servers 8.8.8.8;		#设置DNS服务器地址
    	option routers 192.168.88.2;			#广播地址(可不写)
    	option broadcast-address 192.168.88.255;#默认租约 单位s
    	default-lease-time 600;					#最大租约 单位s
    	max-lease-time 7200;
    }
    

  1. DHCP实验部署

  • 下载DHCP

yum -y install dhcp

  • 生成配置文件

cp -a /usr/share/doc/dhcp-4.x.x/dhcpd.conf.sample   /etc/dhcp/dhcpd.conf
#一般是需要自己根据模板自行创建dhcp.conf文件
vim /etc/httpd/httpd.conf
subnet 192.168.88.0 netmask 255.255.255.0{  #声明要分配的网段和子网掩码
	range 192.168.88.3 192.168.88.254;	    #声明可用的ip地址池
	option domain-name "dddd.com";			#设置DNS域
	option domain-name-servers 8.8.8.8;		#设置DNS服务器地址
	option routers 192.168.88.2;			#广播地址(可不写)
	option broadcast-address 192.168.88.255;#默认租约 单位s
	default-lease-time 600;					#最大租约 单位s
	max-lease-time 7200;
}

填写了正确的subnet后,保存配置文件,service dhcpd start 启动DHCP服务,重启客户机的网卡,查看网卡,ip地址已经为地址池分配的了~

重启客户机的网卡命令最好不要使用service network restart 此命令是重启所有网卡,使用ifdown eth0;ifup eth0

  • 地址保留

为了是计算机重启后不在重新分配地址,我们可以将MAC和ip地址捆绑,固定起来。

获取客户端的mac地址
arp  -a #查看客户机的mac地址
修改/etc/dhcp/dhcpd.conf文件
host fantasia{

​		hardware ethernet  mac地址;#客户机的mac地址

​		fixed-address   	IP地址;  #固定分配给客户机的ip地址

}
重启DHCP服务
service dhcpd restart
重启客户机的网卡验证ip获取是否成功
ifdown eth0;ifup eth0
  • 超级作用域

超级作用域介绍

​ DHCP服务器可为单个物理网络上的客户端提供多个作用域租约地址

在这里插入图片描述

实验步骤
  1. 设置DHCP服务器的单臂路由所需的网卡关闭客户机的网卡:

    service network stop   #暂停客户机的网卡
    cp -a ifcfg-eth0 ifcfg-eth0:0  #直接复制即可
    vim ifcfg-eth0:0  #网卡名和文件名一致,ip地址修改
    
  2. 开启路由转发:

    vim /etc/sysctl.conf
    	net.ipv4.ip_forward = 1  #此项改为1
    sysctl -p   #刷新内核参数配置文件
    
  3. 修改/etc/dhcp/dhcpd.conf文件

    #注释掉其它的网段声明和主机声明

    shared-network 88-89 {  
      subnet 192.168.88.0 netmask 255.255.255.0 {
        option routers 192.168.88.101 192.168.88.103;
        range 192.168.88.10;
      }
      subnet 192.168.89.0 netmask 255.255.255.0 {
        option routers 192.168.89.101 192.168.89.103;
        range 192.168.89.10;
      }
    }
    

    #其他一定要注释掉或者删掉,注意括号!!!

  4. 重启DHCP服务

service dhcpd restart
  1. 分别重启两台机器的网卡,查看获取的地址
if down eth0;ifup eth0

单臂路由的服务器地址是静态的网卡分两个地址。

DHCP中继

中继介绍

DHCP Relay (DHCP中继)是一个小程序,可以实现在不同子网和物理网段之间处理和转发dhcp信息的功能。

在这里插入图片描述

实验环境准备

DHCP服务器:

​ eth0(192.168.10.10) vMnet10

DHCP中继:两网卡相当于网关

​ eth0(192.168.10.20) vMnet10

​ eth1(100.100.100.20) vMnet11

外网客户机:

​ eth0(自动获取) vMnet11

注意:需要关闭所以防护

配置DHCP服务器:

软件安装:yum -y install dhcp

修改/etc/dhcp/dhcpd.conf文件:

subnet 192.168.10.0 netmask 255.255.255.0 {
	range 192.168.10.100 192.168.10.110;
	option routers 192.168.10.20;
}
subnet 100.100.100.0 netmask 255.255.255.0 {
	range 100.100.100.100 100.100.100.110;
	option routers 100.100.100.20;
}

重启dhcpd服务:service dhcpd start

指定网关: 两个网卡设置网关为中继器的内网

配置DHCP中继器服务器

网卡配置

软件安装:yum -y install dhcp

修改中继配置文件:

​ vim /etc/sysconfig/dhcrelay

​ INTERFACES=“eth0 eth1”

​ DHCPSERVERS=“192.168.10.10”

开启路由转发

​ vim /etc/sysctl.conf

​ netipv4.ip_forward = 1

​ sysctl -p

重启中继服务:service dhcrelay start

测试外网主机

服务器重启网卡即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值