Linux中DHCP服务器配置和管理

文章目录

  • 一、DHCP服务
    • 1.1、DHCP的工作流程
    • 1.2、DHCP的工作模式
    • 1.3、dhcp的主要配置文件
  • 二、安装DHCP服务
    • 2.1、更新yum源
    • 2.2、安装DHCP服务软件包
    • 2.3、配置DHCP服务
    • 2.4、启用DHCP服务(解决报错)
      • 2.4.1、查看dhcpd服务的状态和最近的日志条目
      • 2.4.2、查看与dhcpd服务相关的详细日志,包括错误信息
      • 2.4.3、添加指定接口解决问题


一、DHCP服务

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)能动态地为客户端计算机分配IP地址以及设置其他网络信息。通过DHCP协议,网络管理员能够对网络中的IP地址进行集中管理和自动分配,能有效地节约IP地址,简化网络配置以及减少IP地址冲突。

1.1、DHCP的工作流程

DHCP的工作原理包括发现阶段、提供阶段、请求阶段、确认阶段和续约阶段。

  • 发现阶段:在发现阶段,当DHCP客户端首次登录网络时,它会通过UDP端口67向网络中发送一个DHCPDISCOVER数据包,该数据包包含客户的MAC地址和计算机名等信息。由于客户端还不知道自己属于哪个网络,因此源IP地址为0.0.0.0,目标IP地址为255.255.255.255,这样该信息会在整个网络中广播。只有DHCP服务器会对这种广播信息做出响应。
  • 提供阶段:在提供阶段,收到DHCPDISCOVER数据的DHCP服务器会从尚未分配的IP地址中选择一个并通过网络广播一个DHCPOFFER消息给客户端,该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。此时仍使用广播进行通讯,并且DHCP Server会为此客户保留它提供的IP地址,以免分配给其他DHCP客户。
  • 请求阶段:在请求阶段,如果客户机收到多台DHCP服务器的响应,则只选择其中一个DHCP OFFER(通常是最先到达的那个),并向网络发送一个DHCP REQUEST广播数据包。这个数据包告知所有DHCP服务器,它将接受哪一台服务器提供的IP地址。此时,由于未得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。
  • 确认阶段:在确认阶段,当DHCP Server接收到客户机的DHCP REQUEST后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。此后,客户机会对所获取的IP地址执行冲突检测,确保没有其它机器使用该IP地址。
  • 续约阶段:在续约阶段,由于客户机申请的IP地址有一定的时间限制,因此在租约到期前,客户机会向DHCP服务器发送一个续约的请求。通常客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCP Server发送DHCP REQUEST消息包。如果客户机接收到该服务器回应的DHCP ACK消息包,它将根据包中所提供的新租期及其他已更新的TCP/IP参数更新自己的配置,完成IP租用更新。

在这里插入图片描述

1.2、DHCP的工作模式

DHCP的工作模式主要有三种:接口模式、全局模式和中继模式。

在接口模式下,DHCP服务器将接口地址直接作为网关分配给客户端。这种模式适用于配置简单且规模较小的网络环境,因为路由器或三层交换机将自己的接口地址直接作为网关分发给PC端。该模式的配置较为简洁,通常只需要两行命令即可完成设置。

而在全局模式下,DHCP服务器需要独立创建一个地址池,并设置该地址池的网关、网段和DNS服务等参数。这种模式适用于大规模网络环境,可以实现对多个网段的动态IP地址分配和集中管理。例如,在一个企业网络中,通过全局模式可以灵活地为不同部门或位置的设备分配合适的IP地址和网络参数。

当DHCP服务器与客户端不在同一个网段时,则需要使用中继模式。在这种模式下,一个中间设备(如路由器或交换机)充当中继代理,传递DHCP报文,使得客户端能够获取到DHCP服务器提供的IP地址及其他网络配置信息。这种模式适用于分布式网络环境,有助于扩大DHCP服务的覆盖范围,确保不同网段内的设备也能获得正确的网络配置。

在这里插入图片描述

1.3、dhcp的主要配置文件

  • dhcpd.conf:这是DHCP服务的主配置文件,位于/etc/dhcp/dhcpd.conf。它包含了DHCP服务的全局配置和特定网络设置。在此文件中,可以设定IP地址的分配范围、默认和最大租约时间、选项设置如子网掩码、DNS服务器、域等。

  • dhcpd.conf.sample:这是一个示例配置文件,通常位于/usr/share/doc/dhcp-版本号/dhcpd.conf.sample。在首次配置DHCP服务时,管理员通常会将这个示例文件复制到/etc/dhcp/dhcpd.conf作为起点进行修改。

  • dhcrelay:这是DHCP中继服务的配置文件,位于/etc/dhcp/dhcrelay。当DHCP客户和服务器不在同一个子网时,需要用到DHCP中继。该文件配置了如何将DHCP请求从一个子网转发到另一个子网的DHCP服务器。

  • dhcpd.leases:此文件记录了已经分配的IP租约信息,路径为/var/lib/dhcpd/dhcpd.leases。每次DHCP服务器分配一个地址时,都会在这个文件中记录下来,包括租约时间、客户机硬件地址、分配的IP等信息。

  • dhclient.leases:这是客户端的租约文件,路径为/var/lib/dhclient/dhclient.leases。记录了客户端从DHCP服务器获得的租约信息。

  • dhcpd:这是DHCP服务的服务启动脚本,位于/etc/rc.d/init.d/dhcpd。用于启动和停止DHCP服务。

  • dhcrelay:这是DHCP中继服务的服务启动脚本,路径为/etc/rc.d/init.d/dhcrelay。

  • dhcpd@.service:这是systemd系统的服务启动脚本,用于通过systemctl命令管理DHCP服务的运行状态。

二、安装DHCP服务

2.1、更新yum源

[root@iZbp17noooeednslvykei8Z ~]# yum update
## 或
[root@iZbp17noooeednslvykei8Z ~]# dnf update -y
CentOS Stream 9 - BaseOS                                                                                   30 MB/s | 8.2 MB     00:00    
CentOS Stream 9 - AppStream                                                                                49 MB/s |  20 MB     00:00    
CentOS Stream 9 - Extras packages                                                                         326 kB/s |  18 kB     00:00    
Dependencies resolved.
==========================================================================================================================================
 Package                                     Architecture          Version                                 Repository                Size
==========================================================================================================================================
Installing:
 kernel                                      x86_64                5.14.0-480.el9                          baseos                   1.5 M
 kernel-core                                 x86_64                5.14.0-480.el9                          baseos                    17 M
 kernel-devel                                x86_64                5.14.0-480.el9                          appstream                 22 M
 kernel-modules                              x86_64                5.14.0-480.el9                          baseos                    36 M
 kernel-modules-core                         x86_64                5.14.0-480.el9   

2.2、安装DHCP服务软件包

[root@iZbp17noooeednslvykei8Z ~]# dnf install -y dhcp-server
Last metadata expiration check: 0:07:11 ago on Sat 03 Aug 2024 10:07:39 AM CST.
Dependencies resolved.
==============================================================================================================================================================================================
 Package                                       Architecture                             Version                                                Repository                                Size
==============================================================================================================================================================================================
Installing:
 dhcp-server                                   x86_64                                   12:4.4.2-19.b1.el9                                     baseos                                   1.2 M

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package

Total download size: 1.2 M
Installed size: 3.9 M
Downloading Packages:
dhcp-server-4.4.2-19.b1.el9.x86_64.rpm                                                                                                                         12 MB/s | 1.2 MB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                          12 MB/s | 1.2 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                      1/1 
  Running scriptlet: dhcp-server-12:4.4.2-19.b1.el9.x86_64                                                                                                                                1/1 
  Installing       : dhcp-server-12:4.4.2-19.b1.el9.x86_64                                                                                                                                1/1 
  Running scriptlet: dhcp-server-12:4.4.2-19.b1.el9.x86_64                                                                                                                                1/1 
  Verifying        : dhcp-server-12:4.4.2-19.b1.el9.x86_64                                                                                                                                1/1 

Installed:
  dhcp-server-12:4.4.2-19.b1.el9.x86_64                                                                                                                                                       

Complete!

2.3、配置DHCP服务

[root@iZbp17noooeednslvykei8Z ~]# vi /etc/dhcp/dhcpd.conf
[root@iZbp17noooeednslvykei8Z ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
}
  • subnet:指定子网的网络地址和子网掩码。
  • range:指定分配给客户端的IP地址范围。
  • option routers:指定默认网关的IP地址。
  • option domain-name-servers:指定DNS服务器的IP地址。

2.4、启用DHCP服务(解决报错)

[root@iZbp17noooeednslvykei8Z ~]# systemctl start dhcpd
Job for dhcpd.service failed because the control process exited with error code.
See "systemctl status dhcpd.service" and "journalctl -xeu dhcpd.service" for details.

上述代码中报错Job for dhcpd.service failed because the control process exited with error code.
See “systemctl status dhcpd.service” and “journalctl -xeu dhcpd.service” for details.

2.4.1、查看dhcpd服务的状态和最近的日志条目

[root@iZbp17noooeednslvykei8Z ~]# systemctl status dhcpd.service
× dhcpd.service - DHCPv4 Server Daemon
     Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; preset: disabled)
     Active: failed (Result: exit-code) since Sat 2024-08-03 10:17:21 CST; 2min 28s ago
       Docs: man:dhcpd(8)
             man:dhcpd.conf(5)
    Process: 49039 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS (code=exited, status=1/FAILURE)
   Main PID: 49039 (code=exited, status=1/FAILURE)
        CPU: 9ms

Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: have been made to the base software release in order to make
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: it work better with this distribution.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: Please report issues with this software via:
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: https://issues.redhat.com/
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: exiting.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: dhcpd.service: Main process exited, code=exited, status=1/FAILURE
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: dhcpd.service: Failed with result 'exit-code'.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: Failed to start DHCPv4 Server Daemon.

运行状态解析:

  • have been made to the base software release in order to make it work better with this distribution:这条日志信息表明 dhcpd 服务在启动时遇到了问题,可能是因为 dhcpd 服务在当前系统中不兼容。
  • Please report issues with this software via: https://issues.redhat.com/:这条日志信息表明 dhcpd 服务的开发者提供了一个错误报告的链接,用于报告 dhcpd 服务的错误。
  • exiting:这条日志信息表明 dhcpd 服务在启动失败后直接退出了。
  • Main process exited, code=exited, status=1/FAILURE:这条日志信息表明 dhcpd 服务的主进程在启动失败后退出了,状态为失败。

2.4.2、查看与dhcpd服务相关的详细日志,包括错误信息

[root@iZbp17noooeednslvykei8Z ~]# journalctl -xeu dhcpd.service
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: Not configured to listen on any interfaces!
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: This version of ISC DHCP is based on the release available
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: on ftp.isc.org. Features have been added and other changes
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: have been made to the base software release in order to make
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: it work better with this distribution.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: Please report issues with this software via:
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: https://issues.redhat.com/
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: 
Aug 03 10:17:21 iZbp17noooeednslvykei8Z dhcpd[49039]: exiting.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: dhcpd.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░ 
░░ An ExecStart= process belonging to unit dhcpd.service has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 1.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: dhcpd.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░ 
░░ The unit dhcpd.service has entered the 'failed' state with result 'exit-code'.
Aug 03 10:17:21 iZbp17noooeednslvykei8Z systemd[1]: Failed to start DHCPv4 Server Daemon.
░░ Subject: A start job for unit dhcpd.service has failed
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░ 
░░ A start job for unit dhcpd.service has finished with a failure.
░░ 
░░ The job identifier is 3222 and the job result is failed.

[2]+  Stopped                 journalctl -xeu dhcpd.service

2.4.3、添加指定接口解决问题

[root@iZbp17noooeednslvykei8Z ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    interface eth0;
}
[root@iZbp17noooeednslvykei8Z ~]# systemctl restart dhcpd
[root@iZbp17noooeednslvykei8Z ~]# systemctl status dhcpd.service
● dhcpd.service - DHCPv4 Server Daemon
     Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; preset: disabled)
     Active: active (running) since Sat 2024-08-03 14:49:09 CST; 17s ago
       Docs: man:dhcpd(8)
             man:dhcpd.conf(5)
   Main PID: 50104 (dhcpd)
     Status: "Dispatching packets..."
      Tasks: 1 (limit: 22541)
     Memory: 4.6M
        CPU: 10ms
     CGroup: /system.slice/dhcpd.service
             └─50104 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902027.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js构造函数和原型对象,ES6中的class,四种继承方式

一、构造函数 1.构造函数是一种特殊的函数,主要用来初始化对象 2.使用场景 常见的{...}语法允许创建一个对象。可以通过构造函数来快速创建多个类似的对象。 const Peppa {name: 佩奇,age: 6,sex: 女}const George {name: 乔治,age: 3,sex: 男}const Mum {nam…

【react 和 vue】 ---- 实现组件的递归渲染

1. 需求场景 今天遇到了一个需求,就是 HTML 的递归渲染。问题就是商品的可用时间,使用规则等数据是后端配置,然后配置规则则是可以无限递归的往下配置,可以存在很多级。后端实现后,数据返回前端,就需要前端…

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括: 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选…

前后端请求、返回数据的多种方式

Springboot项目的业务逻辑 🌙项目基本结构: 通常情况下,我们在搭建后端项目的时候,处理业务逻辑我们需要用到Controller,Service,Mapper(mybatis,mybatis-plus),Entry各层之间的相互调用来完成,还有就是我…

数据库->增删改查

目录 一、CRUD简介 二、Create新增 1.单行数据插入 2.查询 3. 多行数据插入 4.执行本机的SQL脚本插入 三、Retrieve检索 1.全列查询 2.指定列查询 3.查询字段为表达式 3.1 常量表达式 3.2列的值与常量运算 3.3列与列之间的运算 3.4为列指定别名 4.结果查询去重…

高等数学-宋浩版2.0-映射

映射:X,Y为非空集合,存在法则F,对X(原像)中每个元素X,按法则F,在Y中有唯一元素与之对应,F为x到Y(镜像)的映射。f:X->Y X原像,Y像,x定义域,Df,Rf &#x…

php后端学习,Java转php

遇到前后端跨域 php解决跨域问题可以加上下面的代码: header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端, 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…

Python基于TensorFlow实现简单循环神经网络回归模型(SimpleRNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 Simple RNN是一种基础的循环神经网络,它能够处理序列数据,例如文本、时间序…

React写关键字高亮的三个方案

1.js正则replaceAlldangerouslySetInnerHTML{{ __html: xxx }}危险属性 步骤最简单,但是是危险属性,不推荐使用,项目中实在没有头绪,可以使用它应急 通过useMemo计算得到新的状态值,赋值给dangerouslySetInnerHTML属性的__html 关键代码: const [state1, setState1] useSt…

【网络原理】网络地址转换----NAT技术详解

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…

java核心技术点都有哪些

1. 面向对象编程(OOP) 核心概念:类、对象、继承、封装、多态。 比喻:面向对象编程就像是在搭建一个积木城堡。类(Class)是城堡的设计图纸,它定义了城堡的结构和功能;对象&#xff08…

传输层TCP

报头 1.报头和有效载荷如何分离将,有效载荷向上交付? tcp有个标准报头长度为20,那是不是以为我们可以像udp一样分离依靠报头大小去分离,我们仔细去看我们报头中还有个选项没包含到。 我们还有个首部长度,四位可以表…

测试代理IP的有效性和可用性

使用代理IP的有效性和可用性直接关系到用户的工作效率,尤其是在进行数据抓取、网络爬虫和保护个人隐私等场景中。 一、测试代理IP的必要性 代理IP的可用性测试是确保代理服务正常运行的重要步骤。测试代理IP的必要性主要体现在以下几个方面: 提升工作…

【Docker命令】日常使用的Docker命令

Docker常用命令 1、基础命令2、容器管理3、镜像管理推送镜像 4、网络管理5、数据管理 1、基础命令 - docker run:运行一个容器,--name 指定容器的名称,-i 获取标准输入输出,-t显示在终端,-d放到后台运行,--rm容器停止…

STM32传感器模块编程实践(十) 2.4G NRF24L01通信模块简介及驱动源码

文章目录 一.概要二.NRF24L01模块介绍三.NRF24L01模块主要特性四.国产射频芯片SI24R1介绍五.模块接线说明六.参考原理图七.通讯协议介绍八.STM32单片机与NRF24L01模块实现远无线通讯实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.源代码工程下载十.小结 一.概要 NRF24…

InnoDB 存储引擎<二>页结构和行结构

目录 ⻚结构 ⾏结构 ⻚结构 ⻚在MySQL运⾏的过程中起到了⾮常重要的作⽤,为了能发挥更好的性能,可以结合⾃⼰系统的 业务场景和数据⼤⼩,对⻚相关的系统变量进⾏调整,⻚的⼤⼩就是⼀个⾮常重要的调整项 1.⻚的⼤⼩可以设置吗&…

RHCSA笔记一

常见的操作系统 UNIX 、 Linux 类、 Windows 类 搭建Linux学习环境 如何安装linux操作系统: 安装独立的 Linux 系统,不再安装其他操作系统。 安装 Windows 与 Linux 并存的多操作系统,启动时通过菜单选择要启动的操作系统。 在虚拟机中安…

十一、数据库配置

一、Navicat配置 这个软件需要破解 密码是:123456; 新建连接》新建数据库 创建一个表 保存出现名字设置 双击打开 把id设置为自动递增 这里就相当于每一次向数据库添加一个语句,会自动增长id一次 二、数据库的增删改查 1、Vs 建一个控…

探索华为云DataArts Insight:数据智能的新引擎

在快速发展的数字化时代,数据已经成为企业最宝贵的资产。如何有效地管理和利用这些数据,以实现商业价值,是每个企业需要面对的重要挑战。华为云DataArts Insight平台应运而生,作为一款强大的数据智能解决方案,它帮助企…