DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议。是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数, 简单来说, 就是在DHCP服务器上有一个数据库, 存放着IP地址、网关、DNS等参数。 当客户端请求使用时, 服务器则负责将相应的参数分配个客户端,避免客户端手动指定IP地址等。特别是在一些大规模的网络中。客户端数目较多,使用DHCP可以方便对这些机器进行管理,为客户机提供TCP/IP参数配置,如IP地址、网关地址和DNS服务器等,不仅效率高,而且不存在IP地址冲突的情况现在的无线路由器默认都带有DHCP功能,也就是说一个无线路由器同时也是一个DHCP服务器。

一、DHCP有三种机制分配IP地址
1.自动分配方式:DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器租用到IP地址,就可以永久使用该地址。
2.动态分配方式:DHCP服务器给主机指定一个有时间限制的IP地址, 时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3.手工分配方式:客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中, 只有动态分配方式可以重复使用客户端不再需要的地址,下面是DHCP涉及的常见术语:

作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。

二、DHCP协议的工作过程
1.发现阶段:即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播的方式发送DHCP discover 发现信息来寻找DHCP服务器(因为DHCP服务器的IP地址对客户机来说是未知的),由于客户机不知道DHCP服务器的IP地址,所以它使用0.0.0.0的地址作为源地址,使用UDP68端口作为源端口,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息。广播信息中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会作出响应。

2.提供阶段:即DHCP服务器提供IP地址的阶段。在网络中收到DHCP discover发现信息的DHCP服务器都会作出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置信息,因为DHCP客户机还没有IP地址,所以DHCP服务器使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255.255.255.255作为目标地址,使用UDP68端口作为目的端口来广播,通过DHCP offer消息发送给客户端。

3.选择阶段:DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。  如果有多台DHCP服务器向DHCP客户机发来的DHCP offer,客户机只接收第一个收到的DHCP offer,然后它以广播的方式回答一个DHCP request请求信息。该信息中包含它所选定的DHCP服务器请求IP地址的内容。之所以要以广播的方式回答,是为了通知所有的DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。

4.确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP resquest请求后,它便向DHCP客户机发送一个包含它提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,除了DHCP客户机所选择的服务器IP外,其他的DHCP服务器都将收回曾提供的IP地址

5.重新登陆:以后DHCP客户机每次登陆网络时,就不需要再发送DHCP discover发现信息了。而是直接发送包含前一次所分配IP地址的DHCP resquest请求。当DHCP服务器收到这一信息后,它会尝试让客户机继续使用原来的IP并回答一个DHCP ACK确认信息,如果此IP地址无法分配个原来的DHCP客户机时(比如IP分配给其他DHCP客户机使用) ,则DHCP服务器给DHCP客户机回答一个DHCP NACK 否认消息,当原来的DHCP客户机收到此消息后,它就必须重新发送DHCP discover发现信息重新请求新的IP地址。

6.更新租约:DHCP服务器向DHCP客户机出租的IP地址一般都由一个租借期限,期满后DHCP服务器会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送其更新租约的信息。

三、安装DHCP服务软件,Linux用的DHCP软件是Internet系统协会的DHCP服务软件ISC DHCP
--------------------------------------------------------
root@debian:~# apt install  isc-dhcp-server
--------------------------------------------------------

四、配置DHCP服务软件
DHCP的主要配置文件有两个,分别位于 /etc/default/isc-dhcp-server 和 /etc/dhcp/dhcpd.conf。下面要做的就是对这两个文件进行配置。

五、查看本机网络信息,主要查看网络接口。
--------------------------------------------------------
root@debian:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:40:99:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.11/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe40:9919/64 scope link
       valid_lft forever preferred_lft forever
--------------------------------------------------------

六、配置/etc/default/isc-dhcp-server文件
--------------------------------------------------------
root@debian:~# vi /etc/default/isc-dhcp-server
.......                                                    #上面的内容省略
 On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#    Separate multiple interfaces with spaces, e.g. "eth0 eth1".
 INTERFACESv4="enp0s3"              #将监听端口INTERFACESv4修改为上面的网络接口enp0s3  
#INTERFACESv6=""                         #屏蔽监听ipv6
--------------------------------------------------------

七、配置/etc/dhcp/dhcpd.conf文件参数说明
DHCP服务器的配置比较简单,所有的配置集中在/etc/dhcp/dhcpd.conf配置文件中,所有的配置语句可以分为3类:一类是参数,用于表明如何执行任务,是否要执行任务。第二类是声明语句,用来描述网络布局、客户、提供ip地址的策略等。还有一类是发送给客户的选项,实际上是加了option关键字的参数。其中每行开头的‘#’表示注释,而每一行配置最后都要以“;”作为结尾,这很重要。

1.DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户

ddns-update-style :
该参数用来指定DHCP服务器对DNS服务器进行更新时采用的更新类型。有3个类型分别是ad-hoc、interim、none。ad-hoc方式基本上已经不再采用,interim表示DNS互动更新模式,none表示不支持动态更新,一般设置为none。

default-lease-time :
该参数的作用是定义默认的IP地址租约时间,其单位为秒。

max-lease-time :                 
该参数用来指定最大租赁时间长度,单位是秒。上面的是默认租约时间,这个是如果客户要求了租约时间,租约时间如果超过这个值,就以这个值为准,不以客户要求的为准。
 
server-name :
通知DHCP客户服务器名称。

hardware :
指定客户端的硬件接口类型和硬件地址。其格式如下:
hardware ethernet 0:0:c0:5d:bd:95;

fixed-address
指定为客户端分配一个或者多个固定IP地址,该参数只能出现在host声明语句中。如果指定了多个IP地址,那么当客户端启动时,它会被分配到相应子网中的那个IP地址上。

2.DHCP配置文件中的declarations (声明语句):用来描述网络布局、提供客户的IP地址等
 
subnet 语句                                   
该语句用来定义一个作用域。其格式如下:
subnet 网络 子网掩码 {
             
               [参数]
               [选项]
}

range 语句
该语句定义了起始IP和终止IP 提供动态分配IP的范围,如果只指定起始IP地址而没有终止IP地址,则范围只包含一个IP地址,在一个subnet语句中,可以有多个range语句,但是这些range语句所覆盖的IP地址范围不能交叉或者重复。其格式如下:
range 起始IP  终止IP;
 
host 语句
该语句用来定义用户保留地址,其格式如下:
host 主机名 {
     [hardware]
     [fixed-address]
}

这里的主机名可以自己定义,[hardware]参数用来指定需要保留IP地址的客户端的MAC地址,[fixed-address]用来指定分配的固定IP地址。

3. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始

subnet-mask :为客户端设定子网掩码。
domain-name :如果客户端的/etc/resolv.conf里面设置了search参数,这个域名就是对应search参数后面的设置。
domain-name-servers :  为客户端指明DNS服务器IP地址。
host-name :为客户端指定主机名称。
routers :为客户端设定默认网关。:
broadcast-address :为客户端设定广播地址。
ntp-server :为客户端设定网络时间服务器IP地址。
time-offset :为客户端设定和格林威治时间的偏移时间,单位是秒。

注意:如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机名称

八、防火墙
DHCP服务器需要开放入UDP67端口,出UDP68端口。客户端正好相反,或者最直接的是关闭防火墙。

九、配置举例
公司员工的笔记本可以获取的IP地址范围是192.168.0.100到192.168.0.200,子网掩码是255.255.255.0,网关是192.168.0.1,DNS为114.114.114.114,客户端的/etc/resolv.conf里面设置的search参数为pipci.com,默认的IP地址租约时间1小时,最大租赁时间为2小时,为硬件MAC地址0:0:c0:5d:bd:95保留IP地址为192.168.0.188 ,主机名为pipci
1、先备份原有的dhcpd.conf文件,因为里面是范例内容很多不方便看。
------------------------------------------------------------
root@debian:/etc/dhcp# mv -v dhcpd.conf dhcpd.conf.backup
------------------------------------------------------------

2、重新创建dhcpd.conf文件并添加下面的内容。
------------------------------------------------------------
root@debian:/etc/dhcp# vi dhcpd.conf
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name "pipci.com";
option domain-name-servers 114.114.114.114;
default-lease-time 3600;
max-lease-time 7200;
host pipci {
hardware ethernet 00:0c:29:27:c6:12;
fixed-address 192.168.0.188;
}
}
------------------------------------------------------------

3、重启DHCP服务
------------------------------------------------------------
root@debian:/etc/dhcp# systemctl restart isc-dhcp-server.service
------------------------------------------------------------

4、查看DHCP服务
------------------------------------------------------------
root@debian:/etc/dhcp# systemctl status isc-dhcp-server.service
------------------------------------------------------------

十、如果出现问题的可能有以下几种可能:
1. 配置文件有问题。
1.1 内容不符合语法结构,例如,少个分号;
1.2 声明的子网和子网掩码不符合;
2. 主机IP地址和声明的子网不在同一网段。
3. 主机没有配置IP地址。

Debian9.5系统DHCP服务器ISC DHCP软件配置说明的更多相关文章

  1. CentOS-1810系统DHCP服务器ISC DHCP软件配置说明

    DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议.是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...

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

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

  3. 搭建DHCP服务器以及DHCP中继服务器

    一.DHCP服务器   1.首先配置DHCP服务器的IP地址(DHCP服务器网卡桥接在VMnet1)   .配置好IP后重启DHCP服务 3.安装DHCP服务器,在这里我用的是YUM安装的(关于YUM ...

  4. Linux配置DHCP服务器,DHCP中继配置

    配置dhcp服务器 第一步:配置网卡 第二步: 安装dhcp (需要先构建yum仓库,构建yum仓库的方法在之前的博客里有) 编写dhcp.conf文件 进去以后会出现这个内容 需要执行下面的内容将内 ...

  5. (三)Cisco dhcp snooping实例1-单交换机(DHCP服务器和DHCP客户端位于同一VLAN)

    环境:cisco dhcp server和客户端都属于vlan27,dhcp server 接在交换机G0/1,客户端接在交换机的G0/2 cisco dhcp server相关配置 ip dhcp ...

  6. (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)

    试验拓扑 环境:dhcp server和dhcp客户端属于同vlan,但是客户端属于不同的交换机,在L2和L3交换机开启dhcp snooping后得出如下结论 L3交换机的配置 ip dhcp po ...

  7. Debian9.5系统DNS服务器BIND软件配置说明

    DNS的出现的历史 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和W ...

  8. (四)Cisco dhcp snooping实例2-多交换机环境(DHCP服务器和DHCP客户端位于不同VLAN)

    试验拓扑 环境:dhcp server和客户端处于不同网段的情况 dhcp server的配置 no ip routing ip dhcp pool vlan27 network 172.28.27. ...

  9. Linux--NFS和DHCP服务器

     (1) 在网络中,时常需要进行文件的共享,如果都是在Linux系统下,可以使用NFS 来搭建文件服务器,达到文件共享的目的. (2) 在网络管理中,为了防止IP 冲突和盗用,有效的控制IP 资源 ...

随机推荐

  1. java和android文件加密小结

    最近遇到一个文件加密的问题,自己读写的,安全性虽然还可以,但是速度慢,影响体验. Cipher虽然速度相当快,但是android和java有某些api存在不兼容: 问题解决: 方法引用自:https: ...

  2. OracleRef游标

    提到个思考:怎样让游标作为参数传递? 解决这个问题就需要用到 REF Cursor . 1,什么是 REF游标?  动态关联结果集的临时对象.即在运行的时候动态决定执行查询.   2,REF 游标有什 ...

  3. HTML大纲

  4. Python 绘图与可视化 matplotlib(下)

    详细的参考链接:更详细的:https://www.cnblogs.com/zhizhan/p/5615947.html 图像.子图.坐标轴以及记号 Matplotlib中图像的意思是打开的整个画图窗口 ...

  5. JQuery封装ajax的方法

    1.$.post方法 $.post(url[,data][,callback][,type]) url:请求的后台程序地址 data:发送到后台的数据 callback:载入成功时回调函数,该函数参数 ...

  6. Spring 7大功能模块的作用

    1.   Spring 7大功能模块的作用 1)   核心容器(Spring core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系 ...

  7. freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1

    改动etc/raddb下的radiusd.conf文件 找到allow_vulnerable_openssl = no,改动成allow_vulnerable_openssl = yes

  8. 排序(3)---------冒泡排序(C语言实现)

    说到冒泡排序,大一的时候第一次学习这个排序算法,可能大家不知道,"冒泡"在我说的方言里面是吹牛逼的意思. 所以就认为这个排序算法特吹牛逼有木有. 相信大家对全部的排序算法,这个想必 ...

  9. jQuery——map()函数以及它的java实现

    map()函数小简单介绍 map()函数一直都是我觉得比較有用的函数之中的一个,为什么这么说呢? 先来考虑一下.你是否碰到过下面场景:须要遍历一组对象取出每一个对象的某个属性(比方id)而且用分隔符隔 ...

  10. 一个人的旅行 HDU杭电2066【dijkstra算法 || SPFA】

    pid=2066">http://acm.hdu.edu.cn/showproblem.php? pid=2066 Problem Description 尽管草儿是个路痴(就是在杭电 ...