DHCP 服务器部署

2023-11-17

| DHCP - - > Dynamic Host Configuration Protocol  动态主机配置协议

背景

任何一个需要上网的设备,都必须得有IP地址,子网掩码,网关,等等网络参数。比如:手机,电脑,智能手表,智能眼镜。。。

一个设备获取IP地址等网络参数的办法有两种:

  • 手动配置
  • 自动获取。所谓的自动获取,就会让终端设备通过DHCP协议的方法来自动的去寻找“DHCP服务器”然后呢,请求获得相对应的IP地址;

DHCP的工作角色,分为三个:

  1. DHCP客户端:用于请求IP地址等网络参数的终端设备
  2. DHCP服务器:用于分配IP地址等网络参数的服务器
  3. DHCP中  继:用于将一个DHCP客户端发送的报文,转发给DHCP服务器,也就是说,当DHCP客户端和DHCP服务器不在同一网段的时候,才会需要DHCP中继。

DHCP的工作原理/报文类型 

  • Discover报文:客户端通过广播的方式发送,用于寻找DHCP服务器来请求IP地址
  • Offer报文:服务器通过单播的方式回应客户端,其中包含的是分配的IP地址
  • Request报文:客户端通过广播的方式发送,用于和DHCP服务器确认得到的IP地址
  • ACK报文:DHCP服务器通过单播的方式回应客户端的,用于对客户端的“确认”应答

基于全局的DHCP配置

拓扑:

需求

按照下列要求,确保PC可以自动获取IP地址

思路

1.配置PC - - - > 设置成自动获取IP地址

2.配置DHCP服务器

  • 地址池
  • 网关
  • DNS
  • 租期

配置命令:

PC1/PC2
双击打开 - - > 上方的基础配置下边 - - - > IPv4配置 - - - > ©DHCP - - - > 应用

DHCP Server
undo terminal monitor
system-view
sysname DHCP Server
dhcp enable 
interface g0/0/0
ip address 192.168.1.254 24
dhcp select global    //开启全局配置,此命令的意思就是我就是DHCP服务器
quit

ip pool 1
network 192.168.1.0 mask 24
    // 设置发给客户端的IP地址网段和子网掩码
gateway-list 192.168.1.254 
    // 设置给客户端的网关IP地址是谁,是多少
dns-list 8.8.8.8
    // 设置给客户端的DNS-IP地址是谁,是多少
lease day 3  
    // 设置给客户端发的IP地址和相应的网络参数保留几天,取值范围:0- 999 天
quit

验证方法:
PC>ipconfig   查看当前网络参数
    或者
PC>ipconfig /renew       //重新获取IP地址等网络参数
PC>ipconfig 

Link local IPv6 address...........: fe80::5689:98ff:feca:3c69
IPv6 address......................: :: / 128
IPv6 gateway......................: ::
IPv4 address......................: 192.168.1.253    //IP地址 
Subnet mask.......................: 255.255.255.0    //子网掩码
Gateway...........................: 192.168.1.254    //网关IP地址
Physical address..................: 54-89-98-CA-3C-69 //MAC地址
DNS server........................: 8.8.8.8          //DNS地址

基于DHCP的工作原理,我们知道了DHCP Discover报文的发送方式是:广播

这样一来的话呢,如果想让客户端获取IP地址的话,就只能要求:在每个DHCP客户端所在的网段,都分别建立一个DHCP服务器,这样一来,成本就嘎嘎高,所以,我们通常情况下,都会在整个网络中,部署一个DHCP服务器,有且只有一个,为整个网络中所有部门的DHCP客户端【终端】来分配IP地址。但是,如此一来,DHCP客户端以广播的方式发送DHCP报文,就无法到达DHCP服务器,所以,此时我们需要依靠“DHCP中继”。

所以总结:只有当DHCP客户端和DHCP服务器不在同一网段的时候,才需要中继。并且,在DHCP客户端所在的网段中,只有一种类型的设备,才可以做为中继- - - > “网关”。

DHCP中继

拓扑

 需求:

如图配置设备接口的IP地址且确保PC可以自动获取IP地址等网络参数。

思路:

  • 配置DHCP客户端Client
  • 配置DHCP服务器Server
  • 配置DHCP中继Relay
  • 配置客户端到中继之间的传输网络- - >交换机
  • 配置中继到服务器之间的传输网络- - >路由器
  • 测试验证

配置命令

DHCP Client - -> DHCP - - >应用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
接下来配置DHCP服务器要
    * 基本配置
    * DHCP enable
    * 接口IP地址并且开启DHCP全局功能
    * 配置用于发给客户端的地址池
DHCP Server
undo terminal monitor
system-view
sysname DHCP Server
dhcp enable
interface g0/0/0
ip address 10.10.10.1 24
dhcp select global 
quit
ip pool vlan10
network 192.168.1.0 mask 24
gateway-list 192.168.1.254 
dns-list 114.114.114.114
lease day 1
quit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
配置DHCP Eelay 中继
    * 基本配置
    * 接口IP地址
    * 开启DHCP服务
    * 在DHCP客户端所在的网段的网关,也就是192.168.1.0的网关,192.168.1.254在这里开启中继
      并且指定DHCP服务器在哪里
DHCP Relay 
undo terminal monitor
system-view
sysname DHCP Relay 
dhcp enable
interface g0/0/0
ip address 10.10.10.2 24
quit
interface g0/0/1
ip address 192.168.1.254 24
dhcp select relay 
   // DHCP类型设置为中继
dhcp relay server-ip 10.10.10.1 
   // DHCP中继指定DHCP服务器的IP地址是谁
quit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
配置客户端到中继之间的传输网络
    * 基本配置
    * 创建VLAN并且设置链路类型
LSW1
undo terminal monitor
system-view
sysname LSW1
vlan 10 
quit
port-group group-member g0/0/1 g0/0/2
port link access
port default vlan 10 
quit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
验证:此时,我们使用PC自动获取IP地址
DHCP Client>ipconfig 
这时我们发现获取不到IP地址
PC>ipconfig  /renew

IP Configuration

Can't find DHCP server!  //找不到DHCP服务器  

为什么呢?
原因分析: 
    首先,我们要确定PC  - - > LSW1 - - - > DHCP Relay 是没有问题的,怎么确定呢?
    此时,我们可以给PC设置一个静态IP地址,去ping一下
    PC>ping 192.168.1.254 
    结果:通
    那接下来,我们用PC去访问一下DHCP服务器呗
    PC>ping 10.10.10.1 
    结果:不通
    那么,ping不通DHCP服务器,这属于什么通信故障 - - -> 路由呗
    接下来,我们在用PC去追踪一下10.10.10.1的路由
    PC>tracert 10.10.10.1
    traceroute to 10.10.10.1, 8 hops max
    (ICMP), press Ctrl+C to stop
     1  192.168.1.254   46 ms  110 ms  78 ms
     2    *  *  *
     3    *  *  *
    结果,我们发现路由追踪到了网关后,就没有回应了,我们去排查,是哪里出了问题
    经过我们在DHCP Server Gi0/0/0口抓包,发现DHCP Server是可以收到PC的请求包的
    但是,回不去,为什么呢?我们在DHCP Server上display ip routing-table 192.168.1.0
    经过我们检查DHCP Server的路由表,我们发现没有去往192.168.1.0的路由
解决办法:
    没有就添加呗:
       DHCPServer
           ip route-static 192.168.1.0 24 10.10.10.2 
       此时,我们把PC1设置为DHCP,再次获取IP地址等网络参数
       PC>ipconfig 

Link local IPv6 address...........: fe80::5689:98ff:fe26:61ce
IPv6 address......................: :: / 128
IPv6 gateway......................: ::
IPv4 address......................: 192.168.1.253
Subnet mask.......................: 255.255.255.0
Gateway...........................: 192.168.1.254
Physical address..................: 54-89-98-26-61-CE
DNS server........................: 114.114.114.114
此时,PC已经可以获取IP地址啦
那,各位,经过我们的学习,以及实验,我们得到了以下结论:
     1.DHCP动态获取IP地址,是需要客户端到- - - >服务器的通信的畅通的
     2.DHCP动态获取IP地址,如果不在同一网段,是需要中继来转发DHCP报文的

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DHCP 服务器部署 的相关文章

  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • _dl_runtime_resolve -- 共享对象何时加载到内存中?

    我们有一个对性能要求很高的消息处理系统 最近我们注意到第一条消息比后续消息花费的时间要长很多倍 当它通过我们的系统时 会发生大量转换和消息增强 其中大部分是通过外部库完成的 我刚刚描述了这个问题 使用 callgrind 将仅一条消息的 运
  • 在哪里可以找到所有 C 标准库的源代码?

    我正在寻找所有 C 标准库的完整源代码 也就是说 我正在寻找 stdio h stdlib h string h math h 等的源代码 我想看看它们是如何创建的 我认为这取决于不同的平台 但 Linux 或 Windows 都会受到欢迎
  • shell中基于正则表达式的颜色突出显示输出

    我想知道是否可以用颜色突出显示与某些字符串匹配的 shell 命令的输出 例如 如果我运行 myCommand 输出如下 gt myCommand DEBUG foo bar INFO bla bla ERROR yak yak 我希望所有
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 无法使用 tar -cvpzf 解压完整目录

    把我的头敲在这上面 I used tar cvpzf file tar gz压缩一个完整的目录 我将文件移动到另一台服务器 并尝试解压缩复制存档的目录 无法使其发挥作用 bash 3 2 tar xvpzf news tar gz tar
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • Git - 致命:无法获取当前工作目录?

    When I git clone从回购协议中 我得到 fatal Could not get current working directory No such file or directory 我该怎么办 我检查了服务器并发现 git文
  • 如何从 swagger 文档生成静态 html 文件?

    我创建了一个 Swagger 文档yaml文件位于 api swagger swagger yaml 现在我想分享一个静态 HTML 文档及其定义 但它已在招摇项目 https github com swagger api swagger
  • “以下软件包将被更高优先级的频道取代”是什么意思?

    我正在尝试将 fuzzywuzzy 安装到 64 位 Linux 中的 Anaconda 发行版上 当我这样做时 它试图改变我的conda and conda env to conda forge渠道 如下 我通过以下方式在 anacond
  • Tomcat 中的 403 访问被拒绝

    我有以下内容tomcat users xml

随机推荐

  • 300 倍的性能提升!PieCloudDB Database 优化器「达奇」又出新“招”啦

    随着数字化进程的加快 全球数据量呈指数级增长 对数据库系统的性能提出了巨大的挑战 优化器作为数据库管理系统中的关键技术 对数据库性能和效率具有重要影响 它通过对用户的查询请求进行解析和优化来生成高效的执行计划 进而快速返回查询结果 然而 同
  • 嵌入式Linux——oops:根据oops信息,找到错误的产生位置以及函数的调用关系

    简介 本文主要介绍通过oops信息找到程序中出错位置的方法 并结合自己代码中的错误来讲解如何找到出错位置 同时还会介绍使用栈信息来推到函数间的调用关系 Linux内核 linux 2 6 22 6 所用开发板 JZ2440 V3 S3C24
  • 一、【React基础】React简介及基本使用

    文章目录 1 官网 2 特点 3 相关js库 4 基本使用 4 1 CODE 4 2 Result 用于动态构建用户界面的 JavaScript 库 只关注于视图 由Facebook开源 1 官网 英文官网 https reactjs or
  • 广电用户画像分析之根据用户行为数据进行筛选与标签添加

    在数据处理和分析领域 我们经常需要根据用户的行为数据进行筛选和标签添加 以便更好地理解用户行为和偏好 在本篇博客中 我们将介绍两个示例 展示如何根据用户的收视行为数据和订单信息进行数据处理和分析 前情提要 数据集分析 广电用户画像分析之探索
  • Vue的学习

    一 Vue框架 常用地指令学习 https cn vuejs org 官网地址 概述 前端领域当中有三大框架 都是开发单页面应用的框架 Angular诞生于2009年 是由谷歌创建出来的框架 React诞生于2013年 是由facebook
  • idea无限build解决方案

    点击File Settings Build Excution Deploment Compiler勾上build project automatically
  • 【数据结构】树与二叉树总结(一)

    数据结构 树与二叉树的总结 一 1 AVL树 动态平衡二叉树 树表的查找 2 哈夫曼树 二叉树的应用 3 树 树与二叉树的转换 4 分裂树 5 S K R 注 K为结点 R为关系 一 树 定义 n n gt 0 个结点构成的有限集合 当n
  • SCSI硬盘

    SCSI硬盘即采用SCSI接口的硬盘 它由于性能好 稳定性高 因此在服务器上得到广泛应用 同时其价格也不菲 正因它的价格昂贵 所以在普通PC上很少见到它的踪迹 说到SCSI硬盘必须提到SCSI接口 SCSI是Small Computer S
  • MFC中窗口初始化时OnCreate、OnInitDialog、OnSize、OnPaint的 调用顺序

    执行顺序 以箭头方向 OnCreate gt OnSize gt OnInitDialog gt OnPaint OnCreate 要创建一个窗口 OnSize 用于窗口初始化前的一些参数设定 OnInitDialog 初始化窗口 例如设置
  • Jmeter录制脚本 模拟用户登录操作

    使用Jmeter测试web应用时 通常有两种测试计划 面向请求数的测试 面向场景的测试 模拟用户操作属于面向场景的测试 准备工作 1 1 建立线程组和HTTP请求 在测试计划中新建线程组 线程组中添加一个HTTP请求 并配置 1 2 录制控
  • 最小生成树总结1 prim算法

    最小生成树总结1 prim算法 最小生成树总结2 kurskal算法 文章目录 1 最小生成树问题概述 2 Prim算法流程 3 模板 4 板子题 1 最小生成树问题概述 给定带权节点网络 从中确定一个包含所有节点 n个 n 1条边 所有节
  • 机器学习到底是什么?

    关于机器学习最简单的定义来自于Berkeley所表述的 机器学习是AI的一个分支 它探索了让计算机根据经验提高效率的方法 为了更深刻的理解这一定义 接下来我们将对其进行拆分分析 AI的分支 人工智能是一种能够使得计算机及其系统能够成功完成通
  • MATLAB实现将数据写入到txt文件以及从txt文件中读取数据

    1 将数据写入到txt文件 global n global xm global ym xm 100 ym 100 global A global B n 10 A zeros 1 n B zeros 1 n for i 1 n A 1 i
  • 【Scala】scala ':' or newline expected \u200b

    1 背景 拷贝了网上一段代码 发现报错如下 这个是因为不可见字符 引起的 全局替换一下就好了 参考 IDEA IDEA报错 illegal character U 00A0异常解决
  • C++与C#类型转换例子

    C 部分类型定义 typedef struct SID AND ATTRIBUTES HASH DWORD SidCount PSID AND ATTRIBUTES SidAttr SID HASH ENTRY Hash SID HASH
  • Window11安装Docker Desktop(构建软链接解决Docker自动安装在C盘占用内存问题)

    一 查看电脑是否开启虚拟化 二 配置 Hyper V 三 构建软连接 使Dockor可以不安装在C盘 四 下载安装Dockor 五 配置环境 一 查看电脑是否开启虚拟化 打开设备管理器 gt 性能 gt CPU 查看是否开启虚拟化 若以开启
  • python中def main是什么意思_python - 为什么要使用def main()?

    其他人已经回答了 但我想我还有其他的东西需要补充 main 语句调用if的原因 无特定顺序 其他语言 如C和Java 具有main 函数 该函数在执行程序时调用 使用这个if 我们可以让Python像他们一样 这对许多人来说更为熟悉 代码将
  • python题库刷题网站_python在线刷题网站

    moduleinfo card count count phone 1 count 1 search count count phone 4 count 4 card des 阿里技术人对外发布原创技术内容的最大平台 社区覆盖了云计算 大数
  • java snack_Java 中 Snack3的使用

    网上看了一篇Java 中 Gson的使用 所以也跟着写篇Java 中 Snack3的使用 JSON 是一种文本形式的数据交换格式 从Ajax的时候开始流行 它比XML更轻量 比二进制容易阅读和编写 解析和生成的方式很多 Java中最常用的类
  • DHCP 服务器部署

    DHCP gt Dynamic Host Configuration Protocol 动态主机配置协议 背景 任何一个需要上网的设备 都必须得有IP地址 子网掩码 网关 等等网络参数 比如 手机 电脑 智能手表 智能眼镜 一个设备获取IP