目录
一:DHCP工作原理
1.1:了解DHCP服务
DHCP
(
Dynamic Host Configuration Protocol,
动态主机配置协议)是由
Internet
工作任务小组设计开发的,专门用于为 TCP/IP
网络中的计算机自动分配
TCP/IP
参数的协议。
DHCP
服务避免了因手动设置
IP
地址所产生的错误,同时也避免了把一个
IP
地址分配给多台工作站所造成的地址冲突。DHCP
提供了安全、可靠且简单的
TCP/IP
网络设置,降低了配置 IP
地址的负担
1.2:使用DHCP的好处
由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP
地址,不仅造成了 IP
地址的浪费,也会为
ISP
服务商带来高额的维护成本。而使用
DHCP
服务则有以下 好处
- 减少管理员的工作量。
- 避免输入错误的可能。
- 避免 IP 地址冲突。
- 当网络更改 IP 地址段时,不需要再重新配置每个用户的 IP 地址
- 提高了 IP 地址的利用率。
- 方便客户端的配置。
1.3:DHCP的分配方式
DHCP
的典型应用模式如下:在网络中架设一台专用的
DHCP
服务器,负责集中分配各种网络地址参数(主要包括 IP
地址、子网掩码、广播地址、默认网关地址、
DNS
服务器地址);其他主机作为 DHCP
客户机,将网卡配置为自动获取地址,即可与
DHCP
服务器进行通信,完成自动配置过程。
在
DHCP
的工作原理中,
DHCP
服务器提供了三种
IP
地址分配方式:自动分配 (Automatic Allocation
)、手动分配和动态分配(
Dynamic Allocation
)
- 自动分配是当 DHCP 客户机第一次成功地从 DHCP 服务器获取到一个 IP 地址后,就永久地使用这个 IP 地址。
- 手动分配是由 DHCP 服务器管理员专门指定 IP 地址。
- 动态分配是当 DHCP 客户机第一次从 DHCP 服务器获取到 IP 地址后,并非永久地使用该地址,而是在每次使用完后,DHCP 客户机就会释放这个 IP 地址,供其他客户机使用
1.4:DHCP的租约过程
客户端从
DHCP
服务器获取
IP
地址的过程称之为
DHCP
租约过程,此过程主要分为以下四个步骤
- 客户端在网络中搜索服务器;
- 服务器向客户端响应服务;
- 客户端向服务器发出服务请求;
- 服务器向客户端提供服务。
(
1
)客户机请求
IP
地址
当一个
DHCP
客户机启动时,客户机还没有
IP
地址,所以客户机要通过
DHCP
获取一个合法的地址。此时 DHCP
客户机以广播方式发送
DHCP Discover
发现信息来寻找 DHCP 服务器
(
2
)服务器响应
当
DHCP
服务器接收到来自客户机请求
IP
地址的信息时,它就在自己的
IP
地址池中查找是否有合法的 IP
地址提供给客户机。如果有,
DHCP
服务器就将此
IP
地址做上标记,加入到 DHCP Offer
的消息中,然后
DHCP
服务器就广播一则
DHCP Offer
消息
(
3
)客户机选择
IP
地址
DHCP
客户机从接收到的第一个
DHCP Offer
消息中提取
IP
地址,发出
IP
地址的
DHCP服务器将该地址保留,这样该地址就不能再分配给另一个 DHCP
客户机。之后
DHCP
客户机会向服务器发送 DHCP Request
消息
(
4
)服务器确定租约
DHCP
服务器接收到
DHCP Request
消息后,以
DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有 IP 地址的有效租约和其他可配置的信息。当客户机收到 DHCP ACK消息时,它就配置了 IP 地址,完成 TCP/IP 的初始化
(
5
)重新登录
DHCP
客户机每次重新登录网络时,不需要再发送
DHCP Discover
信息,而是直接发送包含前一次所分配的 IP
地址的
DHCP Request
请求信息。
(
6
)更新租约
当
DHCP
服务器向客户机出租的
IP
地址租期达到
50%
时,就需要更新租约。客户机直接向提供租约的服务器发送 DHCP Request
包,要求更新现有的地址租约
二:使用DHCP动态配置主机地址
2.1:配置DHCP服务器
2.1.1:安装 DHCP 服务器软件
先执行
“rpm -q dhcp”
命令查看系统中是否已经安装
dhcp
软件包,如果没有安装,则只要挂载 CentOS
系统光盘,安装其中的
dhcp-4.2.5-47.el7.centos.x86_64.rpm
软件包即可
安装
dhcp
软件包后系统将会自动复制相关程序,并添加名为
dhcpd
的系统服务
2.1.2:建立主配置文件dhcpd.conf
dhcpd
服务的主配置文件是
/etc/dhcp/dhcpd.conf
,但是该文件中默认不包含任何有效配置,需要管理员手动建立。这时管理员可以根据文件中的提示,参考配置文件范本建立新的dhcpd.conf
文件
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf## DHCP Server Configuration file.#see /usr/share/doc/dhcp*/dhcpd.conf.example#see dhcpd.conf(5) man page#[root@localhost~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf[root@localhost ~]#
1)/etc/dhcp/dhcpd.conf 文件的配置构成
在主配置文件
dhcpd.conf
中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下所述
- 声明:用来描述 dhcpd 服务器中对网络布局的划分,是网络设置的逻辑范围。较常见的声明是 subnet、host,其中 subnet 声明用来约束一个网段,host 声明用来约束一台特定的主机。
- 参数:由配置关键字和对应的值组成,总是以“;”(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
- 选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“;”结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS 服务器地址等)
2)dhcpd 服务的全局配置
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件
dhcpd.conf
的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述
- ddns-update-style,动态 DNS 更新模式。用来设置与 DHCP 服务相关联的 DNS 数据动态更新模式。在实际的 DHCP 应用中很少用到该参数,将值设为“none”即可。
- default-lease-time,默认租约时间。单位为秒,表示客户端可以从 DHCP 服务器租用某个 IP 地址的默认时间。
- max-lease-time,最大租约时间。单位为秒,表示允许 DHCP 客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
- option domain-name,默认搜索区域。为客户机指定解析主机名时的默认搜索域,该配置选项将体现在客户机的/etc/resolv.conf 配置文件中,如“search benet.com”。
- option domain-name-servers,DNS 服务器地址。为客户机指定解析域名时使用的 DNS 服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf 配置文件中(如“nameserver 202.106.0.20”)。需设置多个 DNS 服务器地址时,以逗号进行分隔
例如,若需要为局域网搭建一台
DHCP
服务器,所有网段使用相同的租约时间,默认搜索域为 wind.com
,
DNS
服务器地址为
202.106.0.20
和
202.106.148.1
,则可以修改dhcpd.conf 配置文件,参考以下操作调整全局配置
[root@localhost ~]# vi /etc/dhcp/dhcpd.confddns-update-style none; //禁用 DNS 动态更新default-lease-time 21600; //默认租约为 6 小时max-lease-time 43200; //最大租约为 12 小时option domain-name "wind.com"; //指定默认搜索域option domain-name-servers 202.106.0.20, 202.106.148.1; //指定 DNS 服务器地址
3)subnet 网段声明
一台
DHCP
服务器可以为多个网段提供服务,因此
subnet
网段声明必须有而且可以有多个。例如,若要 DHCP
服务器为
192.168.4.0/24
网段提供服务,用于自动分配的
IP
地址范围为 192.168.4.128
~
192.168.4.254
,为客户机指定默认网关地址为
192.168.4.1
,则可以修改 dhcpd.conf
配置文件,参考以下内容调整
subnet
网段声明
[root@localhost ~]# vi /etc/dhcp/dhcpd.confsubnet 192.168.4.0 netmask 255.255.255.0 { //声明网段地址range 192.168.4.128 192.168.4.254; //设置地址池 , 可以有多个option routers 192.168.4.1; //指定默认网关地址}
4)host 主机声明(可选)
host
声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的 IP
地址(保留地址),这些主机的共同特点是要求每次获取的
IP
地址相同,以确保服务的稳定性。
host
声明通过
host
关键字指定需要使用保留地址的客户机名称,并使用
“hardware ethernet”参数指定该主机的
MAC
地址,使用
“fixed-address”
参数指定保留给该主机的
IP
地址。
2.1.3:启动dhcpd服务
在启动
dhcpd
服务之前,应确认提供
DHCP
服务器的网络接口具有静态指定的固定
IP 地址,并且至少有一个网络接口的 IP
地址与
DHCP
服务器中的一个
subnet
网段相对应,否则将无法正常启动 dhcpd
服务
安装
dhcp
软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpd.service,可以使用
systemd
服务进行控制。例如,执行以下操作可以启动 dhcpd
服务,并检查
UDP
的
67
端口是否在监听,以确认
DHCP
服务器是否正常。
[root@localhost ~]# systemctl start dhcpd[root@localhost ~]# netstat -anpu | grep ":67"
需要关闭、重启
dhcpd
服务时,只要将上述操作命令中的
“start”
改为
“stop”
或
“restart” 即可。如果 dhcpd
服务启动失败,可以检查日志文件
/var/log/messages
末尾的错误提示信息,并根据提示进行排错
2.2:使用DHCP客户端
当局域网内有可用的
DHCP
服务器时,在
Linux
客户机中可以设置使用
DHCP
的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp”
配置行,并重新加载配置文件或者重新启动 network
服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过 DHCP
方式自动获取地址
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33DEVICE=ens33ONBOOT=yesBOOTPROTO=dhcp[root@localhost ~]# ifdown ens33 ; ifup ens33
在
Linux
客户机中,还可以使用
dhclient
工具来测试
DHCP
服务器。若直接执行
“dhclient”命令,则 dhclient
将尝试为除回环接口
lo
以外的所有网络接口通过
DHCP
方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d” 选项使其在前台运行,测试完毕后按 Ctrl
+
C
组合键终止。例如,执行
“dhclient -d ens33” 命令后,可以为网卡 ens33
自动获取新的
IP
地址,并显示获取过程
[root@localhost ~]# dhclient -d ens33
在服务器端可以通过查看租约文件
/var/lib/dhcpd/dhcpd.leases
来了解服务器的
IP
地址分配情况,具体操作如下。该租约文件中记录了分配出去的每个 IP
地址信息(租约记录),包括 IP
地址、客户端的
MAC
地址、租用的起始时间和结束时间等
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
客户端需要通过
dhclient
命令释放获取的
IP
租约时,可以结合
“-r”
选项。例如,执行以下的“dhclient -r ens33”
将会释放之前为网卡
ens33
获取的
IP
租约。此时再通过执行
“ifconfig ens33”命令就看不到分配的
IP
地址了
[root@localhost ~]# dhclient -r ens33
2.3:DHCP中继
2.3.1:DHCP中继原理
当企业内部网络规模比较大时,通常通过
VLAN
将网络规划为多个不同的子网。但是在该情况下一台 DHCP
服务器无法为不同网段的客户机同时提供服务,因为
DHCP
协议使用广播,而 VLAN
能隔离广播。
例如:
DHCP
服务器在
VLAN 100
中,就只有
VLAN 100
内的客户机能从
DHCP
服务器那里获取 IP
地址。
VLAN 2
或
VLAN 3
的客户机就无法通过这台
DHCP
服务器来获取 IP
地址。
针对以上问题,一般有两种解决方案:
- 为每个网段安装一台 DHCP 服务器,但这种方式的弊端是:资源浪费与不利于管理;
- 在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN 之间转发,让其他 VLAN 的客户机也能从 DHCP 服务器获取 IP 地址,如下图所示
2.3.2:DHCP中继配置
DHCP
中 继 的 配 置 命 令 :
ip helper-address DHCPsrv-IPAddress
。 其中 ,DHCPsrv-IPAddress 为
DHCP
服务器的
IP
地址。
在三层交换机上配置
DHCP
中继转发:首先需要保证交换机上各
VLAN
之间网络通信正常,然后依次在不包含 DHCP
服务器的
VLAN
上进行
DHCP
中继配置。例如执行以下命令可以在 VLAN2
中进行
DHCP
中继转发配置
SW-3L(config)# interface vlan 2SW-3L(config-if)# ip helper-address 192.168.100.100