当前位置: 首页 > news >正文

linux服务之DHCP(centos7.6)

DHCP服务

1. DHCP介绍

  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),被应用在局域网环境中,主要作用是集中管理、分配IP地址,使网络环境中主机动态的获取IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。由于DHCP是一个UDP协议,所以运行起来更加高效
  • DHCP协议采用客户端/服务器模型(C/S模型),服务端可以为客户端提供IP、掩码、网关、主机名、DNS等信息。客户端只需将IP获得方式设置自动获取即可
  • 目前可以提供DHCP服务的设备有很多,比如:
    • DHCP服务器(windows server、linux)
    • 硬件路由器
    • 家用宽带路由
  • DHCP应用场合
    • 公司局域网环境
    • 家庭局域网环境
    • 公共场合的wifi环境
    • 宽带环境网络

2. DHCP工作原理

  1. 工作原理
    Ⅰ 发现阶段:客户端广播发送DHCP DISCOVER报文
    Ⅱ 提供阶段:服务器回应DHCP OFFER报文
    Ⅲ 选择阶段: 客户端广播发送DHCP REQUEST报文
    Ⅳ 确认阶段:服务器回应DHCP ACK报文
  2. 计算机获得IP的时间点
    Ⅰ 计算机开机
    Ⅱ 网卡接通网络
    Ⅲ 重启网卡服务
    Ⅳ IP租约到期无法续订
  3. 租约更新阶段

Ⅰ 租约完成50%

当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

Ⅱ 租约完成87.5%

当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

Ⅲ 租约到期

如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。

3. DHCP服务器部署

  • DHCP安装

    [root@Lind ~]# yum -y install dhcp
    
  • DHCP配置文件详解

    [root@Lind ~]# PS1=DHCP_SERVER_16# //无具体含义只是用作显示
    DHCP_SERVER_16#cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
    DHCP_SERVER_16#vim /etc/dhcp/dhcpd.conf 
    # #号代表注释
    # dhcpd.conf
    # DHCP服务配置文件分为全局配置和作用域配置,很好区分:subnet就是作用域 不在subnet里面的就是全局设置
    #
    # Sample configuration file for ISC dhcpd
    ## DNS全局选项,指定DNS服务器的地址,可以是IP,也可以是域名
    # option definitions common to all supported networks...
    # DNS的域名
    option domain-name "example.org";
    # 具体的DNS服务器
    option domain-name-servers ns1.example.org, ns2.example.org;# 租约设置,默认为600s
    default-lease-time 600;
    # 租约设置,最大租约7200s,当客户端未请求明确的租约时间。
    max-lease-time 7200;# 动态DNS更新方式(none:默认,不支持;interim:互动更新模式;ad-hoc:特殊更新模式)
    # Use this to enble / disable dynamic dns updates globally.
    #ddns-update-style none;# 如果该DHCP服务器是本地官方DHCP就将此选项打开,避免其他DHCP服务器的干扰
    # 当一个客户端试图获得一个不是DHCP服务器分配的IP信息,DHCP将发送一个拒绝消息,而不会等待请求超时。
    # 当请求被拒绝,客户端会重新向前DHCP发送IP请求获得新地址。
    # 保证IP是自己发出去的
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    #authoritative;# Use this to send dhcp log messages to a different log file (you also
    # have to hack syslog.conf to complete the redirection).
    # 日志级别
    log-facility local7;# No service will be given on this subnet, but declaring it helps the 
    # DHCP server to understand the network topology.# 作用域相关设置指令
    # subnet 定义一个作用域
    # netmask 定义作用域的掩码
    # range 允许发放的IP范围
    # option routers 指定网关地址
    # option domain-name-servers 指定DNS服务器地址
    # option broadcast-address 广播地址
    #
    #
    #案例:定义一个作用域 网段为10。152.187.0 掩码为255.255.255.0
    #此作用域不提供任何服务
    subnet 10.152.187.0 netmask 255.255.255.0 {
    }# This is a very basic subnet declaration.# 案例:定义一个基本的作用域
    # 网段10.254.239.0 掩码255.255.255.224
    # 分发范围10.254.289.10-20
    # 网关为rtr-239-0-1.example.org,rtr-239-0-2.example.org
    subnet 10.254.239.0 netmask 255.255.255.224 {range 10.254.239.10 10.254.239.20;option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
    }# This declaration allows BOOTP clients to get dynamic addresses,
    # which we don't really recommend.subnet 10.254.239.32 netmask 255.255.255.224 {range dynamic-bootp 10.254.239.40 10.254.239.60;option broadcast-address 10.254.239.31;option routers rtr-239-32-1.example.org;
    }# A slightly different configuration for an internal subnet.
    subnet 10.5.5.0 netmask 255.255.255.224 {range 10.5.5.26 10.5.5.30;option domain-name-servers ns1.internal.example.org;option domain-name "internal.example.org";option routers 10.5.5.1;option broadcast-address 10.5.5.31;default-lease-time 600;max-lease-time 7200;
    }# Hosts which require special configuration options can be listed in
    # host statements.   If no address is specified, the address will be
    # allocated dynamically (if possible), but the host-specific information
    # will still come from the host declaration.host passacaglia {hardware ethernet 0:0:c0:5d:bd:95;filename "vmunix.passacaglia";server-name "toccata.fugue.com";
    }# Fixed IP addresses can also be specified for hosts.   These addresses
    # should not also be listed as being available for dynamic assignment.
    # Hosts for which fixed IP addresses have been specified can boot using
    # BOOTP or DHCP.   Hosts for which no fixed address is specified can only
    # be booted with DHCP, unless there is an address range on the subnet
    # to which a BOOTP client is connected which has the dynamic-bootp flag
    # set.
    host fantasia {hardware ethernet 08:00:07:26:c0:a5;fixed-address fantasia.fugue.com;
    }# You can declare a class of clients and then do address allocation
    # based on that.   The example below shows a case where all clients
    # in a certain class get addresses on the 10.17.224/24 subnet, and all
    # other clients get addresses on the 10.0.29/24 subnet.class "foo" {match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
    }shared-network 224-29 {subnet 10.17.224.0 netmask 255.255.255.0 {option routers rtr-224.example.org;}subnet 10.0.29.0 netmask 255.255.255.0 {option routers rtr-29.example.org;}pool {allow members of "foo";range 10.17.224.10 10.17.224.250;}pool {deny members of "foo";range 10.0.29.10 10.0.29.230;}
    }
  • DHCP启动

    DHCP_SERVER_16#systemctl start dhcpd //打开dhcpd服务,打开前需要在配置文件中有一个作用域是服务器所处网段
    DHCP_SERVER_16#systemctl enable dhcpd //开机自启动dhcpd服务
    

4. DHCP作用域

  • 作用域相关指令
subnet //定义一个作用域
netmask //定义作用域的掩码
range //允许发放的IP范围
option routers //指定网关地址
option domain-name-servers //指定DNS服务器地址
option broadcast-address //广播地址
  • 案例
配置一个作用域,用于为本地局域网中的计算机发放IP信息。要求:
本地网段:192.168.11.0/24
发放IP地址:192.168.11.153-242
网关:192.168.11.254
DNS1:202.106.0.20
DNS2:114.114.114.114
默认租约为两个小时
最大租约为三个小时
本DHCP服务器为本地权威DHCP,要求可以本地所有计算机获得IP都是由本DHCP发放authoritative //权威DHCP
subnet 192.168.11.0 netmask 255.255.255.0{//作用域配置range 192.168.11.153 192.168.11.252option domain-name-servers 202.106.0.20,114.114.114.114optopn routers 192.168.11.254option broadcast-address 192.168.11.255default-lease-time 7200max-lease-time 10800
}
  • dhclient命令测试
    dhclient是一个DHCP协议客户端,他使用DHCP协议或者BOOTP协议或在这两个协议都不可用时使用静态地址来配置一个或多个网络接口
    -r:释放当前租约并停止正在运行的DHCP客户端
    -d:强制dhclient作为前台进程运行
  • 查看网卡详细信息
[root@Lind ~]# nmcli connection show ens33
  • 抓包命令
tcpdump -nn -vv -s 1500 -i ens33 host 192.168.11.10(服务器IP) and udp port 67 or udp port 68
  • 租约路径:/var/lib/dhcpd/dhcpd.leases

5. DHCP保留地址

  • 介绍

在IP租约到期后,如果无法续订组员,client只能乖乖交出IP地址,重新获得一个其它IP使用。但是在公司有些服务器的IP地址是不能变化的,因为变了用户就无法连接到服务器了,比如公司文件服务器、打印服务器等等。那么在这种环境中我们既想要使用DHCP管理公司IP,又想实现部分及其的IP永久不变,那么怎么实现呢/
DHCP的作者在写DHCP的时候也想到了这个问题,提出了保留IP的概念,就是将默写IP保留,然后服务器来获得IP的时候,根据MAC地址做匹配,将对应的IP分给它们即可

  • 配置文件/etc/dhcp/dhcpd.conf中增添
host fanstasia(什么名字都行) {hardware ethernet MAC地址;fixed-address 指定IP;#可选,但要保证/etc/hostname中是空的,重启生效option host-name 自定义主机名; 
}

6. DHCP超级作用域

  • 介绍

由于公司的发展壮大,公司人员数量越来越多,公司一个网段的IP无法满足日常使用,所以又加了一个网段。但是默认情况下, DHCP服务器只能发放和自己网卡在同一网段的IP地址,目前我们DHCP的网卡IP地址为192.168.11.0段,我们新加的网段为192.168.12.0,那么怎么能让DHCP服务器既能发11网段,又能法12网段呢?
超级作用域:将两个或以上的不同网段的作用域和成一个作用域。

  • 基础指令
shared-network NAME{//shared-network:开启一个超级作用域
subnet1 ...subnet2 ...}
  • 案例
部署一个超级作用域,作用域是192.168.11.0/24网段,192.168.12.0/24网段
网关:192.168.11/12.254
DNS:8.8.8.8option domain-name-servers 8.8.8.8
default-lease-time 7200
max-lease-time 10800
shared-network test {
subnet 192.168.11.0 netmask 255.255.255.0{//作用域配置range 192.168.11.100 192.168.11.200optopn routers 192.168.11.254
}
subnet 192.168.11.0 netmask 255.255.255.0{//作用域配置range 192.168.12.100 192.168.12.200optopn routers 192.168.12.254
}
}

欢迎大家关注公众号Lind-Learn,在这里会分享各类计算机技术的知识。

相关文章:

linux服务之DHCP(centos7.6)

DHCP服务 1. DHCP介绍 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),被应用在局域网环境中,主要作用是集中管理、分配IP地址,使网络环境中主机动态的获取IP地址、网关地址、DNS服务器地址等信息,并能…...

2024最新的软件测试面试八股文

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升…...

C++ STL transform_reduce 用法

一&#xff1a;功能 计算两个向量的内积&#xff0c;它是 std::inner_product 的泛化版本&#xff0c;支持lambda表达式自定义运算。 二&#xff1a;用法 #include <iostream> #include <vector> #include <numeric> #include <execution>int main()…...

MySQL5.7 排序

一、不分组排序 (1).排序-并列数据随机顺序 select col1, col2, rank : rank 1 as rank from (select A as col1,100 as col2union all select B as col1,130 as col2union all select C as col1,120 as col2union all select D as col1,120 as col2order by col2 desc ) a,…...

【Unity】3D功能开发入门系列(一)

Unity3D功能开发入门系列&#xff08;一&#xff09; 一、开发环境&#xff08;一&#xff09;安装 Unity&#xff08;二&#xff09;创建项目&#xff08;三&#xff09;Unity 窗口布局 二、场景与视图&#xff08;一&#xff09;场景&#xff08;二&#xff09;游戏物体&…...

【Python体验】第五天:目录搜索、数据爬虫(评论区里写作业)

文章目录 目录搜索 os、shutil库数据爬虫 request、re作业&#xff1a;爬取案例的top250电影的关键信息&#xff08;名称、类型、日期&#xff09;&#xff0c;并保存在表格中 目录搜索 os、shutil库 os 模块提供了非常丰富的方法用来处理文件和目录。 os.listdir(path)&#x…...

elasticsearch性能调优方法原理与实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…...

python print 函数参数:sep 自定义分隔符,end 自定义结尾符

1. 简述 print 函数可以将内容打印到标准输出&#xff0c;如果不指定 end 参数&#xff0c;默认在输出的内容之后加一个 “回车符\n”。 以下是 print 函数常用的参数用法&#xff1a; print(object, …, sepstr, endstr) object, …&#xff1a;要打印的内容&#xff0c;可以…...

git 使用场景

拉取分支 feature 以develop为基础 git checkout -b feature-x develop git checkout demobranch git branch 合并分支 idea 在feature 选 develop 合并到feature...

Ubuntu22.04 Docker更换阿里云镜像

由于运营商网络原因&#xff0c;会导致您拉取Docker Hub镜像变慢&#xff0c;甚至下载失败。那么可以更换阿里云镜像加速器&#xff0c;从而加速官方镜像的下载。 1.获取镜像加速器地址 登录容器镜像服务控制台&#xff0c;在左侧导航栏选择镜像工具 > 镜像加速器&#xf…...

Windows下Rust OpenCV环境配置

首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey&#xff0c;Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey&#xff0c;选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…...

PostgreSQL(二十三)TOAST技术

目录 一、TOAST简介 二、TOAST的存储方式 1、存储方式概述 2、实验&#xff1a;创建TOAST表 三、TOAST的4种压缩策略 1、策略说明 2、TOAST表额外的三个字段 四、TOAST表的计算方式 1、说明 2、实验&#xff1a;计算表大小 五、TOAST表的特点 1、优点 2、缺点 3、…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《海上风氢系统与沿海电网能量协同优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

MySQL update set语句中 逗号与and的区别

语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法&#xff1a; UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; 参数说明&#xff1a; table_name 是你要更新数据的表的名称。column1, column2, ... 是你要更新的列的名称。v…...

C++面试---小米

一、static 关键字的作用&#xff0c;及和const的区别 static关键字作用&#xff1a; 1、在类的成员变量前使用&#xff0c;表示该变量属于类本身&#xff0c;而不是任何类的实例。 2、在类的成员函数前使用&#xff0c;表示该函数不需要对象实例即可调用&#xff0c;且只能访问…...

Java 实现 AVL树

在二叉平衡树中&#xff0c;我们进行插入和删除操作时都需要遍历树&#xff0c;可见树的结构是很影响操作效率的。在最坏的情况下&#xff0c;树成了一个单支树&#xff0c;查找的时间复杂度成了O(N)&#xff0c;建树跟没建树一样。那么是不是有什么办法可以建一个树避免这种情…...

CNN卷积网络实现MNIST数据集手写数字识别

步骤一&#xff1a;加载MNIST数据集 train_data MNIST(root./data,trainTrue,downloadFalse,transformtransforms.ToTensor()) train_loader DataLoader(train_data,shuffleTrue,batch_size64) # 测试数据集 test_data MNIST(root./data,trainFalse,downloadFalse,transfor…...

深入理解Java中的时间处理与时区管理

在Java开发中&#xff0c;时间处理和时区管理是常见的需求&#xff0c;特别是在全球化应用中。Java 8引入了新的时间API&#xff08;java.time包&#xff09;&#xff0c;使时间处理变得更加直观和高效。本文将详细介绍Java中的时间处理与时区管理&#xff0c;通过丰富的代码示…...

虚拟机windows server创建域

目录 准备工作 一、新建域控制器 二、提升为域控制器添加新林 三、新建组织单位&#xff08;OU&#xff09;&#xff0c;用户 四、将计算机加域 五、在域控中管理计算机 六、在域控中配置组策略 七、域内计算机验证组策略配置 准备工作 安装域前&#xff0c;如果有DNS…...

Java 集合框架:Java 中的 Set 集合(HashSet LinkedHashSet TreeSet)特点与实现解析

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 017 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...