DHCP服务原理简介与实战

admin 2022年12月11日 560次浏览

主机获取网络配置的方式

  • 静态配置
  • 动态配置
    • bootp:MAC 与 IP 地址一一对应
    • DHCP:增强的bootp,且是动态的

1、DHCP工作原理

DHCP 动态主机配置协议,其使用 UDP 协议,是基于C/S 模式的。DHCP server 使用 67/UDP,客户端的分别使用 68/udp(ipv4)和 546/udp(ipv6)

1.1、DHCP的工作过程

  • 客户端向服务器端发起 discover 请求(广播报文)
  • 服务器向客户机发送 offer 与一个没有使用的 ip 地址
  • 客户机一条request 报文,回应选择哪一台 DHCP 服务器的 ip 地址(广播报文)
  • 被选中的 DHCP 服务器给客户机发送一条 ACK 确认

1.2、DHCP服务续租

  • 50%:租赁时间达到50%时就来续租,向原来的 DHCP 服务器重新发送 DHCP request 请求,如果 DHCP 服务器没有拒绝的理由,则回应 DHCP ack 信息。当客户端收到应答信息后,就重新开始计算租约时间
  • 87.5%:如果之前的 DHCP 服务器没有回应续租请求,等到租约期的 7/8 时,客户端会再次发送广播请求

1.3、跨网段DHCP服务

  • 使用 DHCP 中继代理
  • 使用支持 RFC1542 的路由器

在组建跨网段备份服务器时,可以使用 80/20 原则,即在本地 DHCP 服务器地址池中配置 80% 的 ip 地址,在远端备份服务器上配置 20% 的 ip 地址

2、DHCP实现

DHCP 服务使用的相关软件

  • dhcp(centos7) 或 dhcp-derver(centos8)
  • dnsmasq:可提供 DHCP 和 DNS 功能

2.1、DHCP相关文件

DHCP server 相关文件

  • /usr/sbin/dhcpd:DHCP服务主程序
  • /etc/dhcp/dhcpd.conf:DHCP 服务配置文件
  • /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example:DHCP 服务配置范例文件
  • /usr/lib/systemd/system/dhcpd.service:DHCP 服务文件
  • /var/lib/dhcpd/dhcpd.leases:地址分配记录

DHCP client 相关文件

2.2、配置DHCP服务

  • 安装DHCP

    [root@test-host ~]# yum install dhcp -y
    

    **注意:**安装完毕 dhcp 软件包后,无法直接启动服务,需要先对服务进行配置后,才可正常启动服务

  • 配置DHCP

    [root@test-host ~]# vim /etc/dhcp/dhcpd.conf
    option domain-name "test.com";
    option domain-name-servers 61.139.2.69, 114.114.114.114;
    
    default-lease-time 86400;
    max-lease-time 172800;
    
    log-facility local7;
    
    subnet 192.168.137.0 netmask 255.255.255.0 {
      range 192.168.137.100 192.168.137.200;
      option routers 192.168.137.1;
    }
    
  • 查看dhcpd地址分配记录

    [root@test-host ~]# tail -f /var/lib/dhcpd/dhcpd.leases
    lease 192.168.137.101 {
      starts 0 2022/12/11 13:24:04;
      ends 0 2022/12/11 13:26:04;
      tstp 0 2022/12/11 13:26:04;
      cltt 0 2022/12/11 13:24:04;
      binding state free;
      hardware ethernet 00:0c:29:0c:e0:cb;
    }
    # 此处的时间为UTC时间 
    
  • 给主机分配固定ip

    [root@test-host ~]# vim /etc/dhcp/dhcpd.conf
    host test_host {
      hardware ethernet 00:0c:29:0c:e0:cb;
      fixed-address 192.168.137.10;
    }
    

    分配固定 ip 时,不会在 /var/lib/dhcpd/dhcpd.leases 中记录,可以通过 /var/log/messages 日志查看相关信息

    [root@test-host ~]# tail -f /var/log/messages
    Dec 11 21:28:09 test-host dhcpd: DHCPREQUEST for 192.168.137.110 from 00:0c:29:0c:e0:cb via ens33: lease 192.168.137.110 unavailable.
    Dec 11 21:28:09 test-host dhcpd: DHCPNAK on 192.168.137.110 to 00:0c:29:0c:e0:cb via ens33
    Dec 11 21:28:09 test-host dhcpd: DHCPDISCOVER from 00:0c:29:0c:e0:cb via ens33
    Dec 11 21:28:09 test-host dhcpd: DHCPOFFER on 192.168.137.10 to 00:0c:29:0c:e0:cb via ens33
    Dec 11 21:28:09 test-host dhcpd: DHCPREQUEST for 192.168.137.10 (192.168.137.100) from 00:0c:29:0c:e0:cb via ens33
    Dec 11 21:28:09 test-host dhcpd: DHCPACK on 192.168.137.10 to 00:0c:29:0c:e0:cb via ens33
    

2.3、其他配置

  • next-server:提供引导文件的服务器ip地址
  • filename:引导文件名称
subnet 192.168.137.0 netmask 255.255.255.0 {
  range 192.168.137.100 192.168.137.200;
  option routers 192.168.137.1;
  # TFTP服务器
  next-server 192.168.137.100;
  # boot loader启动文件名称
  filename "pxelinux.0";
}