在linux-CentOS7.9中搭建DHCP服务器

2023-10-26

目录

dhcp协议:

dhcp分配的过程:

在linux系统里搭建一个dhcp服务,给其他机器分配ip地址,具体步骤:

1.安装dhcp相关的软件包

2.拷贝样例文件到/etc/dhcp目录下

3.编辑配置文件

4.启动dhcp服务器

5.查看dhcp服务是否已启动 

6.关闭防火墙

7.测试--使用一台服务器作为客户端

8.在dhcp服务器上查看给哪些客户机分配了ip地址

补充:linux中手工配置静态ip地址

1.进入网卡配置文件的目录

2.修改配置文件ifcfg-ens33,ens33是具体接口的名字

3.重新启动服务,让新的配置重新生效


dhcp协议:

动态主机配置协议,是应用层的协议,负责为客户机动态分配TCP/IP信息,包括ip地址、子网掩码、默认网关、首选DNS服务器等。dhcp只是在内网给部分电脑配置ip地址,一个局域网中有一个dhcp服务器就可以了。

相关疑问:

dhcp服务器是如何知道哪些ip地址分配出去了,哪些没有分配出去呢?

        dhcp服务器会记录哪些ip地址分配出去了,哪些没有分配 --> 会有一个文件记录。

分配ip地址出去的时候,是否会检查ip地址是否冲突?

        分配之前会先ping一个准备给别人的ip地址,看是否有回应。

dhcp分配的过程:

客户机请求ip地址(DHCPDiscover) -> 服务器相应请求(DHCPOffer) -> 客户机选择ip地址(DHCPRequest) -> 服务器确认租约(DHCPAck)

其中客户机发出的包都是广播包,服务器发出的包都是单播包。

在linux系统里搭建一个dhcp服务,给其他机器分配ip地址,具体步骤:

1.安装dhcp相关的软件包

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

2.拷贝样例文件到/etc/dhcp目录下

[root@router ~]# cd /etc/dhcp/
[root@router dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts     #dhcpd6.conf是ipv6的配置文件,dhcpd.conf是ipv4的配置文件--主要配置文件
[root@router dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

3.编辑配置文件

[root@router dhcp]# vim /etc/dhcp/dhcpd.conf
log-facility local7;
# A slightly different configuration for an internal subnet.
subnet 192.168.188.0 netmask 255.255.255.0 {
  range 192.168.188.210 192.168.188.240;
  option domain-name-servers 114.114.114.114;
  option routers 192.168.188.1;
  default-lease-time 600;
  max-lease-time 7200;
}

其中配置的主要含义:

 log-facility local7:指定日志类型,采用的日志设备为本地设备

subnet 192.168.188.0 netmask 255.255.255.0:指定分配ip地址的网段号和子网掩码

range 192.168.188.210 192.168.188.240:指定分配地址池的范围,必须是上面指定网段号里面的ip

option domain-name-servers 114.114.114.114:指定dns服务器

option routers 192.168.188.1:指定网关

default-lease-time 600:最短租约时间为600s

max-lease-time 7200:最长租约时间为7200s

注意:dhcp服务器里的网关或者dns服务器配置错误,就会导致客户机上不了网

4.启动dhcp服务器

[root@router dhcp]# service dhcpd start
Redirecting to /bin/systemctl start dhcpd.service

5.查看dhcp服务是否已启动 

[root@router dhcp]# ps aux|grep dhcpd     #查看进程
dhcpd      4482  0.2  0.4 105988  8180 ?        Ss   21:34   0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
[root@router dhcp]# netstat -anplut|grep dhcpd    #查看端口
udp        0      0 0.0.0.0:67              0.0.0.0:*                           4482/dhcpd

6.关闭防火墙

[root@router dhcp]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@router dhcp]# systemctl disable firewalld

7.测试--使用一台服务器作为客户端

[root@goweb ~]# dhclient -lf /var/lib/dhclient/dhclient.leases     #将租约信息存入该文件
[root@goweb ~]# cat /var/lib/dhclient/dhclient.leases
lease {
  interface "ens33";
  fixed-address 192.168.188.210;
  option subnet-mask 255.255.255.0;
  option dhcp-lease-time 1800;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.188.1;
  option dhcp-server-identifier 192.168.188.254;    #dhcp服务器的ip地址
  option broadcast-address 192.168.188.255;
  option domain-name "localdomain";
  renew 4 2023/07/27 13:58:24;
  rebind 4 2023/07/27 14:12:58;
  expire 4 2023/07/27 14:16:43;
}

8.在dhcp服务器上查看给哪些客户机分配了ip地址

[root@router ~]# 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.5

server-duid "\000\001\000\001,U,\360\000\014)\350\033\200";

lease 192.168.188.210 {
  starts 4 2023/07/27 13:40:27;
  ends 4 2023/07/27 13:50:27;
  cltt 4 2023/07/27 13:40:27;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:e4:41:50;     #物理地址
  client-hostname "goweb";     #客户机主机名
}

补充:linux中手工配置静态ip地址

1.进入网卡配置文件的目录

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/

2.修改配置文件ifcfg-ens33,ens33是具体接口的名字

[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
UUID="e605fdb1-4998-467b-b659-84e12fecab31"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.15.149
#NETMASK=255.255.255.0
PREFIX=24 4
GATEWAY=192.168.15.2 
DNS1=114.114.114.114
DNS2=192.168.0.1

其中配置文件中主要配置的含义:

BOOTPROTO="none":none或static表示静态配置ip,dhcp表示动态获得ip地址,通过dhcp服务器分配

NAME="ens33":网卡的名字

UUID="e605fdb1-4998-467b-b659-84e12fecab31":网络连接的唯一标识,一个硬件会对应一个编号,这个编号会自动生成,不需要修改

DEVICE="ens33":设备的名字

ONBOOT="yes":yes表示开机的时候激活网络连接,no表示禁用这个网络连接

IPADDR=192.168.15.149:静态配置的ip地址

NETMASK=255.255.255.0:子网掩码

PREFIX=24:子网掩码的长度为24,与NETMASK只需要配置其中一个就可以了

GATEWAY=192.168.15.2:默认网关

DNS1=114.114.114.114:首选dns服务器

DNS2=192.168.0.1:备选dns服务器

3.重新启动服务,让新的配置重新生效

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

在linux-CentOS7.9中搭建DHCP服务器 的相关文章

  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 如何查询X11显示分辨率?

    这似乎是一个简单的问题 但我找不到答案 如何查询 通过 X11 存在哪些监视器及其分辨率 查看显示宏 http tronche com gui x xlib display display macros html and 屏幕宏 http
  • 监控子进程的内存使用情况

    我有一个 Linux 守护进程 它分叉几个子进程并监视它们是否崩溃 根据需要重新启动 如果父进程可以监视子进程的内存使用情况 以检测内存泄漏并在超出一定大小时重新启动子进程 那就太好了 我怎样才能做到这一点 您应该能够从 proc PID
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa

随机推荐

  • SQLMap使用教程:从入门到入狱详细指南

    项目地址 GitHub sqlmapproject sqlmap Automatic SQL injection and database takeover tool SQLMap支持市面上常见的数据库 支持MySQL Oracle Pos
  • 网络营销中的博客营销有什么价值?对于博客营销我们应该注意哪些问题?

    博客营销有什么价值 应该注意什么 博客营销的正向效应作为一种现代 新兴的互联网营销手段 博客营销具有着传统营销方式所不可比拟的价值 主要体现在其正向的外部性方面 第一 由于网络资源的共享性和交互性 博客营销有利于企业全面降低营销费用和经营成
  • 最全防雷器电路及保护电路解析

    一 交流电源防雷器 一 单相并联式防雷器 电路一 最简单的电路 说明 1 优点 电路简单 采用复合对称电路 共模 差模全保护 L N 可以随便接 缺点 压敏电阻RV1 短路失效后易引起火灾 最好在每个压敏电阻上串联一个工频保险丝以防压敏电阻
  • 虚拟linux系统首次登入,第一次在虚拟机启动我们的Linux系统

    在上一篇中 我们学习了如何在本地环境搭建自己的Linux学习环境 从今天开始 正式进入我们的Linux学习之旅 今天我们尝试第一次启动Linux系统 为保证虚拟机的流畅运行 建议将分辨率设置为 800x600 1 第一次启动Linux之后
  • SSD HDD RAM ROM NAND NOR Flash 等存储介质概念整理

    原文地址 http xyzhongly blog 163 com blog static 2820488820101022302695 fromdm fromSearch isFromSearchEngine yes 寄存器 寄存器是中央处
  • C# 发展史

    C 开发的进化史 今天开始呢 我会跟大家一起学习C 我会由浅入深从基础来教大家 给大家推荐一本个人认为最为适合C 入门的书 C 本质论 这本书写的确实不错 如果有兴趣的话可以买来看一看 在期刊期间我也会发一些关于有趣的小案例 努力让大家学到
  • 区块链应用的开发

    经过前面两篇文章 适合小白 区块链之我用可视化的方式部署Webase 区块链之我用可视化Webase开发智能合约 的洗礼 相信大家都对区块链这块多少有点了解了 在本章节小编将带大家演示一下区块链应用的开发 首先需要导出刚才编译部署的智能合约
  • 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)

    前言 终于要毕业了 毕业设计也做完了 我的毕设是 极限学习机和强化学习在单一资产交易中的应用 本质上用以极限学习机为值函数逼近器的一类强化学习算法去对一个资产进行交易 既然毕设也做完了 大学生涯也要结束了 那在去工作之前将毕设的东西好好总结
  • 线性回归(Linear Regression)

    线性回归 Linear Regression 一 假设函数 h x
  • Linux 强行终止

    kill 9 pid pid是进程号 9 代表的是数字 INT 2 这个就是你在bash下面用Ctrl C 来结束一个程序时 bash会向进程发送这个信号 默认的 进程收到这个程序会结束 你可以用 kill INT pid 来发这个信号 Q
  • ORA-28547 连接服务器失败

    1 找到Oracle安装路径 找到Oracle安装路径 app product 11 2 0 dbhome 1 NETWORK ADMIN listener ora 2 在listener ora文件中找到 PROGRAM extproc
  • OpenAI使用条款、使用策略和支持的地区汇总:必读指南,避免OpenAI API被封禁

    最近 一些群友反馈他们的OpenAI API被限制 其中包括试用金用户以及绑定了信用卡的用户 当他们调用API时 会收到以下报错信息 Your access was terminated due to violation of our po
  • 第一章:认识Scratch 第一课 什么是编程,什么是计算机语言?

    程序员的高薪已经成为一个公开的秘密 北上广的一个普通的刚毕业的程序员 怎么说也要万元的起薪 工作几年之后 说起来月薪都是几万 那些高级的资深程序员甚至于达到了年薪百万的待遇 程序员的工作就是编程 那么到底什么是编程呢 关注公众号 少儿编程S
  • python3.6安装包下载_下载 - CPython v3.8.5 官方安装包,离线安装程序,绿色便携版

    CPython v3 8 5 官方安装包 for Digitser 基于 C 语言的 Python 实现 系统 Microsoft Windows Vista 7 8 10 x86 amd64 CPython2 7 原定于 2020 年 0
  • android cmd命令行删除文件夹,文件

    android cmd命令行删除文件夹 文件 adb root adb remount adb shell su cd system sd data 进入系统内指定文件夹 ls 列表显示当前文件夹内容 rm r xxx 删除名字为xxx的文
  • Angular Tracy 小笔记 数据绑定,指令

    数据绑定 数据绑定的本质 就是我们的通讯操作 左边的业务逻辑 ts 想传递数据给模板显示 html 可以通过 插件表达式 data 属性绑定 property data 插值表达式 data 变量调用 html 里写 p tracyName
  • hyper-v克隆win10虚拟机后无法联网的解决方案

    克隆的虚拟机mac地址是不变的 所以要修改mac地址才行 现在有个更简单的办法 就是直接删除网络适配器 然后重新添加一个网络适配器即可 第一步 先删除原来的网卡 第二步 添加新的网卡 然后确定保存 立即生效
  • vue3.2结合element-plus实现一个全局分页组件

    最近开始学习vue3 0的api语法 通使用vue3 0 element plus搭建一个模板 把常用的组件封装一下 常用的分页组件 通过封装之后 粘贴复制 开箱即用 首先安装vue3 2版本和element plus 分页组件
  • Python-OpenCv-答题卡识别

    前言 用OpenCv进行答题卡的扫描获取信息 其中用到平滑处理 边缘检测 透视变换 坐标点处理 一 轮廓检测 import cv2 import numpy as np def cv show name img cv2 imshow nam
  • 在linux-CentOS7.9中搭建DHCP服务器

    目录 dhcp协议 dhcp分配的过程 在linux系统里搭建一个dhcp服务 给其他机器分配ip地址 具体步骤 1 安装dhcp相关的软件包 2 拷贝样例文件到 etc dhcp目录下 3 编辑配置文件 4 启动dhcp服务器 5 查看d