首页 > 系统相关 >Linux配置DHCP服务

Linux配置DHCP服务

时间:2023-12-16 16:31:57浏览次数:24  
标签:Linux 报文 配置 服务器 dhcpd IP地址 DHCP 客户端

一、DHCP简介

DHCP(动态主机配置协议,Dynamic  Host  Configuration  Protocol)是一种网络管理协议,主要用于简化IP地址的分配和管理。它在局域网中广泛应用,旨在为内部网络主机自动分配IP地址,以及为网络管理员提供集中管理手段。

DHCP的主要作用和优点:

  1. 集中管理:DHCP允许网络管理员集中管理IP地址的分配,以及其他网络配置参数,如网关、DNS服务器等。这有助于减轻管理和维护成本,提高网络配置效率。
  2. 动态分配:DHCP动态分配IP地址,使得IP地址的利用率更高,避免了IP地址的浪费,通过自动配置IP地址,减少了手动配置的可能性,从而减少了人为错误导致的问题,减轻了网络管理员的工作负担。

DHCP基本协议架构中,主要包括以下三种角色:

  • DHCP Client: DHCP客户端,通过与DHCP服务器进行报文交互,获取IP地址和其他网络配置信息,完成自身的地址配置。在设备接口上配置DHCP Client功能,这样接口可以作为DHCP Client,使用DHCP协议从DHCP Server动态获得IP地址等参数,方便用户配置,也便于集中管理。
  • DHCP Relay: DHCP中继,负责转发来自客户端方向或服务器方向的DHCP报文,协助DHCP客户端和DHCP服务器完成地址配置功能。如果DHCP服务器和DHCP客户端不在同一个网段范围内,则需要通过DHCP中继来转发报文,这样可以避免在每个网段范围内都部署DHCP服务器,既节省了成本,又便于进行集中管理。
    在DHCP基本协议架构中,DHCP中继不是必须的角色。只有当DHCP客户端和DHCP服务器不在同一网段内,才需要DHCP中继进行报文的转发。
  • DHCP Server: DHCP服务器,负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IP地址和其他网络配置信息。

二、DHCP工作原理

2.1 DHCP客户端与服务器的交互模式

DHCP客户端为了获取合法的动态IP地址,在不同阶段与服务器之间交互不同的信息,通常存在以下三种模式:

  1. DHCP客户端动态获取IP地址
    图1 DHCP客户端动态获取IP地址的四步交互过程

Linux配置DHCP服务_DHCP

图1所示,DHCP客户端首次登录网络时,主要通过四个阶段与DHCP服务器建立联系

  • 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。
    在发现阶段,DHCP客户端通过发送DHCP DISCOVER报文来寻找DHCP服务器。由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP DISCOVER报文。所有收到DHCP DISCOVER报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。
  • 提供阶段:即DHCP服务器提供IP地址的阶段。
    网络中接收到DHCP DISCOVER报文的DHCP服务器,会从地址池选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址、域名服务器地址等)通过DHCP OFFER报文发送给DHCP客户端。
  • 选择阶段:即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端只接收第一个收到的DHCP OFFER报文。然后以广播方式发送DHCP REQUEST请求报文,该报文中包含服务器标识选项(Option54),即它选择的DHCP服务器的IP地址信息。
    以广播方式发送DHCP REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。
  • 确认阶段:即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP REQUEST报文后,DHCP服务器会根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则向客户端发送包含它所提供的IP地址和其它设置的DHCP ACK确认报文。DHCP客户端收到该确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。如果DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。
    DHCP Client获得IP地址后,上线之前会检测正在使用的网关的状态,如果网关地址错误或网关设备故障,DHCP客户端将重新使用四步交互方式请求新的IP地址。


  1. DHCP客户端重用曾经分配的IP地址
    图2 DHCP客户端重用曾经分配的IP地址的两步交互过程

Linux配置DHCP服务_DHCP_02

图2所示,DHCP客户端重新登录网络时,主要通过以下几个步骤与DHCP服务器建立联系:

  • 重新登录网络是指客户端曾经分配到可用的IP地址,再次登录网络时IP地址还在相应的租期之内。客户端不需要再发送DHCP DISCOVER报文,而是直接发送包含前一次分配的IP地址的DHCP REQUEST请求报文,即报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。
  • DHCP服务器收到DHCP REQUEST报文后,如果客户端申请的地址没有被分配,则返回DHCP ACK确认报文,通知该DHCP客户端继续使用原来的IP地址。
  • 如果此IP地址无法再分配给该DHCP客户端使用(例如已分配给其它客户端),DHCP服务器将返回DHCP NAK报文。客户端收到后,重新发送DHCP DISCOVER报文请求新的IP地址。


  1. DHCP客户端更新租约DHCP当DHCP客户端获得IP地址时,会进入到绑定状态,客户端会设置3个定时器,分别用来控制租期更新、重绑定和判断是否已经到达租期。DHCP服务器为客户分配IP地址时,可以为定时器指定确定的值。若服务器没有设置定时器的值,客户端就使用缺省值。定时器的缺省值如表1所示:
    表1 定时器的缺省值:

定时器

默认值

租期更新

总租期的50%

重绑定

总租期的87.5%

到达租期

总租期

图3 DHCP客户端更新租约过程

Linux配置DHCP服务_DHCP_03

图3所示,DHCP客户端更新租约,主要通过以下几个步骤与DHCP服务器建立联系:

  • IP租约期限达到50%(T1)时,DHCP客户端会自动以单播的方式,向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租约。如果收到DHCP ACK报文,则租约更新成功;如果收到DHCP NAK报文,则重新发起申请过程。
  • IP租约期限达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动向DHCP服务器发送更新其IP租约的广播报文。如果收到DHCP ACK报文,则租约更新成功;如果收到DHCP NAK报文,则重新发起申请过程。
  • 如果IP租约到期前都没有收到服务器响应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。


  1. DHCP客户端主动释放IP地址
    DHCP客户端不再使用分配的IP地址时,会主动向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租约。DHCP服务器会保留这个DHCP客户端的配置信息,以便该客户端重新申请地址时,重用这些参数。


三、DHCP Relay工作原理

DHCP Relay即DHCP中继,它实现了不同网段间的DHCP服务器和客户端之间的报文交互。DHCP中继承担处于不同网段间的DHCP客户端和服务器之间中继服务,将DHCP协议报文跨网段透传到目的DHCP服务器,最终使网络上的DHCP客户端可以共同使用一个DHCP服务器。

客户端首次申请地址时通过DHCP中继获得地址过程如图4所示。

图4 DHCP中继工作过程:

Linux配置DHCP服务_DHCP_04

DHCP中继的工作过程如图4所示。DHCP客户端发送请求报文给DHCP服务器, DHCP中继收到该报文并适当处理后,以单播形式发送给指定的位于其它网段上的DHCP服务器。服务器根据请求报文中提供的必要信息,通过DHCP中继将配置信息返回给客户端,完成对客户端的动态配置

  1. DHCP中继接收到DHCP DISCOVER或DHCP REQUEST报文后,将进行如下处理:
  • 为防止DHCP报文形成环路,抛弃报文头中hops字段的值大于限定跳数的DHCP请求报文。否则,继续进行下面的操作。将hops字段增加1,表明又经过一次DHCP中继。
  • 检查giaddr字段。如果是0,需要将giaddr字段设置为接收请求报文的接口IP地址。如果接口有多个IP地址,可选择其一。以后从该接口接收的所有请求报文都使用该IP地址。如果giaddr字段不是0,则不修改该字段。
  • 将请求报文的TTL设置为DHCP中继设备的TTL缺省值,而不是原来请求报文的TTL减1。对中继报文的环路问题和跳数限制问题都可以通过hops字段来解决。
  • DHCP请求报文的目的地址修改为DHCP服务器或下一个DHCP中继的IP地址,从而将DHCP请求报文转发给DHCP服务器或下一个DHCP中继。
  1. DHCP服务器根据Relay Agent IP Address字段为客户端分配IP地址等参数,并将DHCP应答报文发送给Relay Agent IP Address字段标识的DHCP中继。DHCP中继接收到DHCP应答报文后,会进行如下处理:
  • DHCP中继假设所有的应答报文都是发给直连的DHCP客户端。Relay Agent IP Address字段用来识别与客户端直连的接口。如果Relay Agent IP Address字段不是本地接口的地址,DHCP中继将丢弃应答报文。
  • DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP应答报文广播发送给DHCP客户端;否则将DHCP应答报文单播发送给DHCP客户端,其目的地址为Your (Client) IP Address字段内容,链路层地址为Client Hardware Address字段内容。

客户端通过DHCP中继延长地址租期的过程如图5所示。

图5 客户端通过DHCP中继更新租约:

Linux配置DHCP服务_DHCP_05

  1. DHCP客户端经过首次正确登录网络后,只需直接向上次为它分配IP地址的DHCP服务器直接以单播的形式发送DHCP REQUEST报文。
  2. DHCP服务器直接向客户端发送单播的确认响应报文或者拒绝响应报文。

DHCP Relay支持向DHCP服务器发送Release报文:

在网络中可以在DHCP中继上直接向服务器发送Release报文请求释放服务器给某客户端分配的IP地址,而不需要由客户端发起Release请求。可以通过在DHCP中继上配置Relay释放命令实现服务器对客户端的地址释放操作。


四、IP地址的分配与更新原则

4.1 IP地址分配的优先次序

DHCP服务器按照如下次序为客户端选择IP地址:

  • DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。
  • 客户端以前曾经使用过的IP地址,即客户端发送的DHCP DISCOVER报文中请求IP地址选项的地址。
  • 在DHCP地址池中,按照IP地址从大到小的顺序查询,选择最先找到的可供分配的IP地址。
  • 如果在DHCP地址池中未找到可供分配的IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误。

4.2 防止IP地址重复分配的方法

为防止IP地址重复分配导致地址冲突,DHCP服务器为客户端分配地址前,需要先对该地址进行探测。

地址探测是通过Ping命令实现的,检测是否能在指定时间内得到Ping应答。如果没有得到应答,则继续发送Ping报文,直到发送Ping包的数量达到最大值。如果仍然超时,则可以认为这个IP地址的网段内没有设备使用该IP地址,从而确保客户端被分得的IP地址是唯一的(根据RFC2132实现)。

4.3 IP地址预留

DHCP支持预留IP地址给客户端,预留的IP地址可以是地址池中的地址,也可以不是。如果是的话,则将其不列入到地址池可分配的IP地址中,这些预留出去的地址一般用于某个DNS服务器的IP地址。

4.4 PC机释放IP地址与更新租约的方法

在PC机上(即DHCP客户端)需要首先释放旧IP地址,然后获取新IP地址。

  1. 释放旧IP地址:
    操作系统不同命令会有所不同。可以使用下面两种方法中的一种。
  • 在用户PC机的Windows 7环境下使用ipconfig /release命令来主动释放IP地址;
  • 在Windows 98 MS-DOS界面下执行winipcfg /release命令来主动释放IP地址。
  1. 更新IP地址租约或申请新的IP地址:同一操作系统下,申请新的IP地址和更新IP地址使用的命令一样。如果用户希望申请更新IP地址,则需要在PC机上(即DHCP客户端)首先释放旧的IP地址,而更新租约不需要提前释放IP地址。
    不同的操作系统使用的命令也不同。用户可以使用下面两种方法中的一种。
  • 在用户PC机的Windows 7环境下使用ipconfig /renew命令来更新IP地址租约或申请新的IP地址;
  • 在Windows 98 MS-DOS界面下执行winipcfg /renew命令来更新IP地址租约或申请新的IP地址。

此时用户PC机向DHCP服务器发送DHCP DISCOVER报文。


五、配置DHCP

5.1 实验环境

本地实验环境如图6所示,路由器Router1连接到互联网Internet,下挂3台设备,分别是DHCP-Server、Client1-Linux、Client2-Windows,DHCP-Server用来配置DHCP服务,为Client1-Linux和Client2-Windows主机分配IP地址,另外DHCP-Server的e1网口和Client1-Linux的e1网口连接到管理网络,方便ssh远程管理。

图6 DHCP实验拓扑:

Linux配置DHCP服务_DHCP_06

主机名和IP地址规划如表2所示:

表2:主机名和IP地址规划

主机名

IP地址

操作系统

Router1

e0:DHCP动态获取

e1:192.168.100.1/24

Linux OpenWrt 5.10.100

DHCP-Server

e0:192.168.100.254/24

e1:172.16.10.10/24

Rocky Linux 8.9 (Green Obsidian)

Client1-Linux

e0:DHCP动态获取

e1:172.16.10.20/24

Rocky Linux 8.9 (Green Obsidian)

Client2-Windows

e0:DHCP动态获取

Windows 7 Pro

5.2 配置DHCP服务

前提条件:DHCP-Server服务器上已经为e0接口配置了静态ip地址192.168.100.254,并可以访问Internet,Client1和Client2主机均已为e1接口配置了静态ip地址,可以通过远程客户端ssh连接管理。

DHCP-Server服务器上安装dhcpd服务器程序,其软件包名称为dhcp-server

[root@dhcp-server ~]# dnf -y install dhcp-server

查看dhcpd服务程序的配置文件内容:

[root@dhcp-server ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@dhcp-server ~]# 

dhcp的服务程序的配置文件中只有3行注释语句,这意味着我们需要自行编写这个文件。如果不知道怎么编写,可以看一下配置文件中第2行的参考示例文件,其组成架构如图7所示:

图7 DHCP配置文件参考示例

Linux配置DHCP服务_DHCP_07

一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。

考虑到dhcpd服务程序配置文件的可用参数比较多,这里挑选了最常用的参数(见表3),并逐一进行了简单介绍,以便为接下来的实验打好基础。

表3 dhcpd服务程序配置文件中使用的常见参数以及作用

参数

作用

ddns-update-style 类型

定义DNS服务动态更新的类型,类型包括:

none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式)

allow/ignore client-updates

允许/忽略客户端更新DNS记录

default-lease-time 21600

默认超时时间

max-lease-time 43200

最大超时时间

option domain-name-servers 8.8.8.8

定义DNS服务器地址

option domain-name "domain.org"

定义DNS域名

range

定义用于分配的IP地址池

option subnet-mask

定义客户端的子网掩码

option routers

定义客户端的网关地址

broadcast-address 广播地址

定义客户端的广播地址

ntp-server IP地址

定义客户端的网络时间服务器(NTP)

nis-servers IP地址

定义客户端的NIS域服务器的地址

hardware 硬件类型 MAC地址

指定网卡接口的类型与MAC地址

server-name 主机名

向DHCP客户端通知DHCP服务器的主机名

fixed-address IP地址

将某个固定的IP地址分配给指定主机

time-offset 偏移差

指定客户端与格林尼治时间的偏移差

例如:我希望DHCP-Server服务器为192.168.100.0/24这个网络动态分配ip地址,配置选项和参数如表四

表四 dhcp配置选项和参数

选项

参数

默认租约时间

43200秒(12小时)

最大租约时间

86400秒(24小时)

IP地址范围

192.168.100.2 - 192.168.100.253

子网掩码

255.255.255.0

网关地址

192.168.100.1

DNS服务器地址

114.114.114.114, 223.5.5.5

搜索域

51cto.com

下面来编辑“/etc/dhcp/dhcpd.conf”这个配置文件:

[root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.2 192.168.100.253;
        option subnet-mask 255.255.255.0;
        option routers 192.168.100.1;
        option domain-name "51cto.com";
        option domain-name-servers 114.114.114.114, 223.5.5.5;
        default-lease-time 43200;
        max-lease-time 86400;
}

启动dhcpd服务并设置开机自启:

[root@dhcp-server ~]# systemctl enable --now dhcpd
[root@dhcp-server ~]# systemctl status dhcpd		# 查看dhcpd服务状态
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-12-16 14:46:41 CST; 9s ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 10985 (dhcpd)
   Status: "Dispatching packets..."
    Tasks: 1 (limit: 24773)
   Memory: 4.9M
   CGroup: /system.slice/dhcpd.service
           └─10985 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Dec 16 14:46:41 dhcp-server dhcpd[10985]: ** Ignoring requests on ens4.  If this is not what
Dec 16 14:46:41 dhcp-server dhcpd[10985]:    you want, please write a subnet declaration
Dec 16 14:46:41 dhcp-server dhcpd[10985]:    in your dhcpd.conf file for the network segment
Dec 16 14:46:41 dhcp-server dhcpd[10985]:    to which interface ens4 is attached. **
Dec 16 14:46:41 dhcp-server dhcpd[10985]: 
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Listening on LPF/ens3/50:1d:01:00:02:00/192.168.100.0/24
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Sending on   LPF/ens3/50:1d:01:00:02:00/192.168.100.0/24
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Sending on   Socket/fallback/fallback-net
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Server starting service.
Dec 16 14:46:41 dhcp-server systemd[1]: Started DHCPv4 Server Daemon.

防火墙放行dhcp服务:

[root@dhcp-server ~]# firewall-cmd --add-service=dhcp --permanent 
success
[root@dhcp-server ~]# firewall-cmd --reload
success

dhcp服务配置已完成,客户端动态获取ip验证。

Client1配置e0网口自动获取ip:

[root@client1-linux ~]# nmcli con show
NAME  UUID                                  TYPE      DEVICE 
ens3  fa1cc151-033f-453b-949c-e1347e2b8221  ethernet  ens3   # 查看e0网口的连接名称为ens3
ens4  994c59f1-1e37-3fe1-ad17-8b0a9c13116e  ethernet  ens4   
[root@client1-linux ~]#
[root@client1-linux ~]# nmcli con mod ens3 ipv4.method auto  # 修改ens3连接自动获取ip地址

查看获取到的ip信息:

[root@client1-linux ~]# nmcli con show ens3 |grep IP4
IP4.ADDRESS[1]:                         192.168.100.3/24
IP4.GATEWAY:                            192.168.100.1
IP4.ROUTE[1]:                           dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 106
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.100.1, mt = 106
IP4.DNS[1]:                             114.114.114.114
IP4.DNS[2]:                             223.5.5.5
IP4.DOMAIN[1]:                          51cto.com

ping外网测试连通性,并测试搜索域的可用性,例如在Client1上“ping edu”,系统自动在主机名“edu”后面加上“.51cto.com”

[root@client1-linux ~]# ping www
PING czu3my54yx6eodmg.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=22.6 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=23.7 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=23.0 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=4 ttl=52 time=23.4 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=5 ttl=52 time=23.1 ms
^C
--- czu3my54yx6eodmg.aliyunddos1017.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 22.614/23.159/23.651/0.361 ms
[root@client1-linux ~]# ping blog
PING 096j513y4u62dz90.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=21.9 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=24.2 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=22.7 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=4 ttl=52 time=23.6 ms
^C
--- 096j513y4u62dz90.aliyunddos1017.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 21.918/23.087/24.170/0.864 ms
[root@client1-linux ~]# 
[root@client1-linux ~]# 
[root@client1-linux ~]# ping edu
PING 2c6l1l72u1l8wck6.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=23.1 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=22.10 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=23.4 ms
^C
--- 2c6l1l72u1l8wck6.aliyunddos1017.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6056ms
rtt min/avg/max/mdev = 22.987/23.154/23.413/0.223 ms

Client2上打开桌面,进入网络和共享中心,查看网卡的网络连接详细信息,如图8所示,Client2已成功自动获取ip,特定的DNS后缀为“51cto.com”,租期为12小时。

图8 Client2-Windows的网络连接详细信息

Linux配置DHCP服务_DHCP_08

5.3 配置DHCP分配固定IP

如果我们想为Client2-Windows主机分配固定的ip地址,比如固定为192.168.100.150/24,首先在Client2-Windows主机的cmd命令行窗口执行ipconfig /release释放当前已获取到的ip地址,如图9所示:

图9 Client2-Windows主机释放ip地址

Linux配置DHCP服务_DHCP_09

在DHCP-Server上修改“/etc/dhcp/dhcpd.conf”配置文件,添加17-20行的内容,其中第18行的内容是Client2主机e0网口的mac地址,如图10,将Client2的e0网卡与ip地址192.168.100.150绑定,注意配置mac地址的格式,Windows系统使用横线分隔,Linux系统使用冒号分隔:

图10 Client2主机e0网卡MAC地址

Linux配置DHCP服务_DHCP_10

[root@client1-linux ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.2 192.168.100.253;
        option subnet-mask 255.255.255.0;
        option routers 192.168.100.1;
        option domain-name "51cto.com";
        option domain-name-servers 114.114.114.114, 223.5.5.5;
        default-lease-time 43200;
        max-lease-time 86400;
        host Client2-Windows {			# 添加本行到第20行内容
                hardware ethernet 50:04:EC:00:04:00;
                fixed-address 192.168.100.150;
                }
}

重启dhcpd服务,使配置生效:

[root@dhcp-server ~]# systemctl restart dhcpd

到Client2上cmd命令行输入“ipconfig /renew”,或在网络和共享中心里对网卡禁用再启用,重新获取ip验证,如图11所示,已获取到服务器为Client2分配的固定ip地址192.168.100.150

Linux配置DHCP服务_DHCP_11

有关DHCP-Relay的实验后续更新...


六、参阅

第14章 使用DHCP动态管理主机地址 | 《Linux就该这么学》

鳥哥私房菜 - 第九章、區域網路參數供應者:DHCP

S2750, S5700, S6700 系列以太网交换机 产品文档 - Huawei:DHCP概述

标签:Linux,报文,配置,服务器,dhcpd,IP地址,DHCP,客户端
From: https://blog.51cto.com/min2000/8852938

相关文章

  • Kali Linux:从入门到掌握局域网攻击 (nmap)
    kaliLinux中使用nmap。使用nmap的之一步是登录KaliLinux,如果需要,就启动一个图形会话(本系列的之一篇文章安装了KaliLinux的Enlightenment桌面环境)。在烂毕安装过程中,安装程序将提示用户输入用来登录的“root”用户和密码。一旦登录到KaliLinux机器,使用慧历备命令s......
  • linux 上安装kapacitor
    转载请注明出处:1.通过安装包安装1.使用以下命令下载安装包:wgethttps://dl.influxdata.com/kapacitor/releases/kapacitor_1.6.3-1_amd64.deb然后,运行以下命令来安装下载的包:sudodpkg-ikapacitor_1.6.3-1_amd64.deb        2.安装完成后,......
  • 在linux环境上安装python
    一、环境操作系统:CentOS7.964位Python版本:3.8.2二、安装包:百度网盘地址及提取码:地址:https://pan.baidu.com/s/1P1kSAm_OuAiBZEShJi1XPA 提取码:88ra三、步骤:3.1上传安装包并解压缩mkdir-p/usr/local/python3cd/usr/local/python3tar-zxvfPython-3.8.2.tgz3.......
  • linux常用27个命令
    (红帽子)cd/回车ls回车可以看到一些目录:bin存放常用命令boot存放启动程序dev存放设备文件etc存放启动,关闭,配置程序与文件home用户工作目录lib存放共享链接库root超级用户的工作目录tmp存放临时文件proc操作系统的实时信息sys系统的硬件设备信息var主要存放系统日志usr......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本机......
  • tsconfig.json文件配置
    tsconfig.json配置TypeScript使用tsconfig.json文件作为其配置文件,当一个目录中存在tsconfig.json文件,则认为该目录为TypeScript项目的根目录。基础字段files-设置要编译的文件的名称;['./src/main.tsx']include-设置需要进行编译的文件,支持路径模式匹配;['src']......
  • 关于在linux上部署tomcat
    一、环境准备1、选择一款远程工具连接到服务器2、准备一款ftp软件连接到服务器 二、tomcat搭建》、进入/opt/tars目录,按照appId创建文件夹,例如/opt/tars/10398。》、将 S:\研发中心\开发部\tools\Java\apache-tomcat-8.5.51.tar.gz(或通过tomcat官网下载对应的版本)通......
  • 【JDK+jenkins+gitee实现CI/CD(之二)】 配置jenkins拉取gitee代码自动构建项目
    前面我们已经学习了如何在阿里云Linux环境中安装jenkins和java环境这一节我们来配置已经安装好了的jenkins,并拉取GITEE上的仓库代码来自动构建项目一,安装jenkins必须的插件汉化插件Chinese,如果安装的jenkins自动中文片,可以跳过这一些安装gitee插件[GiteePlugin]安装docker......
  • Golang 配置文件动态更变(viper)
    一.下载包gogetgithub.com/spf13/viper二.源码1funcLoadConf(fpnamestring){2ini:=viper.New()3ini.SetConfigFile(fpname)45ini.SetDefault("database.dbname","esaletest")6ini.SetDefault("database.dbhos......