3、DHCP 网络服务 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

3、DHCP 网络服务

发表时间:2020-10-18

发布人:葵宇科技

浏览次数:52

3.1 DHCP 简介

DHCP(Dynamic Host Configuration Protocol:动态主机配置协议)是一个工作在应用层的局域网网络协议,数据传输时使用 UDP 不可靠传输协议工作,通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配网络资源,使网络环境中的主机能动态的获得 IP 地址、Gateway地址、DNS 服务器地址等信息,并能够提升地址的使用率。

3.2 DHCP 工作原理(租约四部曲+续租)

在这里插入图片描述

3.2.1 DHCP 客户端进行 IP 请求

当一个 DHCP 客户机启动时,会自动将自己的 IP 地址配置成 0.0.0.0,由于使用 0.0.0.0 不能进行正常通信,所以客户机就必须通过 DHCP 服务器来获取一个合法的地址。由于客户机不知道 DHCP 服务器的 IP 地址,所以**它使用 0.0.0.0 的地址作为源地址,使用 255.255.255.255 作为目标地址。使用 UDP 67 端口作为目的端口来广播请求 IP 地址信息。**广播信息 DHCP Discover 中包含了 DHCP 客户机的 MAC 地址和计算机名,以便使用 DHCP 服务器能确定是哪个客户机发送的请求。

3.2.2 DHCP 服务器相应请求

当 DHCP 服务器接收到客户机请求 IP 地址的信息时,它就在自己的 IP 地址池中查找是否有合法的 IP 地址提供给客户机。如果有,DHCP 服务器就将此 IP 地址做上标记,加入到 DHCP OFFER 的消息中,然后 DHCP 服务器就广播一则包括下列信息的 DHCP OFFER 消息。

DHCP 客户机的 MAC 地址:DHCP 服务器提供的合法 IP 地址;子网掩码;默认网关(路由);租约的期限;DHCP 服务器的IP地址-MAC
因为DHCP 客户机还没有 IP 地址,所以 DHCP 服务器使用自己的 IP 地址作为源地址,使用 255.255.255.255 作为目标地址,使用 UDP 68 端口作为源端口来广播 DHCP OFFER信息。

3.2.3 DHCP 客户机选择 IP

DHCP 客户机从接收到的第一个 DHCP OFFER 消息中选择 IP 地址,发出 IP 地址的 DHCP 服务器将该地址保留,这样该地址就不能提供给另一个 DHCP 客户机。当客户机从第一个 DHCP 服务器接收 DHCP OFFER 并选择IP地址后,DHCP 租约的第三个过程发生。客户机将DHCP REQUEST 消息光波导所有的 DHCP 服务器,表明它接收提供的内容。DHCP REQUEST 消息包括为客户机提供IP 配置的服务器的服务表示(IP地址)。DHCP 服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供IP地址,如果那些 DHCP OFFER 被拒绝,则 DHCP 服务器会取消提供并保留其 IP 地址以用于下一个 IP 租约请求。

在客户机选择 IP 的过程中,虽然客户机选择了 IP 地址,但是还没有配置 IP 地址,而在一个网络中可能有几个 DHCP 服务器,所以客户机仍然使用 0.0.0.0 的地址作为源地址,使用 255.255.255.255 作为目标地址,使用 UDP 67 端口作为目标的端口来广播 DHCP REQUEST 信息。

3.2.4 DHCP 服务器确认租约

服务确认租约,也称为 DHCPACK/DHCPNAK。

DHCP 服务器接收到 DHCPREQUEST 消息后,以 DHCPACK 消息的形式向客户机广播成功的确认,该消息包含有IP地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的 DHCPACK 消息,所以服务器仍然使用自己的IP地址作为源地址,使用 UDP67 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP68 端口作为目的端口来广播DHCPACK 信息。当客户机收到 DHCPACK 消息时,它就配置了IP地址,完成了TCP/IP的初始化。

3.2.5 DHCP 客户机续租

在这里插入图片描述

DHCP 客户机会在租期过去50%的时候,直接向其提供IP地址的DHCP 服务器发送DHCP REQUEST 消息包。如果客户机接收到该服务器回应的 DHCP ACK 消息包,客户机就根据包中所提供的新的租期以及其它已经更新的 TCP/IP 参数,更新自己的配置,IP 租用更新完成。如果没有收到该服务器的恢复,则客户机继续使用现有的IP地址,因为当前租期还有50%。

如果在租期过去50%的时候还没有更新,则DHCP客户机将在租期过去87.5%的时候在此向其提供IP地址的DHCP服务器联系。如果还不成功。到租约的100%时候,DHCP 客户机必须放弃这个IP地址,重新申请。如果此时无DHCP 服务器可用,DHCP 客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。

3.3 DHCP 服务搭建

3.3.1 环境准备

主机名服务IPtest1dhcp 客户端??test2dhcp 服务端192.168.117.131
  • 两台主机,网络为 nat 模式
  • 关闭防火墙
	iptables -F
	setenforce 0
  • 注:如果您用的是 VMware 虚拟机,还请关闭虚拟网络编辑器的 DHCP 功能

3.3.2 DHCP 相关信息

  • 软件名
	dhcp:DHCP 服务软件包
	dhcp-common:DHCP 命令软件包
  • 服务名
	dhcpd:DHCP 服务名
	dhcrelay:DHCP 中继服务名
  • 端口号
	udp 67:客户端的目标端口,用来向服务端请求 DHCP
	udp	68:服务端的源端口,用来向客户端回复数据包
  • 配置文件
	/etc/dhcp/dhcpd.conf:默认为空文件,需要导入模板文件
	/usr/share/doc/dhcp-4.*.*/dhcp.conf.sample:DHCP 的模板配置文件
	/etc/sysconfig/shcrelay:中继配置文件

3.3.3 DHCP 配置文件详解

subnet 10.5.5.0 netmask 255.255.255.224 {
#声明要分配的网段和子网掩码
  range 10.5.5.26 10.5.5.30;
#声明可用的IP地址
  option domain-name-servers ns1.internal.example.org;
#设置DNS域
  option domain-name "internal.example.org";
#设置DNS服务器地址
  option routers 10.5.5.1;
#默认网关的地址
  option broadcast-address 10.5.5.31;
#广播地址
  default-lease-time 600;
#默认租约(s)
  max-lease-time 7200;
#最大租约(s)
}
host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address fantasia.fugue.com;
}
#给某个主机设置固定的IP地址

3.4 DHCP 实验部署

3.4.1 DHCP 基本功能

#查看 dhcp 和 dhcp-common rpm包有没有安装
	[root@test2 ~]# rpm -q dhcp
	未安装软件包 dhcp 
	[root@test2 ~]# rpm -q dhcp-common
	dhcp-common-4.2.5-68.el7.centos.1.x86_64
#安装 DHCP
	[root@test2 ~]# yum install -y dhcp
#生成配置文件:将模板文件粘贴到配置文件
	[root@test2 ~]# \cp -af /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#修改配置文件
#将配置文件的前几个 subnet 声明注释掉,修改最后一个 subnet
	[root@test2 ~]# vim /etc/dhcp/dhcpd.conf 
	subnet 192.168.117.0 netmask 255.255.255.0 {
	#dhcp 服务器所在网段
	  range 192.168.117.200 192.168.117.210;
	#  option domain-name-servers ns1.internal.example.org;
	#  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;
	}
#重启 dhcp 服务
	[root@test2 ~]# systemctl restart dhcpd
DHCP 功能测试
#另一台主机开启 IP 自动获取功能
	[root@test1 ~]# nmtui
  • 编辑连接 ---- 回车键
    在这里插入图片描述
  • 网卡名 ens33 ---- 回车键
    在这里插入图片描述
  • 光标移动到“手动” ---- 按回车键改为“自动”
    在这里插入图片描述
  • 光标下移到“确定” ---- 按回车键,完成配置
    在这里插入图片描述
#重启网卡并查看IP
	[root@test1 ~]# systemctl restart network
	[root@test1 ~]# ip a
客户端成功获取服务端地址池中的 IP

在这里插入图片描述

DHCP 服务端查看 IP 租约日志
[root@test2 ~]# tail -10 /var/log/messages 
Oct 14 00:04:34 test2 dhcpd: ns2.example.org: host unknown.
Oct 14 00:04:34 test2 dhcpd: rtr-239-0-1.example.org: host unknown.
Oct 14 00:04:34 test2 dhcpd: rtr-239-0-2.example.org: host unknown.
Oct 14 00:04:34 test2 dhcpd: DHCPACK>(test1) via ens33
Oct 14 00:08:29 test2 dhcpd: DHCPREQUEST for 192.168.117.200 from 00:0c:29:80:3b:35 (test1) via ens33
Oct 14 00:08:29 test2 dhcpd: ns1.example.org: host unknown.
Oct 14 00:08:29 test2 dhcpd: ns2.example.org: host unknown.
Oct 14 00:08:29 test2 dhcpd: rtr-239-0-1.example.org: host unknown.
Oct 14 00:08:29 test2 dhcpd: rtr-239-0-2.example.org: host unknown.
Oct 14 00:08:29 test2 dhcpd: DHCPACK>(test1) via ens33

3.4.2 固定地址分配

#获取客户机的 mac 地址
	[root@test1 ~]# ip a | awk 'NR==8 {print $2}'
	00:0c:29:80:3b:35
#在实验3.4.1 的基础上,编辑 DHCP 服务器的配置文件并重启服务
	[root@test2 ~]# vim /etc/dhcp/dhcpd.conf
	host fantasia {
	  hardware ethernet 00:0c:29:80:3b:35;
	  #客户端网卡 mac 地址
	  fixed-address 192.168.117.205;
	  #指定客户端 IP
	} 
	[root@test2 ~]# systemctl restart dhcpd
#重启 DHCP 客户机的网卡并查看IP
	[root@test1 ~]# systemctl restart network
客户端成功获取服务端地址池中的指定 IP:192.168.117.205

在这里插入图片描述

DHCP 服务端查看 IP 租约日志
[root@test2 ~]# tail -10 /var/log/messages 
Oct 14 22:00:45 test2 dhcpd: ns2.example.org: host unknown.
Oct 14 22:00:45 test2 dhcpd: rtr-239-0-1.example.org: host unknown.
Oct 14 22:00:45 test2 dhcpd: rtr-239-0-2.example.org: host unknown.
Oct 14 22:00:45 test2 dhcpd: DHCPOFFER>for 192.168.117.205.
Oct 14 22:00:45 test2 dhcpd: Remove host declaration fantasia or remove 192.168.117.205
Oct 14 22:00:45 test2 dhcpd: from the dynamic address pool for 192.168.117.0/24
Oct 14 22:00:45 test2 dhcpd: DHCPREQUEST for 192.168.117.205 (192.168.117.131) from 00:0c:29:80:3b:35 via ens33
Oct 14 22:00:45 test2 dhcpd: DHCPACK alt="在这里插入图片描述" width="600" height="400" />

实验环境准备

准备三台服务器并处于同一网络模式,一个 DHCP 服务器,两个客户端

主机名服务IPdhcp-client1DHCP 客户端??dhcp-client2DHCP 客户端??dhcp-serverDHCP 服务端192.168.117.2
实验步骤
#设置 DHCP 服务器的单臂路由所需子网卡
	[root@dhcp-server ~]# cd /etc/sysconfig/network-scripts/
	[root@dhcp-server network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
#编辑这个文件修改网卡名和 IP 地址
	[root@dhcp-server network-scripts]# vim ifcfg-ens33:1
	NAME=ens33
	DEVICE=ens33:1
	ONBOOT=yes
	BOOTPROTO=none
	IPADDR="192.168.100.132"
	NETMASK=255.255.255.0
	GATEWAY=192.168.117.2
	DNS1=192.168.117.2
#重启网卡并查看IP
	[root@dhcp-server network-scripts]# systemctl restart network
	[root@dhcp-server network-scripts]# ip a
	1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 group default qlen 1000
    link/ether 00:0c:29:05:c5:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.117.132/24 brd 192.168.117.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.132/24 brd 192.168.100.255 scope global noprefixroute ens33:1
    #子 IP 配置成功
       valid_lft forever preferred_lft forever
#开启内核路由转发功能
	[root@dhcp-server ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
#刷新内核参数
	[root@dhcp-server ~]# sysctl -p
	net.ipv4.ip_forward = 1
#安装 DHCP 服务
	[root@dhcp-server ~]# yum install -y dhcp
#生成配置文件
	[root@dhcp-server ~]# \cp -af /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
#修改配置文件
	[root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf 
	shared-network 100-117 {
	  subnet 192.168.117.0 netmask 255.255.255.0 {
	    option routers 192.168.117.132;
	    range 192.168.117.10;
	  }
	  subnet 192.168.100.0 netmask 255.255.255.0 {
	    option routers 192.168.100.132;
	    range 192.168.100.10 192.168.100.20;
	  }
	}
#重启 DHCP 服务
	[root@dhcp-server ~]# systemctl restart dhcpd
#dhcp 客户端开启 IP 自动获取功能(详见:3.4.1)
#dhcp-client1 重启网卡,并查看IP
	[root@dhcp-client1 ~]# ifdown ens33;ifup ens33
	成功断开设备 'ens33'。
	连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)

在这里插入图片描述

#dhcp-client2 重启网卡,并查看IP
	[root@dhcp-client2 ~]# ifdown ens33;ifup ens33
	成功断开设备 'ens33'。
	连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)

在这里插入图片描述

#测试两个客户端能否通信
[root@dhcp-client1 ~]# ping 192.168.117.10
PING 192.168.117.10 (192.168.117.10) 56(84) bytes of data.
64 bytes from 192.168.117.10: icmp_seq=1 ttl=64 time=0.645 ms
64 bytes from 192.168.117.10: icmp_seq=2 ttl=64 time=0.330 ms
64 bytes from 192.168.117.10: icmp_seq=3 ttl=64 time=0.393 ms
64 bytes from 192.168.117.10: icmp_seq=4 ttl=64 time=0.366 ms	

3.4.4 DHCP 中继

DHCP 中继介绍

DHCP Relay(DHCPR)中继是一个小程序,可以实现在不同子网和物理网段之间处理和转发 dhcp 信息的功能。
在这里插入图片描述

环境准备(VMware 虚拟机)
主机名服务网络连接模式IPdhcp-serverDHCP 服务端VMnet8192.168.117.130routerDHCP 中继VMnet8 + VMnet9192.168.117.131 + 192.168.200.100dhcp-client外网客户端VMnet8 + VMnet9??
关闭防火墙(……略……)
VMware 虚拟网络配置
  • 打开虚拟网络编辑器,添加虚拟网段 VMnet8 和 VMnet9,关闭 DHCP 功能
    在这里插入图片描述
    在这里插入图片描述
DHCP 服务器网络配置

在这里插入图片描述

DHCP 中继网络配置
  • DHCP 中继端在添加一块网络适配器,网络分别处于 VMnet8 和 VMnet9
    在这里插入图片描述
外网客户端网络配置
  • dhcp-client 端在添加一块网络适配器,网络分别处于 VMnet8 和 VMnet9
    在这里插入图片描述
配置 DHCP 服务端
#将DHCP服务器的网关地址改为为DHCP中继的 IP:192.168.117.131(VMnet8 的IP地址)
	[root@dhcp-server ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
	GATEWAY=192.168.117.131
#安装 DHCP 服务
	[root@dhcp-server ~]# yum install -y dhcp
#修改配置文件
	[root@dhcp-server ~]# \cp -af /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
	[root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf 
	#生明两个 subnet,其他配置可以不做操作或删除
	subnet 192.168.117.0 netmask 255.255.255.0 {
	  range 192.168.117.200 192.168.117.250;
	  option routers 192.168.117.131;
	  #路由IP为 DHCP 中继服务器 VMnet8 IP
	}
	subnet 192.168.200.0 netmask 255.255.255.0 {
	  range 192.168.200.200 192.168.200.250;
	  option routers 192.168.200.100 ;
	  #路由IP为 DHCP 中继服务器 VMnet9 IP
	}
#重启 DHCP 服务和网卡
	[root@dhcp-server ~]# systemctl restart dhcpd network
配置 DHCP 中继
#配置网络(在原有网络基础上配置 192.168.200 段的 IP)
	[root@router network-scripts]# cd /etc/sysconfig/network-scripts/
	[root@router network-scripts]# \cp -af ifcfg-ens33 ifcfg-ens37
	[root@router network-scripts]# vim ifcfg-ens37
	#只保留以下配置文件即可
	DEVICE=ens37
	NAME=ens37
	ONBOOT=yes
	BOOTPROTO=none
	IPADDR="192.168.200.100"
#重启网络网卡
	[root@router network-scripts]# systemctl restart network
#查看 IP 如下

在这里插入图片描述

#安装 DHCP 服务
	[root@router network-scripts]# yum install -y dhcp
#开启 DHCP 中继功能,指定 DHCP 服务器的地址
	[root@router ~]# dhcrelay -i ens33 -i ens37 192.168.117.130
	Dropped all unnecessary capabilities.
	Internet Systems Consortium DHCP Relay Agent 4.2.5
	Copyright 2004-2013 Internet Systems Consortium.
	All rights reserved.
	For info, please visit https://www.isc.org/software/dhcp/
	Listening>#开启内核路由转发功能
	[root@router network-scripts]# vim /etc/sysctl.conf 
	net.ipv4.ip_forward=1
#刷新内核参数
	[root@router network-scripts]# sysctl -p
	net.ipv4.ip_forward = 1
配置外网客户端
  • IP 改为自动获取(详:3.4.1)
[root@dhcp-client ~]# nmtui
  • 查看主机 IP
[root@dhcp-client ~]# ip a
  • IP 地址获取成功
    在这里插入图片描述
IP 地址获取失败可能原因
  • 请检查您的网络适配器设置。
  • 请检查防火墙是否关闭。
  • 检查 dhcp-sever 和 router 主机的网络连通性,注意 dhcp-server 网关地址指向。
  • 检查 dhcp-server 中 DHCP 服务配置文件。