DHCP 原理与配置

1.1 DHCP 工作原理

当局域网络中有大量的主机时,如果逐个为每一台主机手动设置 IP 地址、默认网关、 DNS 服务器地址等网络参数,显然是一个费力也未必讨好的办法。而 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器的应用,正好可以解决这一问题。

1. 了解 DHCP 服务

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是由 Internet 工作 任务小组设计开发的,专门用于为 TCP/IP 网络中的计算机自动分配 TCP/IP 参数的协议。 DHCP 服务避免了因手动设置 IP 地址所产生的错误,同时也避免了把一个 IP 地址分配给多 台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的 TCP/IP 网络设置,降低了 配置 IP 地址的负担。

2 . 使用 DHCP 的好处

  • 减少管理员的工作量。
  • 避免输入错误的可能。
  • 避免 IP 地址冲突。
  • 当网络更改 IP 地址段时,不需要再重新配置每个用户的 IP 地址。
  • 提高了 IP 地址的利用率。
  • 方便客户端的配置。

3 . DHCP 的分配方式

自动分配:当 DHCP 客户机第一次成功地从 DHCP 服务器获取到一个 IP 地址后, 就永久地使用这个 IP 地址。

手动分配:由 DHCP 服务器管理员专门指定 IP 地址。

动态分配:当 DHCP 客户机第一次从 DHCP 服务器获取到 IP 地址后,并非永久 地使用该地址,而是在每次使用完后,DHCP 客户机就会释放这个 IP 地址,供其 他客户机使用。

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 包,要求更新现有的地址租约。

1.2 使用 DHCP 动态配置主机地址

1.2.1 配置 DHCP 服务器

1.安装 DHCP 服务器软件

先执行“rpm -q dhcp”命令查看系统中是否已经安装 dhcp 软件包,如果没有安装,则只 要挂载 CentOS 系统光盘,安装其中的 dhcp-4.2.5-47.el7.centos.x86_64.rpm 软件包即可.。

安装 dhcp 软件包后系统将会自动复制相关程序,并添加名为 dhcpd 的系统服务。

root@localhost ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/sro is write-protected, mounting read-only
[root@localhost ~]#rpm -ivh /media/cdrom/Packages/dhcp-4.2.5-47.el7.centos.x86_64.rpm

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 服务器中对网络布局的划分,是网络设置的逻辑范围。较 常见的声明是 subnet、host,其中 subnet 声明用来约束一个网段,host 声明用来 约束一台特定的主机。
  • 参数:由配置关键字和对应的值组成,总是以“;”(分号)结束,一般位于指定的声 明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
  • 选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“;”结束, 用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS 服务 器地址等)。
2)dhcpd 服务的全局配置
  • 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 服务器地址时,以逗号进 行分隔。
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
ddns-update-style none; //禁用 DNS 动态更新
default-lease-time 21600; //默认租约为 6 小时
max-lease-time 43200; //最大租约为 12 小时
option domain-name "bdqn.com"; //指定默认搜索域
option domain-name-servers 202.106.0.20, 202.106.148.1; //指定 DNS 服务器地址
3)subnet 网段声明

一台 DHCP 服务器可以为多个网段提供服务,因此 subnet 网段声明必须有而且可以有 多个。

[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 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 地 址。

host prtsvr {
    hardware ethernet 00:c0:c3:22:46:81;
    fixed-address 192.168.4.100;
}

3.启动 dhcpd 服务

在启动 dhcpd 服务之前,应确认提供 DHCP 服务器的网络接口具有静态指定的固定 IP 地址,并且至少有一个网络接口的 IP 地址与 DHCP 服务器中的一个 subnet 网段相对应, 否则将无法正常启动 dhcpd 服务。

[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

1.2.2 使用 DHCP 客户端

当局域网内有可用的 DHCP 服务器时,在 Linux 客户机中可以设置使用 DHCP 的方式 获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp”配置行,并 重新加载配置文件或者重新启动 network 服务即可。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=dhcp
[root@localhost ~]# ifdown ens33 ; ifup ens33

在Linux客户机中,还可以使用dhclient工具来测试DHCP服务器。若直接执行“dhclient” 命令,则 dhclient 将尝试为除回环接口 lo 以外的所有网络接口通过 DHCP 方式申请新的地 址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d” 选项使其在前台运行,测试完毕后按 Ctrl+C 组合键终止。

[root@localhost ~]# dhclient -d ens33
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium. 
All rights reserved. 
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens33/00:0c:29:3b:ff:76
Sending on LPF/ens33/00:0c:29:3b:ff:76
Sending on Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 5 (xid=0x608095ef)
                                                                //DHCP 发现
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x608095ef)
                                                                //DHCP 请求
DHCPOFFER from 192.168.4.11                                     //DHCP 提供
DHCPACK from 192.168.4.11 (xid=0x608095ef)                      //DHCP 确认
bound to 192.168.4.131 -- renewal in 8669 seconds. 
……                                                         //按 Ctrl+C 组合键终止

在服务器端可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来了解服务器的 IP 地址 分配情况。

[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
 …… //省略部分内容
lease 192.168.4.131 {
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;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:3b:ff:76;
}

客户端需要通过 dhclient 命令释放获取的 IP 租约时,可以结合“-r”选项。

[root@localhost ~]# dhclient -r ens33

1.3 DHCP 中继

1. DHCP 中继原理

当企业内部网络规模比较大时,通常通过 VLAN 将网络规划为多个不同的子网。但是 在该情况下一台 DHCP 服务器无法为不同网段的客户机同时提供服务,因为 DHCP 协议使 用广播,而 VLAN 能隔离广播。

  • 为每个网段安装一台 DHCP 服务器,但这种方式的弊端是:资源浪费与不利于管理;
  • 在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN 之间转发,让其他 VLAN 的客户机也能从 DHCP 服务器获取 IP 地址。

2. DHCP 中继配置

DHCP 中 继 的 配 置 命 令 : ip helper-address DHCPsrv-IPAddress 。 其 中 , DHCPsrv-IPAddress 为 DHCP 服务器的 IP 地址。

在三层交换机上配置 DHCP 中继转发:首先需要保证交换机上各 VLAN 之间网络通信 正常,然后依次在不包含 DHCP 服务器的 VLAN 上进行 DHCP 中继配置。例如执行以下命 令可以在 VLAN2 中进行 DHCP 中继转发配置。

SW-3L(config)# interface vlan 2
SW-3L(config-if)# ip helper-address 192.168.100.100
  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值