02 DHCP原理与配置

2024-06-11 18:52
文章标签 配置 02 原理 dhcp

本文主要是介绍02 DHCP原理与配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.1DHCP工作原理

当局域网络中有大量的主机时,如果逐个为每一态主机手动设置IP地址,默认网关,DNS服务器地址等网络参数,显然是一个费力的办法,而DHCP服务器的应用,真好可以解决这一问题。

1.了解DHCP'服务

DHCP是由intemet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。

DHCP服务避免了因手动设置IP地址所产生的错误,同时以避免了把一个IP地址分配给多台工作站所造成的地址冲突。DHCP提供了安全,可靠且简单的TCP/IP网络设置。降低了配置IP地址的负担。DHCP的网络结构如图所示

2.使用DHCP的好处

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

3.DHCP的分配方式

  • 自动分配是当DHCP客户机第一次成功地从DHCP服务器获取到一个IP地址后,就永久地使用这个IP地址。
  • 手动分配是由DHCP服务器管理员专门指定IP地址。
  • 动态分配是当DHCP客户机第一次从DHCP服务器获取到IP地址后,并非永久地使用该地址,而是在每次使用完后,DHCP客户机就会释放这个IP地址,供其他客户机使用。

4.DHCP的租约过程

客户端从DHCP服务器获取IP地址的过程称为DHCP租约过程,此过程主要分为以下四个步骤:

  • 客户端在网络中搜索服务器
  • 服务器向客户端响应服务
  • 客户端向服务器发出服务请求
  • 服务器向客户端提供服务。

其中包含的具体过程如下所示:

(1)客户机请求IP地址

当一个DHCP客户机启动时,客户机还有IP地址,所以客户机要通过DHCP获取一个合法的地址。此时DHCP客户机以广播方式DHCP Discover 发现信息来寻找DHCP服务器,如图所示:

(2)服务器响应

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

(3)客户机选择IP地址

DHCP客户机从接收到第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机。之后DHCP客户机会向服务器发送DHCP Request消息,如图所示:

(4)服务器确定租约

DHCP服务器接收到DHCP Requst消息后,以DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有IP地址有效租约和其他可配置的信息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。如图所示:

(5)重新登录

DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。

(6)更新租约

当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机直接提供租约的服务器发送DHCP Requst包 要求更新现有的地址租约。

2.2使用DHCP动态配置主机地址

使用DHCP服务可以为大量客户机自动分配地址并提供集中管理,能够减轻管理和维护成本,提高网络配置效率,其中DHCP服务可分配的地址信息主要包括:

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

2.2.1配置DHCP服务器

1.安装DHCP服务器软件

先执行”rpm -q dhcp“命令查看系统中是否已经安装dhcp软件包,如果没有安装,可以使用”yum -y install dhcp“进行安装,具体操作如下:

安装dhcp软件包后系统会自动复制相关程序,并添加名为dhcpd的系统服务。

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

2.建立主配置文件dhcpd.conf

dhcpd服务器的主配置文件时/etc/dhcp/dhcpd.conf,但是文件默认不包含任何有效配置,需要管理员手动建立。这时管理员可以根据文件中提示,参考配置文件范本建立新的dhcpd.conf文件。

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
(1)/etc/decp/dhcpd.conf文件的配置构成

在主配置文件dhcpd.conf中,可以使用声明,参数,选择这三种类型的配置,各自的作用和表现形式如下所述。

  • 声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。
  • 参数:由配置关键字和对应的值组成,总是以”:“(分号)结束。一般位于指定的声明范围之内,用来设置所在范围的运行特性。
  • 选项:由”option“引导,后面更具体的配置关键字和对应的值,也是以”:“结束,用于指定分配给客户机的各种地址参数。
(2)dhcpd服务的全局配置

为了使配置文件的结构更加清晰,全局配置通常会放在配置文件dhcpd.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述。

  • ddns-update-style,动态DNS更新模式。
  • default-lease-time,默认租约时间。
  • max-lease-time,最大租约时间。
  • option domain-name,默认搜索区域。
  • option domain-name-servers,DNS服务器地址。

例如,若需要为局域网搭建一台DHCP服务器,所有网段使用相同的租约时间,默认搜索域为bdqn.com,NDS服务器地址为202.106.0.20和202.106.148.1,则可以修改dhcpd.conf配置文件,参考以下操作调整全局配置。

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
ddns-update-style none;                                  //禁用DNS动态更新   
default-lease-time 21600;//默认租约为6小时
max-lease-time 43200;//最大租约为12个小时
option domain-name "kgc.com";//bdqn.com,指定默认搜索域
option domain-name-servers 114.114.114.114,8.8.8.8;//指定DNS服务器地址

 

(3)subnet网段声明

一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。

subnet 192.168.10.0 netmask 255.255.255.0 {                    //声明网段地址range 192.168.10.200 192.168.10.250;//设置地址池,可以有多个option routers 192.168.10.254;//指定默认网关地址
}
(4)host主机声明(可选)

host声明通过host关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的MAC地址,使用”fixed-address“参数指定保留给主机的IP地址。

host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.10.211;
}

 

3.启动dhcpd服务

在启动dhcpd服务之前,应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则无法正常启动dhcpd服务。

安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/dhcpd.service.可以使用systemd服务进行控制。

[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# netstat -anpu | grep dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1503/dhcpd          
[root@localhost ~]# 

需要关闭,重启dhcpd服务时,只要将上述操作命令中的“start”改为“stop”或“restart”即可。

2.2.2使用DHCP客户端

当局域网内有可用的 DHCP 服务器时,在 Linux 客户机中可以设置使用 DHCP 的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp"配置行,并重新加载配置文件或者重新启动 network 服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过 DHCP 方式自动获取地址。

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp

 在 Linux客户机中,还可以使用 dhclient工具来测试DHCP服务器。若直接执行“dhclient命令,则 dhclient 将尝试为除回环接口l0 以外的所有网络接口通过 DHCP 方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d选项使其在前台运行,测试完毕后按 Ctn+C组合键终止。例如,执行"dhclient-d ens33命令后,可以为网卡 ens33自动获取新的IP地址,并显示获取过程。

[root@localhost ~]# dhclient -d ens33 
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/Listening on LPF/ens33/00:0c:29:37:32:11
Sending on   LPF/ens33/00:0c:29:37:32:11
Sending on   Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 3 (xid=0x39ec2e83)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 8 (xid=0x39ec2e83)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x39ec2e83)
DHCPOFFER from 192.168.10.101
DHCPACK from 192.168.10.101 (xid=0x39ec2e83)
bound to 192.168.10.203 -- renewal in 286 seconds.

 在服务器端可以通过査看租约文件/var/lib/dhcpd/dhcpd.leases来了解服务器的IP地址分配情况,具体操作如下。该租约文件中记录了分配出去的每个P地址信息(租约记录),包括 IP 地址、客户端的 MAC 地址、租用的起始时间和结束时间等。

[root@localhost ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5lease 192.168.10.201 {starts 2 2024/06/11 08:10:56;ends 2 2024/06/11 08:20:56;tstp 2 2024/06/11 08:20:56;cltt 2 2024/06/11 08:10:56;binding state active;next binding state free;rewind binding state free;hardware ethernet 00:0c:29:44:b3:de;uid "\001\000\014)D\263\336";client-hostname "DESKTOP-8BNM9UA";
}
server-duid "\000\001\000\001-\372\273\210\000\014)!hg";

 客户端需要通过 dhclient 命令释放获取的 IP 租约时,可以结合"-r"选项。例如,执行以下的“dhclient -rens33"将会释放之前为网卡 ens33 获取的IP租约。此时再通过执行“ifconfigens33"命令就看不到分配的 IP地址了。

[root@localhost ~]# dhclient -r ens33

这篇关于02 DHCP原理与配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052002

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的