• Debian9.5系统DHCP服务器ISC DHCP软件配置说明


    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地址。


  • 相关阅读:
    重新学习MySQL数据库开篇:数据库的前世今生
    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
    测试小鲸鱼
    golang
    技术篇
    请求报文和响应报文
    编程
    测试
    PHP
    centos7.1 从源码升级安装Python3.5.2
  • 原文地址:https://www.cnblogs.com/pipci/p/10495411.html
Copyright © 2020-2023  润新知