一.了解DHCP服务
1.1DHCP是什么?
-
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
-
一般常用于公司内网中
-
dhcp是专门用于TCP/IP网络中的计算机自动分配TCP/ip参数的协议,简单来说,DHCP可以动态的给局域网主机分配ip地址,网关、DNS等,可以将手动地址配置量,自动分配解决地址冲突问题。
1.2DHCP的优点
- 减少管理员的工作量
- 避免输入错误的可能
- 避免IP地址冲突
- 当更改lP地址段时,不需要重新配置每个用户的IP地址
- 提高了IP地址的利用率
- 方便客户端的配置
1.3DHCP的分配方式
- 自动分配:分配到一个IP地址后永久使用
- 手动分配:由DHCP服务器管理员专门指定IP地址
- 动态分配:使用完后释放该IP,供其它客户机使用
二DHCP工作过程
2.1DHCP的工作过程大概可分为四步:
-
1.客户端发广播寻找DHCP服务器
-
2.DHCP服务器单播回复客户端Offer
-
3.客户端广播请求这个ip,发广播一方面是为了请求这个地址,另一个方面也是告诉其他的dhcp服务器自己有地址用了
-
4.服务器发送ACK包
举个例子来说:
-
1.主机a是刚刚接入网络中的一台主机,在主机a接入之后,就会广播发送Discover包,寻找网络中的DHCP服务器
-
2.当dhcp服务器收到a的discover包之后,会单播回复给a一个offer包,里面包含着一个ip地址和一些配置信息比如,网关,租期,dns等
-
3.当主机a收到这个offer包之后确认要使用,就广播发送request请求这个IP地址,发广播的原因可能网络中还有其他的DHCP服务器,告诉他们自己有了IP地址
-
4.当dhcp服务器收到a的request之后单播发送一个ACK,a收到ack之后就开始使用这个IP地址
以上就是DHCP的工作过程,我们看到从主机寻找到获取地址一共只用到了四种数据包,那么其他两种数据包是在那种情况下被用到的呢?这就扯到了DHCP协议的一个小细节,叫做租期。
2.2.DHCP的租期
- 以上图为例,主机a从DHCP服务器获取得到了一个IP地址,ip租约期限到达50%时,主机a会单播发送dhcp request包,来申请延长ip地址的租期,服务器向主机a发送确认报文,给主机a一个新的租期
2.3租期失效
以上图为例,在ip租期到达之后,如果没有收到服务器回应,就会发送release报文,释放这个IP地址
客户端不再使用分配地址也会发release,来释放改地址释放之后客户端重新发送discover
三. **DHCP动态分配主机 **(实验)
此时我们思考一个问题,客户端在请求地址的时候发送一个广播包,我们都知道广播包是无法跨越三层设备的,如果这时候dhcp服务器与客户主机不在同一个网段应该怎么做?
以上图为例,可以看到电脑和服务器不在同一个网段,还想从dhcp服务器获得地址,这时候就用到了dhcp中继
dhcp中继的作用是可以让路由器转发dhcp的数据报文,这样就可以实现客户端和服务器在不同网段也能获得地址
3.1DHCP服务优点
●为大量客户机自动分配地址,提供集中管理
●减轻管理和维护成本、提高网络配置效率
3.2可分配的地址信息主要包括
●网卡的IP地址、子网掩码
●对应的网络地址、广播地址
●默认网关地址 ●DNS服务器地址
3.3linux中使用DHCP动态配置DHCP
3.3.1安装DHCP
yum install dhcp -y
这里最好使用网络yum源进行安装,版本较新
安装完成后,rpm-qa
查看是否安装完成
3.3.2虚拟机网卡设置为仅主机模式
3.3.3查看虚拟机虚拟网卡的IP地址(默认为ens33)
3.3.4编辑ens33网卡信息
vim /etc/sysconfig/network-scripts/ifcfg-ens33(编辑网卡信息)
- 重新连接一下xshell
3.3.5复制dhcp.conf配置文件到/etc/dhcp/dhcpd.conf
[root@localhost dhcp-4.2.5]# cp -f /usr/share/doc/dhcp4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y (强制覆盖并改名)
3.3.6修改dhcp配置文件
[root@localhost ~]# cd /etc/dhcp/ #切换至dhcpd.conf所在目录
[root@localhost dhcp]# vim dhcpd.conf #修改配置文件
末行模式下:set nu显示行号
#第8行 修改默认的全局DNS地址
option domain-name-servers 8.8.8.8;
#直接修改27行
subnet 192.168.181.0 netmask 255.255.255.0 {undefined (ip网段和子网掩码)
range 192.168.181.20 192.168.181.70; (这里的子网范围可以自行设置)
option routers 192.168.181.1; (网关地址)
option domain-name-servers 114.114.114.114;(dns)
3.3.7重启并查看dhcp服务是否正常启动
[root@localhost dhcp]# systemctl restart dhcpd
[root@localhost dhcp]# systemctl status dhcpd
3.3.8验证dhcp配置文件区域与全局优先级
1.打开windos虚拟机,设置为仅主机模式,查看dhcp是都设置成功
win+r输入cmd
ipconfig(查看网卡信息,如果这个时候没有显示ip,网关,dns等信息,可以输入下面的命令)
ipconfig/rlease(释放)
ipconfig/renew(刷新)
四.dhcp服务下自定义主机ip地址(实验)
在实际工作环境中,咱们需要已经开启了dhcp服务,dhco是自动分配地址的服务,如果想给固定主机自定义子网ip地址怎么设置呢?
需要在/etc/dhcp.conf文件中第71行Fixed IP addresses段落中修改想要设置的主机的物理地址。
4.1 查看windos主机的物理地址
ipcongfig/all
4.2修改dhcp配置文件
- 保存,并重启dhcp服务
systemctl restart dhcpd
4.3查看windos主机ip是否修改成功
刷新ipconfig信息并且查看
ipconfig /release 释放地址\
ipconfig /renew 重新获取地址\
ipconfig /all 可以看到详情信息
五.dhcp配置文件详解释
defau7t-lease-time 21600; #默认租约为6小时,单位为秒I
max-lease-time 43200; #最大租约为12小时,单位为秒
option domain-name "benet.com"; #指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1; #指定DNS服务器地址
ddns-update-style none; #禁用DNS动态更新
#subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.100.0 netmask 255.255.255.o { #声明要分配的网段地址
range 192.168.100.128 192.168.100.200; #设置地址池
option routers 192.168.100.1; #指定默认网关地址
#host主机声明(给单机分配固定的IP地址)
host hgstname{ #指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81; #指定该主机的MAC地址
fixed-address 192.168.4.100; #指定保留给该主机的IP地址
六.dhcp中继原理与实验
6.2 DHCP是什么?
DHCP中继(也叫做DHCP中继代理)是一个小程序,其可以实现在不同子网和物理网段之间处理和转发dhcp信息的功能。
如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的ip地址。如果不在同一个物理网段,则需要DHCP Relay Agent(中继代理)。
6.2.1DHCP中继实验
前面已经设置好了Linux的dhcp服务,此次实验会用vmware虚拟机和华为ensp做出dhcp中继的实验
6.2.1 关闭防火墙和selinux
1. [root@localhost ~]# systemctl stop firewalld.service
2. [root@localhost ~]# setenforce 0
6.2.2规划拓扑图并设置
- 1.设置cloud云配置
需要注意,这里选择的端口2网卡一定要对应虚拟机
- 2.规划vlan并设置
配置三层交换机lSW2
<Huawei>undo terminal mo\
<Huawei>sys
[SW1]vlan batch 10 20 100
[SW1]int e0/0/2
[SW1-Ethernet0/0/2]port link-type access
[SW1-Ethernet0/0/2]port default vlan 10
[SW1-Ethernet0/0/2]int e0/0/3
[SW1-Ethernet0/0/3]port link-type access
[SW1-Ethernet0/0/3]port default vlan 20
[SW1-Ethernet0/0/3]int e0/0/4
[SW1-Ethernet0/0/4]port link-type access
[SW1-Ethernet0/0/4]port default vlan 108(这里的云一定要和linux主机网段一至)
[SW1-Ethernet0/0/4]int e0/0/1
[SW1-Ethernet0/0/1]port link-type trunk
[SW1-Ethernet0/0/1]port trunk allow-pass vlan all
配置三层交换机
<Huawei>undo terminal mo\
<Huawei>sys
创建vlan10 20 108
[Huawei]vlan batch 10 20 108
打开dhcp
[Huawei]dhcp enable
设置g0/0/1配置
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type trunk
[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan all
[Huawei-GigabitEthernet0/0/1]dis th
[Huawei-GigabitEthernet0/0/1]int valn 10 (进入vlan10 设置)
设置vlan10
[Huawei-Vlanif10]ip add 192.168.10.1 24
[Huawei-Vlanif10]dhcp select relay (开启中继)
[Huawei-Vlanif10]dhcp relay server 192.168.108.100
设置vlan20
[Huawei-Vlanif10]int vlan 20
[Huawei-Vlanif20]ip add 192.168.20.1 24
[Huawei-Vlanif20]dhcp select relay
[Huawei-Vlanif20]dhcp relay server 192.168.108.100
设置vlan108
[Huawei-Vlanif20]int vlan 108
[Huawei-Vlanif108]ip add 192.168.108.10 24
[Huawei-Vlanif108]dhcp select relay
[Huawei-Vlanif108]dhcp relay server 192.168.108.100
设置完成,需要ping一下,看看各线路是否通畅
[Huawei-Vlanif108]ping 192.168.10.1
[Huawei-Vlanif108]ping 192.168.20.1
[Huawei-Vlanif108]ping 192.168.108.10
6.2.3 尝试用linux ping通vlan10 vlan20
- 1.这个时候大概率是ping不通的,需要修改linux网卡ens33,把网卡修改成前面在ensp模拟器上ip add 192.168.108.10 (网关地址)设置成一样,因为此时的linux 提供dhcp服务,端口设置需要和华为模拟器同意设置,才能进入
修改过网卡信息需要
systemrestart network
-
2.尝试ping
-
ping vlan20 ip
-
ping vlan10 ip
实验成功