Dhcp
获取 IP 的方式 静态指定 动态获取 bootp : boot protocol MAC 与 IP 一一对应 这种方法会绑定 MAC 地址,所以在网络中会产生浪费 IP 的现象 dhcp :增强的 bootp,动态 对 IP 的租用会有租期,当主机一段时间不使用或者租期到期后 DHCP 就会回收 IP 地址,这种分配地址的方式就是动态分配 DHCP DCHP 的工作原理 DHCP 是 UDP 协议,是一个应用层协议,C/S 模式,DHCP server 使用 67/udp、DHCP client 68/udp 主要用途 用于内网网络和网络服务供应商自动分配 IP 地址给用户 用于内部网络管理员作为对所有电脑集中管理的手段 自动化安装系统 解决 IPv4 不足的问题 DHCP 的通信过程 Clinet(客户机)接受回应消息使用的是 67/udp,Server(服务器接收)Client 请求消息的是 68/udp 端口,分为 6 个步骤 Clinet 发现阶段:首先是 Clinet 默认没有 IP 地址会发送 Discover(Clinet 请求 IP)的 IP 为 0.0.0.0,255.255.255.255 的广播报文,网络上的所有主机都会收到 Discover 的报文,只有 server 会回应报文 Server 响应阶段:server 通过 68 端口收到 client 收到请求 IP 的报文后,会通过解析报文来分析自己的 dhcp.conf 文件,来查找有没有相应合适的 IP 地址,如果有的话 Server 会给 Client 发送 offer 报文,来告诉 Client 有何时的资源,可以提供 DHCP 服务 Client 请求使用阶段:Client 收到 offer 报文后,知道本网段有 Server 可以提供 DHCP 服务,所以 Client 就会发送一个 request 的请求报文,向 Server 请求子网掩码,IP 地址,网关,DNS 等信息,以便登录网络 Server 确定使用阶段:Server 收到 Client 发送的 request 报文后,确定要为 Client 提供 IP 地址等信息,所以就向 Client 回应一个 Option 的报文来告诉 CLient 使用的 IP,然后 Client 就可以使用该 IP 了 Server 会把该 IP 与 Client 的 MAC 地址绑定,并且取消之前为 Client 提供的 IP 地址服务 Client 重启网络服务:重启后会发送一个含有 Server 之前分配过的 IP 地址的 request IP请求报文,DHCP 收到后会先查看自己的服务器中有没有主机使用该 IP,如果没有使用就会给 Client 回应一个 ACK 报文表示 Client 可以继续使用此 IP 地址,如果正在使用就会给 Client 重新分配一个没有正在使用的 IP 地址 Client 的续约过程:每个 IP 地址都会有定义的租约,如果租约小于 50% 就需要更新租约,Client 会发送一个 renew 的报文来请求更新租约,如果 dhcp server 没有回应,那么在 1/8 的租约时 Client 会寻找其他的 dhcp server DHCP 的租期和限制 使用 DHCP 时必须要基于本地的 IP 网段来设置,且分发的 IP 中必须有自己的网段 先到先得的原则 长租期与短租期 长租期:IP 相对稳定,网络资源消耗较少,但是浪费 IP 资源 短租期:IP 相对比较不稳定,网络资源消耗较多(因为需要不停的发送请求续租)但是 IP 地址可以得到充分利用,可以实现较少 IP 为较多的 IP 分发地址,因为如果主机过多,肯定会有主机会停机或者是租期过期,不在工作的主机 DHCP 实现 DHCP 实现软件 bash dhcp dnsmasq 小型服务软件,可以提供 dhcp 和 dns 功能,应用在小型机 DHCP 相关文件组成 bash /usr/sbin/dhcpd dhcp 的执行程序 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example dhcp 的备份文件 /var/lib/dhcpd/dhcpd.leases dhcp 分发 IP 的记录日志 /etc/dhcp/dhcpd.conf dhcp 的主配置文件 /usr/lib/systemd/system/dhcpd.service dhcp 的 service 启动管理文件 dhcp-client 客户端包 bash /usr/sbin/dhclient #客户端程序 /var/lib/dhclient #自动获取的IP信息 windows 工具 bash ipconfig /release 释放 IP 地址 ipconfig /renew 获取新的 IP 地址 DHCP 服务器配置 bash 1. dhcp 配置文件介绍 2. 实现 dhcp 分发 IP 地址 3. dhcp 特殊用法,自动安装 IP 分发 bash `1. dhcp 配置文件介绍` option domain-name "example.org"; # 定义在 /etc/hosts 文件中 serach 解析的名称,当找不到目标地址会自动填充 serach option domain-name-servers ns1.example.org, ns2.example.org; # 设置解析的 dns 地址 default-lease-time 600; # 租期时间 max-lease-time 7200; # 最大租期时间 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 600; # 租期时间 max-lease-time 7200; # 最大租期时间 next-server 100.0.0.100; # 定义下载 filename 字段定义文件的服务器 IP 地址 filename "pxelinux.0"; # 启动网卡来获取 IP 地址的文件 } host fantasia { # 主机名称 hardware ethernet 08:00:07:26:c0:a5; # 绑定主机的网卡 MAC 地址 fixed-address fantasia.fugue.com; # 绑定的 IP 地址 } bash `2. 实现 dhcp 分发 IP 地址` (1) 实现 dhcp 地址的自动分发 # 服务端配置 [root@centos7 dhcp]# cat dhcpd.conf option domain-name "dingchen.com"; option domain-name-servers 100.0.0.2; default-lease-time 99999; max-lease-time 7200; subnet 100.0.0.0 netmask 255.0.0.0 { range 100.0.0.100 100.0.0.200 ; option routers 100.0.0.2 ; } # 客户端获取 IP 地址 [root@DNS ~]# dhclient -d # 服务端查看分发日志 lease 100.0.0.102 { starts 4 2020/09/10 09:45:25; ends 4 2020/09/10 11:45:25; cltt 4 2020/09/10 09:45:25; binding state active; next binding state free; rewind binding state free; hardware ethernet 00:0c:29:e3:b7:94; uid "\001\000\014)\343\267\224"; client-hostname "DNS"; } (2) 实现绑定 MAC 的地址分发 [root@centos7 dhcp]# cat dhcpd.conf option domain-name "dingchen.com"; option domain-name-servers 100.0.0.2; default-lease-time 99999; max-lease-time 7200; # log-facility local7; subnet 100.0.0.0 netmask 255.0.0.0 { range 100.0.0.100 100.0.0.200 ; option routers 100.0.0.2 ; } host fantasia { hardware ethernet 00:0c:29:e3:b7:94; fixed-address 100.0.0.201; } bash `3. dhcp 特殊用法,pxe 自动安装 IP 分发` [root@centos7 dhcp]# cat dhcpd.conf option domain-name "dingchen.com"; option domain-name-servers 100.0.0.2; default-lease-time 99999; max-lease-time 7200; # log-facility local7; subnet 100.0.0.0 netmask 255.0.0.0 { range 100.0.0.100 100.0.0.200 ; option routers 100.0.0.2 ; next-server 100.0.0.10; filename "pxelinux.0"; } host fantasia { hardware ethernet 00:0c:29:e3:b7:94; fixed-address 100.0.0.201; }