Linux--网络服务--DHCP服务,理论+实验(了解DHCP服务,DHCP工作原理,DHCP服务器的配置,DHCP客户端使用方法,以及DHCP配置实验详解)
- 一:了解DHCP服务
- 二:DHCP的工作原理
- 三:DHCP服务器的配置
- 四:DHCP客户端的使用方法
- 五:DHCP实验
- 5.1:实验目的
- 5.2:实验环境
- 5.3:实验步骤
- 5.3.1:先关闭Linux系统的核心防护功能,和清空防火墙规则,安装dhcp工具包
- 5.3.2:为了实现实验效果将两个虚拟机都绑定到VM1网卡上,仅主机模式,这时VMnet1相当于一个交换机,而centos7作为DHCP服务器,win7作为客户机
- 5.3.3:查看dhcp是否安装成功,修改dhcp配置文件
- 5.3.4:修改网卡配置信息
- 5.3.5:将dhcp-4.2.5文件拷贝到dhcp.conf文件中
- 5.3.6:配置DNS地址8.8.8.8,注意结尾加;其他不需要动
- 5.3.7:配置实验所需的IP地址池和网关
- 5.3.8:查看服务端口,发现DHCP端口没开,图中端口是dns的
- 5.3.9:启动dhcp服务,服务端口号才会开启
- 5.3.10:这时打开同是仅主机模式中的windows7系统,输入ipconfig /renew获取IP地址,发现获取成功
- 5.3.11:这时我们DNS地址宣告子网段,验证优先是执行子网段DNS服务地址还是全局DNS服务地址,再次编辑dhcpd文件,添加子网端的DNS地址为9.9.9.9,保存退出
- 5.3.12:这时切换至win7虚拟机记得先释放地址再重新获取地址,这时我们用ipconfig /all 发现子段宣告成功
- 5.3.13:给win7固定分配一个IP地址,先获取对方的mac地址,我们复制win7系统的MAC地址
- 5.3.14:重启dhcp服务后,再次到win7系统中查看,发现获取成功
- 5.4:实验总结
一:了解DHCP服务
1.1:DHCP概述
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议
- DHCP一般作用在局域网中,若在广域网中使用DHCP,需要在路由器上面配置
- DHCP服务避免了因手动设置IP地址所产生的的错误,同时也避免了把一个IP地址分配给多台工作站所造成的地址冲突。
- DHVP提供了安全、可靠且简单的TCP/IP网络设置,降低了配置IP地址的负担。
1.2:使用DHCP好处
-
Internet的用户数量众多,所以不可能给每个用户固定一个IP地址,同时也为了避免浪费,我们使用DHCP服务来解决这个问题。具有以下好处:
-
减少管理员的工作量
-
避免IP地址冲突
-
当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
-
提高了IP地址的利用率
-
方便客户端的配置
1.3:DHCP的分配方式
-
DHCP的典型应用模式
-
在网络中假设一台专用的DHCP服务器,负责集中分配各种网络地址参数(主要包括IP地址,子网掩码,广播地址,默认网关地址,DNS服务器地址)
-
其他主机作为DHCP客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程
-
这就产生了三种分配方式:自动分配,手动分配,动态分配
-
1.3.1:自动分配
-
分配到一个IP地址后永久使用
-
当DHCP客户机第一次成功的从DHCP服务器获取到一个IP地址后,就永久的使用这个IP地址
-
例如:局域网中的打印机,局域网中的座机
1.3.2:手动分配
- 由DHCP服务器管理员专门指定IP地址
1.3.3:动态分配
- 使用完后释放该IP,供其他客户机使用
- 当DHCP客户机第一次从DHCP服务器获得IP地址后,并非永久的使用该地址,而是在每次使用完后,DHCP客户机就会释放这个IP地址,供其他客户机使用
IP地址的获取和释放的命令
Windows 获取IP地址命令: ipconfig /renew
释放IP地址命令: ipconfig /release
查看所有IP地址信息:ipconfig /all
Linux 获取IP地址命令: ifconfig /renew
二:DHCP的工作原理
2.1:租约过程概述
- 客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
- 租约过程分为四个步骤
-
discover:请求IP地址,客户端在网络中发送discover广播,以此来搜索DHCP服务器
-
offer:服务器回应可用IP信息(可用IP地址、子网掩码、网关、DNS、租约期限),DHCP服务器接收到广播后,因不知道客户端的IP地址,所以同样以广播的形式将offer发送,来响应主机
-
request:客户机请求确认可用IP,客户机收到offer后,开始发出request广播
-
ack:服务器确认IP可用,DHCP收到广播后,依旧不知道客户机IP地址,发送回复request的ACK确认广播
特殊情况:如果offer阶段中的IP被先占用,直接会回应noack,客户机又会回到discover阶段。
2.1.1:租约过程详解4-1
- 客户机请求IP地址:发送DHCP discover广播
-
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
-
此时DHCP客户机以广播方式发送DHCP discover发现信息来寻找DHCP服务器
-
因为自己没有IP地址,所以源IP地址为:0.0.0.0
同时也不知道DHCP服务器地址,所以发送广播255.255.255.255
2.1.2:租约过程详解4-2
- 服务器响应:发送DHCP offer广播
- 当DHCP服务器接收到来自客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP offer的消息中,然后DHCP服务器就广播一则DHCP offer消息
- 客户机仍没有IP地址,所以发送广播
2.1.3:租约过程详解4-3
- 客户机选择IP地址:发送DHCP request广播
- DHCP客户机从接收到的第一个DHCP offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
- 第一个DHCP offer表示:若局域网中同时存在两个DHCP,那么客户机根据收到DHCP offer的顺序来确定使用哪个DHCP服务器的地址
- 客户机发送DHCP request 广播,选择IP地址,并附上租约期限信息(默认8天)
2.1.4:租约过程详解4-4
- 服务器确定租约:发送DHCP ACK广播
- DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息
- 当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化
- 此时服务器发出的仍旧是广播,因为客户机还没有IP地址
2.2:租约过程详解-重新登录情况
- 重新登录
- DHCP客户机每次重新登录网络时,不需要在发送DHCP的discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息
- DHCP服务器收到请求后,检查IP地址资源池
发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机
发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤。
2.3:租约过程详解–更新租约
- 更新租约
- 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
- 客户机直接向提供租约的服务器发送DHCP request包,要求更新现有的地址租约
- 若DHCP服务器宕机,客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址
三:DHCP服务器的配置
3.1:DHCP服务
- 为大量客户机自动分配地址,提供集中管理
- 减轻管理和维护成本,提高网络配置效率
3.2:可分配的地址信息主要包括
- 网卡的IP地址,子网掩码
- 对应的网络地址,广播地址
- 默认网关地址
- DNS服务器地址
3.3:安装DHCP服务器
- DHCP服务器软件
centos镜像中的dhcp…rpm - dhcp软件包的主要文件
主配置文件(功能):/etc/dhcpd.conf
执行程序(命令):/usr/sbin/dhcpd,/usr/sbin/dhcrelay
执行参数配置(启动):/etc/sysconfig/dhcpd
3.4:DHCP主配置文件详解
ddns-update-style interim; '全局配置参数,针对所有子网段'
...省略内容
subnet 10.152.187.0 netmask 255.255.255.0 {'网段声明'
option routers 10.5.5.1; '配置选项,网关'
...
default-lease-time 600; '配置参数,租约,单位S'
...
host ns{
...
fixed-address 207.175.42.254; '主机声明,固定的主机地址'
}
}
3.4.2:全局设置,作用于整个DHCP服务器
配置 | 解释 |
---|---|
ddns-update-style none; | 禁止dns动态更新 |
default-lease-time 21600; | 默认租约期限 |
max-lease-time 43200; | 最大租约期限 |
option domain-name"domain.org"; | 指定域名 |
option domain-name-servers 202.106.0.20; | 指定分配dns地址 |
3.4.3:subnet网段声明,作用于整个子网段
- range参数:设置用于分配的IP地址池
- option subnet-mask 参数: 设置客户机的子网掩码
- option routers 参数: 设置客户机的默认网关地
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.4.128 192.168.4.131;
option broadcast-address 255.255.255.0;
option routers 192.168.4.1;
}
3.4.4:host主机声明,作用于单个主机
- hardware ethernet 参数:指定对应主机的MAC地址
- fixed-address参数:指定为该主机保留的IP地址
host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.4.100;
}
3.4.5:查看租约文件
- 启动DHCP
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# netstat -anpu | grep ":67"
udp 0 0 0.0.0.0:67 0.0.0.0:* 5684/dhcpd
- 查看租约文件 /var/lib/dhcpd/dhcpd.lease
[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases
或者
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
或者其他的
[ root@localhost ~]# less Ivar/lib/dhcpd/dhcpd.leases
lease 192.168.4.131 { 分配的客户端IP
starts 4 2017/05/11 17:27:15;
ends 4 2017/05/11 23:27:15; 租期时间
cltt 4 2017/05/11 17:27:15;
binding state active;
hardware ethernet 00:0c:29:3b:ff:76; 客户端MAC地址
}
四:DHCP客户端的使用方法
4.1:修改网卡配置文件(如ifcfg-ens33)
- 其中BOOTPROTO=dhcp
[root@localhost dhcpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
...省略内容
4.2:使用dhclient命令
命令基本格式
dhclient [-d] [网络接口名]
例如
[root@localhost ~]# dhclient -d ens33
[root@localhost dhcpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
...省略内容
五:DHCP实验
5.1:实验目的
1.客户机通过DHCP获取IP地址
2.比较子网段优先级与全局优先级
3.配置指定IP地址
5.2:实验环境
两台虚拟机,一台centos7作为DHCP服务器,一台windows7作为客户机
5.3:实验步骤
5.3.1:先关闭Linux系统的核心防护功能,和清空防火墙规则,安装dhcp工具包
[root@localhost ~]# setenforce 0 关闭核心防护
[root@localhost ~]# iptables -F 清空防火墙规则
[root@localhost ~]# systemctl status firewalld.service 查看防火墙状态信息
[root@localhost ~]# systemctl stop firewalld.service 关闭防火墙
[root@localhost ~]# systemctl status firewalld.service
[root@localhost ~]# yum -y install dhcp* 安装dhcp相关软件包
5.3.2:为了实现实验效果将两个虚拟机都绑定到VM1网卡上,仅主机模式,这时VMnet1相当于一个交换机,而centos7作为DHCP服务器,win7作为客户机
Windows 7系统也选择仅主机模式配置
5.3.3:查看dhcp是否安装成功,修改dhcp配置文件
[root@localhost ~]# rpm -q dhcp 查看dhcp安装
[root@localhost ~]# rpm -qc dhcp 查看dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 修改dhcp配置文件发现里面有个引导dhcp模板
5.3.4:修改网卡配置信息
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# service network restart 重启网卡
5.3.5:将dhcp-4.2.5文件拷贝到dhcp.conf文件中
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
按照指引的路径将dhcp模板复制到dhcp配置文件中,注意的是*改为下载的版本
5.3.6:配置DNS地址8.8.8.8,注意结尾加;其他不需要动
5.3.7:配置实验所需的IP地址池和网关
5.3.8:查看服务端口,发现DHCP端口没开,图中端口是dns的
[root@localhost ~]# netstat -nuap
5.3.9:启动dhcp服务,服务端口号才会开启
[root@localhost ~]# systemctl start dhcpd 开启dhcp服务
[root@localhost ~]# netstat -nuap
5.3.10:这时打开同是仅主机模式中的windows7系统,输入ipconfig /renew获取IP地址,发现获取成功
通过输入ipconfig /all命令可以查看网卡所有信息
5.3.11:这时我们DNS地址宣告子网段,验证优先是执行子网段DNS服务地址还是全局DNS服务地址,再次编辑dhcpd文件,添加子网端的DNS地址为9.9.9.9,保存退出
添加完后要记得重启dhcp服务才会生效
5.3.12:这时切换至win7虚拟机记得先释放地址再重新获取地址,这时我们用ipconfig /all 发现子段宣告成功
5.3.13:给win7固定分配一个IP地址,先获取对方的mac地址,我们复制win7系统的MAC地址
再次修改dhcp文件在里面加入我们向配置的IP地址
5.3.14:重启dhcp服务后,再次到win7系统中查看,发现获取成功
5.4:实验总结
1.在配置文件时,注意;的使用。
2.当子网段的地址与全局地址相冲突时,子网段的优先级比全局的优先级高,客户机会先选择子网段中的
3.在使用虚拟机时,注意将虚拟网路编辑器中的自动获取DHCP的勾选取消掉