一、DHCP简单讲解

DHCP就是动态主机配置协议(Dynamic Host Configuration Protocol)是一种基于UDP协议且仅限用于局域网的网络协议,它的目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。这种网络服务有利于对网络中的客户机IP地址进行有效管理。

DHCP功能分为两个部份:一个是服务器端,而另一个是客户端(客户端不用安装) DHCP透过“租约”的概念,有效且动态的分配客户端的TCP/IP设定。

DHCP服务程序能够使局域网内的主机自动且动态的获取IP地址、子网掩码、网关地址以及DNS服务器地址等信息,且能够有效的提升地址使用率,提高配置效率,减少管理和维护成本

路由器DHCP服务器的三种IP分配方式:

DHCP服务器具有三种IP的分配方式,手动分配,自动分配和动态分配。其中动态分配功能最为强大,配置也最为烦琐。目前的DHCP服务器一般支持全部的几种分配方式或者是其中的两种。

手动分配:

网络管理员在DHCP服务器通过手工方法配置DHCP客户机的IP地址。当DHCP客户机要求网络服务时,DHCP服务器把手工配置的IP地址传递给DHCP客户机。

自动分配:

不需要进行任何的IP地址手工分配。当DHCP客户机第一次向DHCP服务器租用到IP地址后,这个地址就永久地分配给了该DHCP客户机,而不会再分配给其他客户机。

动态分配:

当DHCP客户机向DHCP服务器租用IP地址时,DHCP服务器只是暂时分配给客户机一个IP地址。只要租约到期,这个地址就会还给DHCP服务器,以供其他客户机使用。如果DHCP客户机仍需要一个IP地址来完成工作,则可以再要求另外一个IP地址。

动态分配方法是惟一能够自动重复使用IP地址的方法,它对于暂时连接到网上的DHCP客户机来说尤其方便,对于永久性与网络连接的新主机来说也是分配IP地址的好方法。DHCP客户机在不再需要时才放弃IP地址,如DHCP客户机要正常关闭时,它可以把IP地址释放给DHCP服务器,然后DHCP服务器就可以把该IP地址分配给申请IP地址的DHCP客户机。

使用动态分配方法可以解决IP地址不够用的困扰,例如C类网络只能支持254台主机,而网络上的主机有三百多台,但如果网上同一时间最多有200个用户,此时如果使用手工分配或自动分配将不能解决这一问题。而动态分配方式的IP地址并不固定分配给某一客户机,只要有空闲的IP地址,DHCP服务器就可以将它分配给要求地址的客户机;当客户机不再需要IP地址时,就由DHCP服务器重新收回。

浅谈DHCP IP相同的问题

DHCP IP相同,DHCP服务器优先分发尚未出租的最前IP地址,以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,比如此IP地址已分配给其它DHCP客户机使用,则DHCP服务器给 DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。另外,DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向 DHCP服务器发送更新其IP租约的信息。

DHCP服务程序的相关术语:

作用域:

一个完整的IP地址段,DHCP服务根据作用域来管理网络的分布、分配IP地址及其他配置参数。

超级作用域:

用于支持同一个物理网络上多个逻辑IP地址子网端,包含作用域的列表,并对子作用域统一管理。

排除范围:

将某些IP地址在作用域中排除,确保这些IP地址不会被提供给DHCP客户机。

地址池:

在定义DHCP服务的作用域并应用排除范围后,剩余用来动态分配给DHCP客户机的IP地址范围。

租约:

即DHCP客户机能够使用动态分配到的IP地址的时间。

预约:

保证局域子网中特定设备总是获取到相同的IP地址。

二、搭建过程

查看一下dhcp有没有安装

# rpm -qa dhcp

[root@localhost ~]#
[root@localhost ~]# rpm -qa dhcp
[root@localhost ~]#

安装DHCP服务

# yum install dhcp -y

Installed:
dhcp.x86_64 :4.2.-.el7.centos. Dependency Updated:
dhclient.x86_64 :4.2.-.el7.centos. dhcp-common.x86_64 :4.2.-.el7.centos. dhcp-libs.x86_64 :4.2.-.el7.centos. Complete!
[root@localhost ~]#

查看dhcp的版本号

# rpm -qa dhcp

[root@localhost ~]# rpm -qa dhcp
dhcp-4.2.-.el7.centos..x86_64

查看一下dhcp.conf配置文件

# cat /etc/dhcp/dhcpd.conf

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf() man page
#
[root@localhost ~]#

DHCP执行程序

[root@localhost ~]# ls /usr/sbin/dhcrelay
/usr/sbin/dhcrelay
[root@localhost ~]#
[root@localhost ~]# ls /usr/sbin/dhcpd
/usr/sbin/dhcpd
[root@localhost ~]#

查看DHCP配置文件模板

# cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf() man page
#
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
# # option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time ; #默认租约时间单位秒
max-lease-time ; #最大租约时间单位秒 # Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none; # 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 10.152.187.0 netmask 255.255.255.0 { #定义子网
} # This is a very basic subnet declaration. subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20; #IP地址池
option routers rtr---.example.org, rtr---.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---.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; #DNS服务器
option domain-name "internal.example.org"; #可选 设置默认搜索域
option routers 10.5.5.1; #网关
option broadcast-address 10.5.5.31; #可选 备选广播地址
default-lease-time ;
max-lease-time ;
} # 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 ::c0:5d:bd:;
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 ::::c0:a5; #指定文件服务器MAC地址
fixed-address fantasia.fugue.com; #指定IP地址
} # 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./ subnet, and all
# other clients get addresses on the 10.0./ subnet. class "foo" {
match if substring (option vendor-class-identifier, , ) = "SUNW";
} shared-network - {
subnet 10.17.224.0 netmask 255.255.255.0 {
option routers rtr-.example.org;
}
subnet 10.0.29.0 netmask 255.255.255.0 {
option routers rtr-.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;
}
}

在配置文件中通常包括三部分,分别是声明(declarations)、参数(parameters)、选项(option)。

a、声明是用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。

B、参数用来表明如何执行任务,是否要执行任务或将哪些网络配置选项发送给客户。

c、选项是用来配置dhcp的可选参数,全部用option关键字作为开始。

一个标准的DHCP配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数:

全局配置参数用于定义整个配置文件的全局参数,而子网网段声明用于配置整个子网段的地址属性

三、配置实例

假设有一个公司的局域网,在该网络中用linux搭建dhcp服务器,网络中的ip地址网段为192.168.1.0,子网掩码为255.255.255.0,动态分配的ip地址区间为192.168.0.3~192.168.0.254,dns服务器地址为114.114.114.114,网关为192.168.1.1,公司总经理计算机的ip地址有特殊要求,设置ip地址为192.168.1.88。改如何进行配置?
我们只要把配置文件修改一下即可,如下:

# cat /etc/dhcp/dhcpd.conf

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf() man page
#
ddns-update-style none; #定义DNS服务动态更新的类型,类型包括:none不支持动态更新、interim互动更新模式、ad-hoc特殊更新模式
ignore client-updates; #忽略、(allow/允许)客户机更新DNS记录
subnet 192.168.1.0 netmask 255.255.255.0 { #意思是我所分配的ip地址所在的网段为192.168.1. 子网掩码为255.255.255.
range 192.168.1.3 192.168.1.254; #租用IP地址的范围
default-lease-time ; #默认租约时间
max-lease-time ; #最大租约时间
option routers 192.168.1.1; #路由器网关地址,这里是当前 dhcp 机器的网关地址
option domain-name-servers 114.114.114.114,8.8.8.8; #设置DNS域名服务器
host fantasia { #设置主机声明
hardware ethernet :0c::eb::; #指定dhcp客户的mac地址
fixed-address 192.168.1.88; #给指定的mac地址分配ip
}
}
[root@localhost ~]#

重启DHCP服务器

# systemctl restart dhcpd

注意:重启DHCP服务器时,确保设置的物理地址网卡没有IP地址,处于关机状态为最佳,否则重启时报错

设置开机自启动

# chkconfig dhcpd on

或者

# systemctl enable dhcpd

模拟总经理计算机

查看总经理计算机物理地址(MAC)

# cat /sys/class/net/eno16777736/address

[root@localhost ~]# cat /sys/class/net/eno16777736/address
:0c::eb::
[root@localhost ~]#

确认一下IP

四、DHCP相关的使用信息

/var/lib/dhcpd/dhcpd.leases  这个文件专门记录了DHCP的分配情况

[root@localhost dhcpd]# pwd
/var/lib/dhcpd
[root@localhost dhcpd]#
[root@localhost dhcpd]# ls
dhcpd6.leases dhcpd.leases dhcpd.leases~
[root@localhost dhcpd]#
[root@localhost dhcpd]# cat dhcpd.leases
# The format of this file is documented in the dhcpd.leases() manual page.
# This lease file was written by isc-dhcp-4.2. lease 192.168.1.3 {
starts // ::;
ends // ::;
tstp // ::;
cltt // ::;
binding state free;
hardware ethernet :0c::eb::;
}
lease 192.168.1.4 {
starts // ::;
ends // ::;
cltt // ::;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet c8:d3:ff:de::;
uid "\001\310\323\377\336\"\203";
client-hostname "LAPTOP-6T0LVEVT";
}
server-duid "\000\001\000\001#\371|\300\000\014)\207$\273"; [root@localhost dhcpd]#

参考博客:

centos7.0中搭建dhcp服务器

https://blog.csdn.net/qq_18831583/article/details/79001796

centos6.5上DHCP安装与配置

https://blog.csdn.net/kongxx/article/details/43523225

centos7配置DHCP服务

http://www.bubuko.com/infodetail-1804738.html

详述DHCP服务器的三种IP分配方式

https://www.cnblogs.com/sunflower627/p/3627654.html

linux下dhcp服务器分配出去的IP地址及剩余IP地址

https://blog.csdn.net/zhang_danf/article/details/24321855

end

centos7 搭建DHCP服务器的更多相关文章

  1. Centos7搭建dhcp服务器

    实验拓扑: 实验步骤如下: 1.挂载本地镜像,并安装dhcp组件. 2.更改配置文件,并重启服务. . 3.配置dhcp地址池范围 4.配置防火墙 结果:在客户端上,重启网卡,后查看ip

  2. 手把手教你搭建DHCP服务器

    目录 DHCP实现原理 DHCP定义 DHCP分配方式 DHCP工作过程 初次登录 重新登录 更新租约 搭建DHCP服务器 实验目的 实验环境 实验步骤 实验结果 DHCP实现原理 DHCP定义 DH ...

  3. Linux搭建DHCP服务器

    Linux搭建DHCP服务器   实验目标: 通过本实验掌握基于Linux的DHCP服务器搭建技能. 本实验包含内容为yum的认识与使用,磁盘挂载的概念与使用,DHCP原理及配置,systemctl服 ...

  4. CentOS7 搭建 SVN 服务器

    CentOS7 搭建 SVN 服务器 介绍SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上 ...

  5. liunx搭建DHCP服务器以及DHCP中继服务器

    liunx搭建DHCP服务器以及DHCP中继服务器 一.实验拓扑 二.实验条件 虚拟机取消VMnet1和VMnet8的dhcp动态获取ip地址,以免影响实验 DHCPserver 网关以及DHCP中继 ...

  6. centos7 搭建WEB服务器

    centos7 搭建WEB服务器 2017年09月17日 09:44:50 逝然1994 阅读数:18321 标签: centosapacheweb服务器 更多 个人分类: centos服务器简单配置 ...

  7. 如何在windows server2016搭建DHCP服务器

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分 ...

  8. centos7搭建svn服务器及客户端设置

    centos7搭建svn服务器及客户端设置 centos7貌似预装了svn服务(有待确认),因此我们直接启动该服务即可 一.svn服务端配置(服务器IP假设为192.168.100.1) 步骤1:创建 ...

  9. centos6.7搭建DHCP服务器

    centos6.7搭建DHCP服务 2017-03-24 09:47:16 系统环境: centos6.7 安装之前首先使用rpm –qa | grep dhcp查看系统中是否已安装了dhcp软件包. ...

随机推荐

  1. 【mysql】创建索引

    一.联合唯一索引 项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:t_aa 表中有aa,bb两个字段,如果不希望有2条 ...

  2. day12Flume、azkaban、sqoop

    1.PS:Hive中好少有update这个方法,因为他主要是用来批量数据的处理分析. 2.PS:软连接和硬连接的区别 软连接就是我们普通和Windows系统一样的快捷方式,她也是一个文件 硬连接就是他 ...

  3. tomcat部署项目(war文件)

    首先配置jdk环境 下载jdk 例如,我将jdk安装在d盘jdk目录下 配置系统环境 新建系统变量JAVA_HOME值为D:\jdk 新建系统变量CLASS_HOME值为 .%JAVA_HOME%\l ...

  4. 一不小心把win10的秘钥卸载了解决方法

    我遇到的第一个问题是Win10家庭版激活失败提示错误代码0xC004C003 然后我百度后看到一个解决方法是卸载秘钥然后再输入秘钥的,于是我执行了slmgr.vbs /upk,发现win10秘钥被卸载 ...

  5. IT痴汉的工作现状11-程序猿的烦恼

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lincyang/article/details/25535181         痴汉们事实上是非常 ...

  6. 持续集成--Jenkins--1

    持续集成之Jenkins安装部署   1.安装JDK Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK. [root@l ...

  7. 编译opencv python

    1, 下载并且安装python2.7 + numpy 2,运行cmakegui打开opencv.应该要显示如下信息: Python 2: Interpreter: C:/Python27/python ...

  8. [转]HTML 简介

    HTML 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  9. opengl 几何着色器

    绘制4条线段 #define GLEW_STATIC #include <GL/glew.h> #include <GLFW/glfw3.h> #include "S ...

  10. tcpdump过滤某个端口

    一般我们使用Tcpdump时都是使用: Java代码   tcpdump -i ethx      www.2cto.com   下面这条命令就是查看80端口的访问量,进行排序,取前20位    Ja ...