一、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. KMP算法自我理解 和 模板

    字符串   abcd abc abcd abc 匹配串   cdabcd 匹配串的 next  0 0 0 0 1 2: 开始匹配 abcd abc abcd abc cd abc d a,d 匹配失 ...

  2. Python基础( )

    一. 文件修改 f = open("yesterday.txt",'r') f1 = open("yesterday2.txt",'w') for line i ...

  3. struts2 中的数据访问servletAPI

    ActionContext包含其他数据对象,包括值栈     每次请求都会创建一个ActionContext对象 通过ActionContext访问数据 在action中读取  在jsp页面中读取 1 ...

  4. Java基础一(开发环境、注释、关键字、标识符、数据)

    1.Java开发环境搭建2.HelloWorld案例3.注释.关键字.标识符4.数据(数据类型.常量) ###01java语言概述 * A: java语言概述 * a: Java是sun公司开发的一门 ...

  5. Eclipse工具的设置

    1 Eclipse的工作空间和新建工程1.1: 工作空间* 其实就是我们写的源代码所在的目录 1.2: 创建工程(项目)* 右键/Package Explore 空白区/new /Java Proje ...

  6. 数学的语言 化无形为可见 (Keith Devlin 著)

    第一章 数字为何靠的住 (已看) 第二章 心智的模式 (已看) 第三章 动静有数 (已看) 第四章 当数学成型 (已看) 第五章 数学揭开美之本质 (已看) 第六章 当数学到位 (已看) 第七章 数学 ...

  7. egg-init 知识点

    Create a simple type application $ egg-init --type simple [dest]

  8. RedHat如何关闭防火墙

    1.查看防火墙是否已开启 #可以查看到iptables服务的当前状态. service iptables status​ 上图表示防火墙已关闭. 2.关闭防火墙 关闭防火墙的方法为:   1)永久性生 ...

  9. WyBox 7620a 启用第二个串口

    要修改的文件有两个 mt7620a.dtsi MT7620a.dts 1.进入target/linux/ramips/dts/ mt7620a.dtsi 把”disabled”改为”ok”,添加两行 ...

  10. Windows Phone 常用资源

    统计分析: 1. 友盟 http://www.umeng.com SDK: http://www.nuget.org/packages/UmengAnalytics/ 集成文档: http://dev ...