Linux-DHCP原理与配置(DHCP配置流程详细介绍+DHCP中继实验)

一、DHCP概述

1.1了解DHCP服务

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:

  • 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  • DHCP应当可以给用户分配永久固定的IP地址。
  • DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  • DHCP服务器应当向现有的BOOTP客户端提供服务。

1.2DHCP的优点

  • 减少管理员的工作量
  • 避免输入错误的可能
  • 避免IP地址冲突
  • 当更改IP地址段时,不需要重新配置每个用户的IP地址
  • 提高了IP地址的利用率
  • 方便客户端的配置

1.3DHCP的分配方式

  • 自动分配:DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址
  • 手动分配:客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机
  • 动态分配:DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用

1.4DHCP的租约过程

DHCP租约过程主要分为4步,下图是简单的概述

在这里插入图片描述

1.4.1租约过程1

客户机请求IP地址:发送DHCP discover广播

当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址

此时DHCP客户机以广播方式发送DHCP discover发现信息来寻找DHCP服务器

因为自己没有IP地址,所以源IP地址为:0.0.0.0

同时也不知道DHCP服务器地址,所以发送广播255.255.255.255
在这里插入图片描述

1.4.2租约过程2

服务器响应:发送DHCP offer广播

当DHCP服务器接收到来自客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP offer的消息中,然后DHCP服务器就广播DHCP offer消息(客户机仍没有IP地址,所以发送广播)
在这里插入图片描述

1.4.3租约过程3

客户机选择IP地址:发送DHCP request广播

DHCP客户机从接收到的第一个DHCP offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
第一个DHCP offer表示:若局域网中同时存在两个DHCP,那么客户机根据收到DHCP offer的顺序来确定使用哪个DHCP服务器的地址
客户机发送DHCP request 广播,选择IP地址,并附上租约期限信息(默认8天)
在这里插入图片描述

1.4.4租约过程4

服务器确定租约:发送DHCP ACK广播

DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息,当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化,此时服务器发出的仍旧是广播,因为客户机还没有IP地址
在这里插入图片描述

1.4.5租约过程-客户机重新登录情况

DHCP客户机每次重新登录网络时,不需要在发送DHCP的discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息,DHCP服务器收到请求后,检查IP地址资源池
1.发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机

2.发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤
在这里插入图片描述

1.4.6租约过程–更新租约

当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约,客户机直接向提供租约的服务器发送DHCP request包,要求更新现有的地址租约
若DHCP服务器宕机,客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址

二、使用DHCP动态配置主机地址

2.1DHCP服务

  • 为大量客户机自动分配地址,提供集中管理
  • 减轻管理和维护成本,提高网络配置效率

2.2可分配的地址信息主要包括

  • 网卡的IP地址,子网掩码
  • 对应的网络地址,广播地址
  • 默认网关地址
  • DNS服务器地址

2.3DHCP主要配置文件

主配置文件:/etc/dhcpd.conf
执行程序:/usr/sbin/dhcpd,/usr/sbin/dhcrelay
执行参数配置:/etc/sysconfig/dhcpd

dhcpd.conf的内容构成

ddns-update-style interim;                             # 全局配置参数
......

subnet 192.168.0.0 netmask 255.255.255.0 {             #网段声明
       option routers             192.168.0.1;         #配置选项(网关)
       ......
       default-lease-time 21600;                       #配置参数(默认的租约期限,单位秒)
        ......                         
        host ns {
                 ......
                fixed-address 207.175 .42.254;        #主机声明(固定地址与MAC地址绑定)
           }
}

主配置文件
全局设置,作用于整个DHCP服务器
●ddns-update-style none; 禁用
●default-lease-time 21600; 租约期限(秒)
●max-lease -time 43200; 最大的租约期限
●option domain-name “domain.org”; 域名
●option domain-name-servers 202.106.0.20; 分配一个DNS的地址给客户机

Subnet网段声明, 作用于整个子网段 (在子网段中配置的优先级高,优先生效)
●range参数:设置用于分配的IP地址池
●option subnet-mask参数:设置客户机的子网掩码
●option routers参数:设置客户机的默认网关地址

host主机声明,作用于单个主机
●hardware ethernet参数:指定对应主机的MAC地址
●fixed-address参数:指定为该主机保留的IP地址
host prtsvr { prtsvr可以更改,申明的名字
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192. 168.4.100;
}

2.4DHCP配置流程

使用两台虚拟机,一台为centos7作DHCP服务器,一台为Windows7作客户机
将两台虚拟机绑定VMnet1网卡,此网卡为仅主机模式
在这里插入图片描述
在有网情况下安装DHCP服务

[root@localhost ~]# yum install dhcp -y          #安装DHCP服务   

切换网络后

[root@localhost dhcp]# iptables -F		         #清空防火墙规则
[root@localhost dhcp]# setenforce 0              #关闭核心防护 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  
BOOTPROTO="static"                               #此处要修改成static
IPADDR=192.168.17.144	                         #设置IP地址相关信息
NETMASK=255.255.255.0
GATEWAY=192.168.17.2
[root@localhost ~]# systemctl restart network    #重启网卡
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf  #编辑DHCP配置文件
DHCP Server Configuration file.
see /usr/share/doc/dhcp*/ dhcpd.conf.example     #这里提示我们查看这边的文件,存放的模板
see dhcpd . conf (5) man page
[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf #将配置模板复制到DHCP配置文件中
cp:overwrite"/etc/dhcp/dhcpd.conf"? yes
[root@localhost dhcp]# vim dhcpd.conf	       	 #编辑配置文件
...
  option domain-name-servers 8.8.8.8;            #全局配置DNS服务器地址
... 
subnet 192.168.17.0 netmask 255.255.255.0 {		#从第一个subnet开始设置主机的IP地址
  range 192.168.17.110 192.168.17.200;	     	#自动分配地址的地址池范围
  option routers 192.168.17.1;		            #设置网关
[root@localhost dhcp]# systemctl start dhcpd    #开启dhcp服务
[root@localhost dhcp]# netstat -nuap 	        #查看dhcp服务是否开启

配置完毕后,打开Windows,设置自动获取IP地址
在这里插入图片描述
打开cmd,释放IP地址
在这里插入图片描述
重新获取后可以看到获得的IP地址为设置的地址池的第一个
在这里插入图片描述
之前有说过在子网段中配置的优先级高,优先生效,我们可以试验一下,同时将网卡与IP地址绑定,DHCP服务器分配固定IP地址给客户机

[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf  #编辑DHCP配置文件
...
subnet 192.168.17.0 netmask 255.255.255.0 {		#从第一个subnet开始设置主机的IP地址
  range 192.168.17.110 192.168.17.200;	     	#自动分配地址的地址池范围
  option routers 192.168.17.1;		            #设置网关
  option domain-name-servers 9.9.9.9;          #添加DNS服务器地址
}
...
# set.
host fantasia {
  hardware ethernet 00:0C:29 :E7:F3:5B ;         #网卡绑定(网卡信息可在Windows中查看)
  fixed-address 192.168.17.99 ;                   固定的IP地址
}
[root@localhost dhcp]# systemctl restart dhcpd    #重启dhcp服务

再次进入客户机,将IP地址释放后,重新获取IP地址,进行查看,可以看到自动获取的IP地址为设置的固定IP,DNS服务器为子网段中的9.9.9.9
在这里插入图片描述

三、DHCP中继

3.1DHCP中继原理

  • 当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了VLAN, VLAN能隔离广播,而DHCP协议使用广播
  • DHCP服务器在VLAN 100中,就只有VLAN 100内的客户机能从在此获取IP地址
  • 如果VLAN 2或VLAN 3的客户机也需要通过这台DHCP服务器来获取获取IP地址,应该怎么办?

两种解决办法

  1. 为每个网段安装一台DHCP服务器, 但这种方式存在资源上的浪费,而且不利于集中管理
  2. 在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VL AN的客户机也能从DHCP服务器获得IP地址

3.2DHCP中继实验

3.2.1实验拓扑图

在这里插入图片描述

3.2.2实验配置流程

云和虚拟机都绑定VMnet8网卡,作为DHCP服务器,IP地址192.168.100.100
在这里插入图片描述
关于华为ensp的DHCP配置,可以看我之前的博客https://blog.csdn.net/weixin_47153988/article/details/106332417
SW2

[Huawei]v b 10 20 100
[Huawei]int e0/0/1
[Huawei-Ethernet0/0/1]p l a
[Huawei-Ethernet0/0/1]p d v 10
[Huawei]int e0/0/2
[Huawei-Ethernet0/0/2]p l a
[Huawei-Ethernet0/0/2]p d v 20
[Huawei]int e0/0/3
[Huawei-Ethernet0/0/3]p l a
[Huawei-Ethernet0/0/3]p d v 100
[Huawei-Ethernet0/0/3]int e0/0/4
[Huawei-Ethernet0/0/4]p l t
[Huawei-Ethernet0/0/4]p t a v all

SW1

[Huawei]v b 10 20 100
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]p l t
[Huawei-GigabitEthernet0/0/1]p t a v all
[Huawei]dhcp enable 
[Huawei]interface v 10
[Huawei-Vlanif10]ip add 192.168.10.1 24
[Huawei-Vlanif10]dhcp select relay 
[Huawei-Vlanif10]dhcp relay server-ip 192.168.100.100
[Huawei-Vlanif10]int v 20
[Huawei-Vlanif20]ip address 192.168.20.1 24
[Huawei-Vlanif20]dhcp select relay 
[Huawei-Vlanif20]dhcp relay server-ip 192.168.100.100
[Huawei-Vlanif20]int v 100
[Huawei-Vlanif100]ip add 192.168.100.1 24
[Huawei-Vlanif100]dhcp select relay 
[Huawei-Vlanif100]dhcp relay server-ip 192.168.100.100

转到centos中

[root@localhost dhcp]# iptables -F		         #清空防火墙规则
[root@localhost dhcp]# setenforce 0              #关闭核心防护 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  
BOOTPROTO="static"                               #此处要修改成static
IPADDR=192.168.100.100	                         #设置IP地址相关信息
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@localhost ~]# systemctl restart network    #重启网卡
[root@localhost ~]#ping 192.168.100.1            #ping网关,连通顺畅配置没问题
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf  #编辑DHCP配置文件
...
  option domain-name-servers 8.8.8.8;            #全局配置DNS服务器地址
... 
subnet 192.168.100.0 netmask 255.255.255.0 {	#从第一个subnet开始设置主机的IP地址
  range 192.168.100.110 192.168.100.200;	    #自动分配地址的地址池范围
  option routers 192.168.100.1;	                #设置网关
  }	            
  subnet 192.168.10.0 netmask 255.255.255.0 {	
  range 192.168.10.110 192.168.10.200;	       
  option routers 192.168.10.1;	                
  }	          
  subnet 192.168.20.0 netmask 255.255.255.0 {	
  range 192.168.20.110 192.168.20.200;	     	    
  option routers 192.168.20.1;	                    
  }	          
  [root@localhost dhcp]# systemctl start dhcpd   #启动dhcp服务
  [root@localhost dhcp]#netstat -naup            #查看DHCP服务是否开启

在这里插入图片描述
ensp设置两台客户机DHCP自动获取IP地址
在这里插入图片描述
获取到IP地址,与服务器连通
在这里插入图片描述
同样的PC2自动获取IP地址在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47153988/article/details/107152174