首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第五章 DHCP服务(2)

第五章 DHCP服务

5.2.2 保留IP

DHCP服务中还支持保留IP的设置。保留ip就是讲一个ip绑定给某个网卡使用,那么该网卡只要连网即会使用这个ip,若该网卡不在线,DHCP也不会将这个ip分配给其他网卡使用,也就是专属ip的意思。当然也可以设置多个保留ip,并且还可以给保留ip设置单独的租期、网关、DNS等参数。多个保留ip也可以组成保留组,做统一设置。

既然保留ip是绑定给网卡的,可以唯一识别网卡的只有mac地址,所以保留ip实际上是绑定的网卡mac地址。

PS:其实这个保留ip的功能多少有些鸡肋,因为若要这样,完全可以给主机配置静态ip(即固定ip),只要在DHCP的地址池之外就好了。

下面来看一下具体的配置:

vi /etc/dhcp/dhcpd.conf ---地址池的{}中加入:

max-lease-time864000; ---设定租期上限,本地址池内,包括保留的ip,所有的租期不允许超过max限制

注:default的设置控制整个地址池,若不写max句,则默认default就是max

group{ ---建立保留组

default-lease-time 864000;

option routers 192.168.10.244;

option domain-name-servers 202.1.1.1;

---给保留组内的主机单独设置租期和gw、dns

hostboss{ ---设定一个保留主机,主机名自定义

hardware ethernet 00:0c:29:a1:cb:f3; ---指定mac

fixed-address 192.168.10.150; ---绑定的ip

}

hostpc2{

#配置略

}

}

注:以上的某个host模块,也可以写在group之外,则不遵守group中的设置。租期、网关、DNS等参数也可以写在host内,仅对该host生效。

若在地址池中不设置最大租期,则最外层的default-lease-time默认就是最大租期,即便group、host中的租期设置大了,实际也是外层的租期生效。

配置完毕,即可重启服务,然后在客户端更新一下即可查看保留的ip。

5.2.3 其他相关文件

作为DHCP服务器,对所分配出去的ip,一定会做记录的,分配的记录文件会记录在/var/lib/dhcpd/目录下,如下图:

其中,dhcpd.leases是原文件,带~的是备份,dhcp6.leases是Ipv6的分配记录。

vi dhcpd.leases 会见到里面的分配记录,如下图:

其中会有四个时间点:获取时间、到期时间、更新时间、归还时间。其实简单的说,在vi查看这个文件时,只要有三个时间点的是客户端在使用未收回的ip,显示有四个时间点的是以收回的ip。

另外,我们在实验中可以看到,DHCP的配置文件默认是空的,里面任何配置都没有,所以所有内容都是手动输入的。其实在安装完DHCP的包后,是有配置文件的事例文件的,如果我们不知道某些配置给如何写时,可以查看事例文件。事例文件是:

/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example,读者可以自行查看一下。

注:某些CentOS或redhat版本,事例文件是.sample后缀的。

5.3 跨子网分配ip

5.3.1 配置独立的中继服务器

之前的案例是DHCP服务器与客户端在同一子网内时完成分配的,但是在实际网络环境中,如果每个子网都配置一台DHCP服务器的话,成本太高,不实用。所以都是在整个局域网中,配置一个统一的DHCP服务器,负责所有子网的分配工作。那就需要在DHCP服务器上创建多个地址池,格式与之前案例相同。

但是,问题来了,我们知道客户端申请ip时是以广播的形式与服务器通信的(那四个包都是广播),不同子网间使用路由器连接,但是路由器默认是屏蔽广播的(TCP/IP协议网络层的功能是屏蔽广播的),所以如果服务器与客户端在不同子网时,是无法接受到客户端请求的,那么该如何解决呢?

其实在实际的网络环境中,这个问题非常好解决,我们只需要找网络工程师,在路由器上开启rfc1521功能以后,就可以了。路由器开启了rfc1542功能后,会自动转发DHCP的广播,即rarp广播,屏蔽其他广播,并且rfc1542协议还规定路由器还会根据接收到客户端请求的接口的ip(这一句有点绕,仔细读几遍),分析子网的ip网段,从而到DHCP上请求对应地址池的ip,那么客户端就可以获取到正确的ip及网络参数了。

但是老一些的路由器可能不支持rfc1542功能,无法完成跨子网的ip获取,那么则需要我们手动在子网内配置一台DHCP中继服务器了,来代理客户端的ip申请。具体过程参考下图:

图中的前提有二:首先DHCP中继服务器是有固定ip的;其次DHCP中继服务器明确知道DHCP服务器的地址。那么,当客户端发送请求广播时,会被DHCP中继所捕获,因为中继有IP,切知道服务器IP,即可以单播的形式联系DHCP服务器了(路由器不会屏蔽单播),DHCP服务器收到请求后,根据中继的ip地址,就可以知道客户端所在的ip段了,就会从相应的地址池中分配一个ip,回复给中继,中继收到后,再以广播的形式反馈给客户端,这样客户端就获取到有ip了。综上,其实客户端还是以广播的形式获取ip的,只不过其中有了中继服务器做了代理,代替客户端到服务器上申请到了ip。下面我们来做一下实验展示。

实验环境如下图(突然不想制图了,秀一把手绘,嘿嘿~~):

图中,路由器连接两个子网,分别是192.168.10.0/24和192.168.20.0/24网段,DHCP服务器在10.0段内,ip是10.1,则网关应该是10.254。中继在20.0段,ip是20.1,网关是20.254。则客户端C1应该申请到10.0段的ip,客户端C2通过中继可以申请到20.0段的ip。并且,作为服务器需要创建好两个地址池:10.0池和20.0池。

所以此实验我们需要5台虚拟机:路由器、DHCP服务器、DHCP中继、C1、C2。C1、C2可以使用windows虚拟机,另外三台使用Linux虚拟机。

首先配置前为了实现两个子网的环境,我们需要在vmware中创建两个lan,如下图:

在任一台虚拟机网卡设置中,点击“LAN区段”按钮,创建两个LAN区段(创建后其它虚拟机也可以查看到并使用),然后设置网卡连接。这里我们将DHCP服务器、C1、路由器第一块网卡设置到LAN1区段上,将DHCP中继、C2、路由器第二块网卡设置到LAN2区段上,配置完毕,路由器网卡连接如下图:

确定后,即完成配置,其他虚拟机也是类似操作,完成网卡绑定。

绑定后我们按如下步骤配置实验:

1、配置路由器

路由器按实验图形中设置网卡ip:10.254和20.254,关闭防火墙

vi /usr/lib/sysctl.d/00-system ---编辑路由配置文件,追加

net.ipv4.ip_forward = 1 ---开启路由功能

注:关于路由的原理会在后续章节介绍,此处仅开启路由即可

systemctl restart network ---重启服务,路由生效

2、配置DHCP服务器

配置ip:10.1,网关,10.254,关闭防火墙

配置DHCP配置文件,写入两个地址池,如下图:

systemctl restart dhcpd ---重启服务

3、配置DHCP中继

配置ip:20.1,网关,20.254,关闭防火墙

yum -y install dhcp

输入以下命令:

dhcrelay -i ens34 192.168.10.1 ---开启中继功能,

注:-i 指定参与中继的网卡,此处即接收客户端申请的网卡

10.1 是指定的DHCP服务器ip

以上命令是临时开启DHCP中继功能的,重启后中继将失效。所以,同之前的很多实验一样,需要配置配置文件才可以永久生效,只是DHCP中继需要配置的是DHCP中继的服务进程文件。具体操作如下:

cd/usr/lib/systemd/system ---进入服务文件所在目录

vi dhcrelay.service ---编辑中继的服务文件

找到ExecStart 行,最后追加 -i ens34 192.168.10.1

注:其实还是调用的dhcrelay命令。

systemctldaemon-reload ---重新加载各服务文件

systemctl restart dhcrelay ---启动服务

systemctl enable dhcrelay

再设置防火墙开机自动关闭即可了。

下面便可以尝试使用C1、C2两个客户端分别获取ip了,可发现各自获取到各自网段的ip。

tips:RHEL7.0之前版本配置永久中继如下

vi /etc/sysconfig/dhcrelay ---编辑中继配置文件

其中 INTERFACE="eth0" ---指定网卡

SERVERS="192.168.10.1" ---指定服务器ip

chkconfig dhcrelay on ---设置开机启动

service dhcrelay restart ---启动服务

5.3.2 路由+中继合并

在上节实验中,每个子网内都需要部署一台中继服务器,其实成本也是很高、很浪费的,所以我们可以模拟路由器rfc1542功能,将路由与中继功能合并到一台虚拟机上完成。具体如下:

关闭DHCP中继虚拟机。

路由器上安装DHCP软件包

运行命令:

dhcrelay -i enns33 -i ens34 192.168.10.1

注:两个-i,因为路由器上参与到中继通信的会有两个网卡

永久配置也是在dhcrelay服务文件中写入两个-i参数,如下:

vi dhcrelay.service ---编辑中继的进程

找到ExecStart 行,最后追加:

-i ens33 -i ens34 192.168.10.1

systemctl restart dhcrelay ---启动服务

systemctl enable dhcrelay

然后便可到C2客户端验证获取了。

5.3.3 小结

其实,DHCP中继的部署,在实际网络环境中使用率极少,使用主机作为路由器的情况更少,都是使用的真正的企业级路由器。所以,本文中的实验只是为了让读者加深理解跨子网分配的原理。读者们应该更注重理论基础,不要太沉迷于实验操作。有了理论原理,更有助于通信故障的排查,进而才会在将来各种新版本、新环境中摸索出新的配置方案。

下一篇
举报
领券