zoukankan      html  css  js  c++  java
  • DHCP服务

    DHCP简介

    DHCP(Dynamic Host Configuration Protocol)即动态主机设置协议,是一个局域网的网络协议,使用UDP协议工作;

    主要用途:用于内部网或网络服务供应商自动分配IP地址 ;

    DHCP服务属于 C/S 模式;

    DHCP工作流程

    DHCP Client发现阶段:即DHCP client寻找DHCP server的过程,对应于DHCP client发送DHCP Discovery,因为DHCP server对应于DHCP client是未知的,所以DHCP client发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。

    注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址配置本机地址;169.254.0.0/16是windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。

    DHCP Server 提供阶段:即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息。

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

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

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

    Client更新租约:DHCP DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

    简约图

    DHCP服务器部署

    在VMware虚拟机上面演示操作;

    第一步:下载dhcp

    ╭─root@localhost.localdomain ~  
    ╰─➤  yum install dhcp -y
    
    

    第二步:编辑配置文件

    ╭─root@localhost.localdomain ~  
    ╰─➤  vim /etc/dhcp/dhcpd.conf
    
    ...   #文件内容
    subnet 192.168.80.0 netmask 255.255.255.0 {         #网段和掩码
      range 192.168.80.1 192.168.80.20;        #IP池
      default-lease-time 600;       #最小租约
      max-lease-time 7200;     #最大租约
    }
    ...
    
    

    第三步:重启dhcpd

    ╭─root@localhost.localdomain ~  
    ╰─➤  systemctl restart dhcpd
    
    

    第四步:客户端测试

    准备工作:关闭VMware的dhcp服务

    测试方法:再开一台虚拟机添加NET模式网络适配器,查看该适配器IP

    ╭─root@localhost.localdomain ~  
    ╰─➤  ip a        #7、8、9、10、11为新添加的网络适配器
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:12 brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.3/24 brd 192.168.80.255 scope global ens33
           valid_lft forever preferred_lft forever
    7: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:26 brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.5/24 brd 192.168.80.255 scope global dynamic ens38
           valid_lft 533sec preferred_lft 533sec
        inet6 fe80::34a1:339c:60c9:22b9/64 scope link 
           valid_lft forever preferred_lft forever
    8: ens39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:3a brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.7/24 brd 192.168.80.255 scope global dynamic ens39
           valid_lft 535sec preferred_lft 535sec
        inet6 fe80::782b:5a7d:7e26:7817/64 scope link 
           valid_lft forever preferred_lft forever
    9: ens40: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:4e brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.8/24 brd 192.168.80.255 scope global dynamic ens40
           valid_lft 537sec preferred_lft 537sec
        inet6 fe80::1c7e:4a1a:3b6e:c5f3/64 scope link 
           valid_lft forever preferred_lft forever
    10: ens41: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:44 brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.9/24 brd 192.168.80.255 scope global dynamic ens41
           valid_lft 539sec preferred_lft 539sec
        inet6 fe80::c8f8:fc6a:bc01:698/64 scope link 
           valid_lft forever preferred_lft forever
    11: ens42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:7f:e5:30 brd ff:ff:ff:ff:ff:ff
        inet 192.168.80.6/24 brd 192.168.80.255 scope global dynamic ens42
           valid_lft 540sec preferred_lft 540sec
        inet6 fe80::e9ca:4e37:8532:e6a3/64 scope link 
           valid_lft forever preferred_lft forever
    
  • 相关阅读:
    Tsinghua dsa mooc pa1
    sctf pwn400
    sctf pwn300
    Calendar的add()方法介绍
    SQL语句基础知识
    oracle数据库中的表设置主键自增
    SQL to_char,to_date日期字符串转换问题
    SQL where 1=1的作用
    SVN使用教程总结
    由多次使用Statement实例引起的Result set already closed异常的解决方案
  • 原文地址:https://www.cnblogs.com/du-z/p/10902562.html
Copyright © 2011-2022 走看看