DHCP的原理和配置

一、DHCP工作原理

        网络中有大量主机需要分配IP地址时,一个个手动分配非常费力,因此需要能够自动分配IP地址的方法,而DHCP服务器就可以解决这个问题。

1.1 了解DHCP服务

        此服务是专用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。此协议避免了手动分配地址可能造成的地址冲突或错误,提供了安全、可靠且简单的TCP/IP网络配置。

1.2 使用DHCP的好处

        随着上网用户越来越多,为每一位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商带来高额的维护成本。而使用DHCP服务则有以下的好处:

        1. 减少管理员的工作量。

        2. 避免输入错误的可能。

        3. 避免IP地址冲突。

        4. 当网络更改IP地址段时,不需要再重新分配每个用户的IP地址。

        5. 提高了IP地址的利用率。

        6. 方便客户端的配置

1.3 DHCP的分配方式

        DHCP的典型应用模式如下:在网络中搭建一台或多台专用的DHCP服务器,负责集中分配各种网络地址参数;其他主机作为客户机,只需将网卡配置为自动获取地址,且能够与DHCP服务器保持连通状态,即可完成自动配置过程。

        DHCP服务器共提供了三种IP地址分配方式:

        1. 自动分配:客户机从DHCP服务器获取的第一个IP地址后,就永久使用此地址。

        2. 手动分配:由DHCP管理员专门指定一个IP地址给客户机。

        3. 动态分配:客户机从DHCP服务器获取自动分配的IP地址,但此地址有使用期限,到达期限或客户机重新申请获取IP地址,都会先释放地址,供其他客户机使用。

1.4 DHCP的租约过程

        客户端从DHCP服务器获取IP地址的过程称为DHCP租约过程,此过程主要分为四个步骤:

        1. 客户端在网络中搜索服务器:客户机启动时,还没有自己的IP地址,这时客户机就通过广播的方式发送一个DHCP Discover报文寻找网络中可用的DHCP服务器。

        

               寻找DHCP服务器图示

        2. 服务器向客户端响应服务:DHCP服务器接收到DHCP Discover报文后,将自己地址池中可用的IP地址加入到DHCP Offer的报文中,也通过广播的方式发送。

                

               服务器回应客户机的DHCP Discover请求图示

        3. 客户端向服务器发送服务请求:客户机会接收第一个到达的DHCP Offer报文(假设该服务器为A),其余丢弃(因为第一个到达,就代表距离大概也是最近的,对请求响应最快的),再发送一个DHCP Request报文给DHCP服务器请求使用该地址,此次发送依然是以广播的方式发送。

       客户端确认收到的IP地址图示

        4. 服务器向客户端提供服务。

        A服务器接收到DHCP Request的消息后,最后再以广播的形式发送DHCP ACK报文,以允许客户端的对于IP地址的请求(里面包含了IP地址的有效租约和其他可配置的信息)。客户机接收到该报文时,就真正确认了IP地址的分配。

DHCP服务器确认分配IP地址图示‘

        完成IP地址的分配之后,客户机每次重新登录网络时,不会在发送DHCP Discover报文,而是直接发送包含前一次分配的IP地址的DHCP Request报文。

        若分配给客户机的IP地址的租期到达一半时,就需要重新续约了。客户机直接向提供租约的服务器发送DHCP Request报文,要求更新现有的地址租约,如果DHCP服务器没有回应,就每隔1、2、4、8分钟发送一次DHCP Request报文。

二、使用DHCP动态配置主机地址

        DHCP服务可分配的地址信息主要包括:

  • 网卡的IP地址、子网掩码
  • 对应的网络地址、广播地址
  • 默认网关地址
  • DNS服务器地址
  • .......

2.1 配置DHCP服务器

        1. 安装DHCP服务器软件

        2. 建立主配置文件

         DHCP的主配置文件是/etcc/dhcp/dhcpd.conf。该文件初始没有任何配置,可以参考文件范本"dhcp.conf.example",位于/usr/share/doc/dhcp*/目录下。

        在主配置文件中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下:

  • 声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。较常见的声明是 subnet、host,其中subnet声明用来约束一个网段,host声明用来约束一台特定的主机。
  • 参数:由配置关键字和对应的值组成,总是以“;”(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
  • 选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“;”结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS 服务器地址等)。

        配置分为指定subnet网段配置和全局配置。为了使配置文件结构清晰,全局配置通常会放在配置文件dhcpd.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述。

  • ddns-update-style:动态 DNS 更新模式。用来设置与 DHCP 服务相关联的 DNS数据动态更新模式。在实际的 DHCP 应用中很少用到该参数,将值设为“none"即可。
  • default-lease-time:默认租约时间。单位为秒,表示客户端可以从 DHCP 服务器租用某个 IP 地址的默认时间。
  • max-lease-time:最大租约时间。单位为秒,表示允许DHCP 客户端指定的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认的(default)租约时间。
  • 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服务器,所有网段使用相同的租约时间,默认搜索域为 zkf.com,DNS 服务器地址为 202.106.0.20 和 202.106.148.1,则可以修改dhcpd.conf配置文件,参考以下操作调整全局配置。

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;    //禁用 DNS 动态更新
default-lease-time 21600;    //默认租约为6小时
max-lease-time 43200:    //最大租约为 12 小时
option domain-name    "zkf.com"; //指定默认搜索域

option domain-name-servers    202.106.0.20,202.106.148.1://指定 DNS 服务器地址,不同的DNF服务器地址中间用逗号隔开

        一台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 ~]# vim /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            //指定默认网关地址
}

        在DHCP服务器中可以单独给一台客户机设置固定的地址(通常式打印机或个别服务器)。通过将客户机的MAC地址和DHCP服务器提供的地址绑定在一起,即可实现此功能。举个例子:若要为打印机abc(MAC 地址为00:c0:c3:22:46:81)分配固定的IP地址192.168.4.100,可以修改 dhcpd.conf配置文件,参考以下内容在网段声明内添加 host 主机声明。

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

        3. 启动DHCP服务

[root@localhost ~]# systemctl start dhcpd

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

2.2 使用DHCP客户端

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

        

        在Linux系统中,可以使用"dhclient"命令来测试DHCP服务器。需要指定网络接口名称为参数,否则会为除了llo以外的所有网络接口通过DHCP方式申请新的地址,然后转入后台运行,可以结合"-d"选项使其在前台运行。

        在服务器端可以通过查看租约文件/var/lib/dhcpd/dhcpd.lease来了解服务器的IP地址分配情况。该租约文件中记录了分配出去的每个Ip地址信息,包括IP地址、客户端的MAC地址、租用的起始时间和结束时间等。

        客户端需要通过 dhclient 命令释放获取的 IP 租约时,可以结合"-r"选项。例如,执行以下的“dhclient -rens33"将会释放之前为网卡 ens33 获取的IP 租约。

2.3 DHCP中继

        因为客户向DHCP服务器发送的请求和DHCP服务器向客户端发送的回复都是广播信息,所以当网络规模较大时,多台主机可能不在同一个网络,若在每一个网络内搭建一个DHCP服务器成本较高,所以就需要DHCP中继技术,使DHCP类的广播报文能够跨网络传播。

        该技术需要在连接不同网段的设备上开启 DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器获取IP地址,如下图所示:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值