云计算百科
云计算领域专业知识百科平台

DHCP服务器

DHCP服务器

传统手动配置参数的问题

参数多、理解难

  • 普通用户对于网络参数不了解,经常配置错误,导致无法正常访问网络。随意配置 ip 地址导致地址冲突更是时常发生。

工作量大

  • 交由网络管理员统一配置,工作量巨大,属于重复性劳动。
  • 网络管理员需要提前对 ip 地址进行规划、分配到个人。

利用率低

  • 企业网中每个人固定使用一个 IP 地址,IP 地址利用率低,有些地址可能长期处于未使用状态。

灵活性差

  • WLAN(Wireless Local Area Network,无线局域网)的出现使终端位置不再固定,当无线终端移动到另外一个无线覆盖区域时,可能需要再次配置 IP 地址。

DHCP 基本概念

在这里插入图片描述

  • 为解决传统的静态手工配置方式的不足,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)应运而生,其可以实现网络动态合理地分配 IP 地址给主机使用。
  • DHCP 采用 C/S 架构,主机无需配置,从服务器端获取地址,可实现接入网络后即插即用。

DHCP 优点

统一管理
在这里插入图片描述

  • IP 地址由从服务器端的地址池中获取,服务器端会记录维护 IP 地址的使用状态,做到 IP 地址统一分配、管理。

地址租期
在这里插入图片描述

  • DHCP 提出了租期的概念,可有效提高地址利用率。

DHCP 工作原理

在这里插入图片描述

  • 客户端使用 DHCPv4 配置网络接口时,网卡将 DHCP DISCOVER 数据包发送到 255.255.255.255 广播目标。因为路由器通常不转发该广播地址,所以必须将 DHCP 服务器与客户端安装在同一物理网络上,以便它可以接收 DHCP DISCOVER 数据包。您也可以将路由器配置为 DHCP 中继代理,转发 DHCP 消息到其他网络。
  • DHCP 服务器收到 DHCP DISCOVER 数据包后,响应 DHCP OFFER 数据包,该数据包包含其自己的 IP 地址和客户端应使用的 IP 地址。该数据包还包括一个租用期限,以指示所提供的 IP 地址有效的时间,以及其他网络参数,例如默认网关和 DNS 服务器。
  • 客户端收到 DHCP 服务器 DHCP OFFER 数据包后,发送 DHCP REQUEST 广播数据包,请求 DHCP 服务器提供的 IP 地址。这似乎很多余,但是网络上可能有多个 DHCP 服务器,或者路由器可能会将 DHCP OFFER 转发到多个网络。因此,客户端可能会从不同的 DHCP 服务器收到响应。客户端的DHCP REQUEST 数据包包括接受请求的 DHCP 服务器的 IP 地址。
  • DHCP 服务器收到 DHCP REQUEST 数据包后,会发送 DHCP ACK 数据包,确认客户端对客户端 IP 地址具有独占权限,直到租约到期为止。
  • 在这里插入图片描述

    思考:为什么 DHCP 客户端收到 Offer 之后不直接使用该 IP 地址,还需要发送一个 Request 告知服务器端?

    广播的 Request 报文让网络中其他 DHCP 服务器端得知客户端已选择了某个服务器端分配的 IP 地址,保证其他服务器端可以释放通过单播 Offer 分配给该客户端的 IP 地址。

    DHCP 租期更新

    • 如果在 50% 租期时客户端未得到原服务器端的回应,则客户端在 87.5% 租期时会广播发送 DHCP Request,任意一台 DHCP 服务器端都可回应,该过程称为重绑定。

    在这里插入图片描述

  • 租约到期后,重新向 DHCP 服务器续约。
  • DHCP 服务器,同意客户端续约。
  • 在这里插入图片描述

    思考:租期时长长还是短好

    分场景:流动性大的场景 (火车站,KTV,酒吧,超市租期设置短,流动性小的场景 (办公室,家庭) 设置长租期

    在 DHCP 服务器上,可以使用 journalctl –unit=dhcpd.service 命令来访问客户端与服务端通信消息。以下摘录显示了客户端通过 DHCP 请求 IP 地址。

    [root@dhcp-server ~]# journalctl –unit=dhcpd.service
    Aug 01 15:49:43 dhcp-server dhcpd[1239]: DHCPDISCOVER from 00:0c:29:07:ec:8b via ens33
    Aug 01 15:49:44 dhcp-server dhcpd[1239]: DHCPOFFER on 10.1.8.102 to 00:0c:29:07:ec:8b (dhcp-client) via ens33
    Aug 01 15:49:44 dhcp-server dhcpd[1239]: DHCPREQUEST for 10.1.8.102 (10.1.8.10) from 00:0c:29:07:ec:8b (dhcp-client1) via ens33
    Aug 01 15:49:44 dhcp-server dhcpd[1239]: DHCPACK on 10.1.8.102 to 00:0c:29:07:ec:8b (dhcp-client1) via ens33
    Aug 01 15:49:45 dhcp-server dhcpd[1239]: DHCPDISCOVER from 00:0c:29:02:49:2a via ens33
    Aug 01 15:49:45 dhcp-server dhcpd[1239]: DHCPOFFER on 10.1.8.88 to 00:0c:29:02:49:2a via ens33
    Aug 01 15:49:45 dhcp-server dhcpd[1239]: DHCPREQUEST for 10.1.8.88 (10.1.8.10) from 00:0c:29:02:49:2a via ens33
    Aug 01 15:49:45 dhcp-server dhcpd[1239]: DHCPACK on 10.1.8.88 to 00:0c:29:02:49:2a via ens33

    多 DHCP 服务器场景

    尽管 DHCP 支持在物理网络上运行多个 DHCP 服务器,但不建议这么做。正常情况下,同一个物理网络中只需要一台 DHCP 服务器应回答客户端的请求即可。

    在同一网络上运行多个服务器的情况下,当新客户端发送 DHCP DISCOVER 数据包以获取地址时,它可能会收到多个 DHCP OFFER 数据包。客户端仅接受其中一台服务器提供的 IP 地址。打包该服务器。但是,当客户端使用 DHCP REQUEST 数据包更新其 IP 地址时,服务器行为取决于服务器是否具有权威性。**非权威的 DHCP 服务器会忽略 DHCP REQUEST 数据包中不知道的地址。**当客户端发送的 IP 地址在权威数据库中,服务器理解此 IP 地址,但是服务器以前不知道该 IP 时,它将拒绝该请求并发送 DHCP NAK 数据包。这可能意味着客户端最初是从网络上的另一台非权威 DHCP 服务器获得其地址的。任何收到 DHCP NAK 数据包的客户端都不能再使用该地址,而必须请求一个新的地址。

    使用默认配置启动 DHCP 服务器时,服务器不是权威服务器,这样可以防止非权威 DHCP 服务器接管权威服务器提供的地址。

    DHCP 服务器搭建场景

    1.路由器、交换机

    2.linux、windows server

    3.tplink,小米路由器

    家庭场景:tp-link

    小公司 (10 人): tp-link 路由器

    中公司(100-500 人):路由器,交换机

    大公司(1000+):linux 服务器

    路由器部署DHCP服务

    接口地址池

    路由器接口地址池192.168.1.1/24属于192.168.1.0网段,该网段成为能够分配的地址池,接口地址自动成为分配的网关地址

    在这里插入图片描述

    第一步:基础配置

    R1:

    <Huawei>system-view #用户视图切换到系统视图
    [Huawei]undo info-center enable #关闭消息提示
    [Huawei]sysname r1 #设置主机名r1
    [r1]int e0/0/0 #进入e0/0/0接口
    [r1-Ethernet0/0/0]ip add 192.168.1.1 24 #配置IP地址192.168.1.1/24
    [r1-Ethernet0/0/0]quit #返回系统视图

    sw1:

    <Huawei>ststem-view
    [Huawei]sysname sw1
    [sw1]stp disable #关闭生成树
    Warning: The global STP state will be changed. Continue? [Y/N]y #回答y

    第二步:配置路由器DHCP

    R1:

    [r1]dhcp enable #全局使能dhcp功能
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]dhcp select interface #接口dhcp
    [r1-Ethernet0/0/0]dhcp server lease day 3 #dhcp租期3天
    [r1-Ethernet0/0/0]dhcp server dns-list 223.5.5.5 #dns分配223.5.5.5(阿里云公共DNS地址)
    [r1-Ethernet0/0/0]dhcp server excluded-ip-address 192.168.1.4 #地址池排除192.168.1.4

    第三步:pc自动获取地址

    pc1:
    在这里插入图片描述

    通过DHCP获取地址

    第四步:抓包观察DHCP工作原理

    在这里插入图片描述

    pc2:

    在这里插入图片描述
    在这里插入图片描述

    看抓包过程

    在这里插入图片描述

    动态的给pc3分配 192.168.1.88
    在这里插入图片描述

    记录pc3 MAC地址,绑定

    通过display mac-address 查看
    在这里插入图片描述

    R1:

    <r1>system-view
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]dhcp server static-bind ip-address 192.168.1.88 mac-address 5489-98f3-5b43 #将192.168.1.88绑定到PC3 MAC

    观察现象:

    pc3:
    在这里插入图片描述
    在这里插入图片描述

    全局地址池

    在这里插入图片描述

    第一步:基础配置

    R1:

    <Huawei>system-view #用户视图切换到系统视图
    [Huawei]undo info-center enable #关闭消息提示
    [Huawei]sysname r1 #设置主机名r1
    [r1]int e0/0/0 #进入e0/0/0接口
    [r1-Ethernet0/0/0]ip add 192.168.1.1 24 #配置IP地址192.168.1.1/24
    [r1-Ethernet0/0/0]quit #返回系统视图

    sw1:

    <Huawei>ststem-view
    [Huawei]sysname sw1
    [sw1]stp disable #关闭生成树
    Warning: The global STP state will be changed. Continue? [Y/N]y #回答y

    第二步:配置路由器DHCP

    R1:

    <Huawei>system-view
    [Huawei]undo info-center enable
    [Huawei]sysname r1
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]ip address 192.168.1.1 24
    [r1-Ethernet0/0/0]quit
    [r1]ip pool net1 #创建地址池
    [r1-ip-pool-net1]network 192.168.1.0 mask 24 #设置地址池范围
    [r1-ip-pool-net1]gateway-list 192.168.1.1 #指定网关地址
    [r1-ip-pool-net1]dns-list 223.5.5.5
    [r1-ip-pool-net1]lease day 3 hour 12 minute 30
    [r1-ip-pool-net1]excluded-ip-address 192.168.1.4
    [r1-ip-pool-net1]excluded-ip-address 192.168.1.44
    [r1-ip-pool-net1]static-bind ip-address 192.168.1.88 mac-address 5489-98f3-5b43
    [r1-ip-pool-net1]quit
    [r1]dhcp enable
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]dhcp select global #调用全局地址池

    第三步:PC自动获取地址

    PC1:
    在这里插入图片描述
    在这里插入图片描述

    PC3:

    在这里插入图片描述

    DHCP中继

    B楼的PC获取地址,要将dhcp discover报文发送到A楼的R1,跨路由器,由于dhcp discover报文是广 播,所以发送不过去,无法获取地址

    在这里插入图片描述

    配置dhcp 中继,R2将接收到的广播报文dhcp discover转成单播发送给dhcp服务器R1,从而获取地址
    在这里插入图片描述

    第一步:基础配置

    R1:

    <Huawei>system-view
    [Huawei]undo info en
    [Huawei]sysname r1
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]ip add 192.168.1.1 24
    [r1-Ethernet0/0/0]int e0/0/1
    [r1-Ethernet0/0/1]ip add 12.1.1.1 24
    [r1-Ethernet0/0/1]quit
    [r1]ip route-static 192.168.2.0 24 12.1.1.2

    R2:

    <Huawei>system-view
    [Huawei]undo info en
    [Huawei]sys r2
    [r2]int e0/0/0
    [r2-Ethernet0/0/0]ip add 192.168.2.1 24
    [r2-Ethernet0/0/0]int e0/0/1
    [r2-Ethernet0/0/1]ip add 12.1.1.2 24
    [r2-Ethernet0/0/1]quit
    [r2]ip route-static 192.168.1.0 24 12.1.1.1

    sw1:

    <Huawei>system-view
    [Huawei]undo info en
    [Huawei]sys sw1
    [sw1]stp disable
    Warning: The global STP state will be changed. Continue? [Y/N]y

    sw2:

    <Huawei>system-view
    [Huawei]undo info en
    [Huawei]sys sw2
    [sw1]stp disable
    Warning: The global STP state will be changed. Continue? [Y/N]y

    第二步:配置路由器DHCP

    R1:

    # 创建地址池1
    [r1]ip pool net1
    [r1-ip-pool-net1]network 192.168.1.0 mask 24
    [r1-ip-pool-net1]gateway-list 192.168.1.1
    [r1-ip-pool-net1]dns-list 8.8.8.8
    [r1-ip-pool-net1]quit

    # 创建地址池2
    [r1]ip pool net2
    [r1-ip-pool-net2]network 192.168.2.0 mask 24
    [r1-ip-pool-net2]gateway-list 192.168.2.1
    [r1-ip-pool-net2]dns-list 114.114.114.114
    [r1-ip-pool-net2]quit

    # 全局使能dhcp功能
    [r1]dhcp enable

    # 接口调用全局地址池
    [r1]int e0/0/0
    [r1-Ethernet0/0/0]dhcp select global
    [r1-Ethernet0/0/0]int e0/0/1
    [r1-Ethernet0/0/1]dhcp select global

    第三步:配置DHCP中继

    R2:

    [r2]dhcp enable
    [r2]int e0/0/0
    [r2-Ethernet0/0/0]dhcp select relay #开启dhcp中继
    [r2-Ethernet0/0/0]dhcp relay server-ip 12.1.1.1 #中继给12.1.1.1(r1 dhcp服务器)

    第四步:PC自动获取地址

    抓包R2 E0/0/0 E0/0/1 观察收到广播的dhcp discover通过dhcp中继单播发给 R1
    在这里插入图片描述

    在这里插入图片描述

    观察获取的地址
    在这里插入图片描述

    在这里插入图片描述

    Linux部署DHCP服务

    环境准备

    由于workstaion自带HDCP功能,所以先将其关闭
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    节点规划

    节点名称节点IP作用
    dhcp-server 10.1.8.10/24(服务器必须静态IP) DHCP服务器
    dhcp-client1(普通员工) 从dhcp-server自动获取随机IP DHCP客户端
    dhcp-client2(经理) 从dhcp-server自动获取固定IP 10.1.8.88 DHCP客户端

    基础配置

    服务器必须静态IP地址

    dhcp-server:

    [root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
    [root@localhost ~]# nmcli connection up ens33
    [root@localhost ~]# hostnamectl set-hostname dhcp-serve

    dhcp-client1:

    [root@localhost ~]# hostnamectl set-hostname dhcp-client1

    dhcp-client2:

    [root@localhost ~]# hostnamectl set-hostname dhcp-client2

    配置DHCPv4服务器,请首先使用ip addr命令确认您的网络接口配置是否指定了BROADCAST地址。

    [root@dhcp-server ~]# ip addr | grep ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    group default qlen 1000
    inet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens33

    服务器必须具备静态ip地址。

    安装DHCP软件

    # 安装软件包
    [root@dhcp-server ~]# yum install -y dhcp
    # 配置防火墙,放行dhcp服务
    [root@dhcp-server ~]# firewall-cmd –add-service=dhcp
    [root@dhcp-server ~]# firewall-cmd –add-service=dhcp –permanent

    配置DHCP服务器

    dhcpd服务使用 /etc/dhcp/dhcpd.conf 配置文件。 dhcp软件包提供/usr/share/doc/dhcp-*/dhcpd.conf.example 配置文件示例。

    # 首先cat dhcp主配置文件,发现提示我们去参考这个/usr/share/doc/dhcp*/dhcpd.conf.example
    [root@dhcp-server ~]# cat /etc/dhcp/dhcpd.conf
    #
    # DHCP Server Configuration file.
    # see /usr/share/doc/dhcp*/dhcpd.conf.example
    # see dhcpd.conf(5) man page
    #

    # 窗口A,参考/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example修改/etc/dhcp/dhcpd.conf
    [root@dhcp-server ~]# cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

    # 窗口B,典型的DHCP配置示例,加在/etc/dhcp/dhcpd.conf末尾
    [root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
    subnet 10.1.8.0 netmask 255.255.255.0 { #给10.1.8.0/24这个网络段设备分配IP
    range 10.1.8.101 10.1.8.130; #IP分配范围10.1.8.101-10.1.8.130
    option domain-name-servers 223.5.5.5; #分配给dhcp客户端dns地址为223.5.5.5(阿里云公共DNS)
    option domain-name "xiaoma.cloud"; #局域网设备的域名后缀 = xiaoma.cloud
    option routers 10.1.8.2; #分配给客户端的额网关地址为10.1.8.2
    option broadcast-address 10.1.8.255; #局域网广播地址。DHCP、ARP依赖它
    default-lease-time 600; #默认租期600秒
    max-lease-time 7200; #最大租期7200秒
    }

    配置说明:

    • authoritative,指示服务器对其所管理的子网具有权威性。
    • subnet,提供的子网详细。
    • range,指定服务器在该范围内分配IP地址。
    • option routers,指定服务器提供默认网关地址。
    • option domain-name-servers,指定服务器提供DNS名称服务器。
    • option domain-search,指定服务器提供DNS域搜索列表。
    • default-lease-time,提供网络信息默认租期,如果客户端不要求任何特定的租期。单位秒。
    • max-lease-time,指示服务器可以从客户端请求接受的最大租期。单位秒。

    客户端系统上的NetworkManager使用domain-name-servers和domain-search更新resolv.conf文 件中的nameserver和search参数。

    验证DHCP配置

    # 验证配置文件语法
    [root@dhcp-server ~]# dhcpd -t
    Internet Systems Consortium DHCP Server 4.2.5
    Copyright 2004-2013 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/
    Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not
    specified in the config fil

    启用并启动服务

    # 启用并启动服务
    [root@dhcp-server ~]# systemctl enable dhcpd –now

    # 查看服务状态
    [root@dhcp-server ~]# systemctl status dhcpd

    配置DHCP客户端

    dhcp-client1(普通员工)

    # 添加一个自动获取ip连接,假设网卡设备名为ens33
    [root@dhcp-client1 ~ 11:23:30]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33
    [root@dhcp-client1 ~ 12:28:17]# nmcli connection up dynamic

    # 验证
    [root@dhcp-client1 ~ 12:28:36]# ip addr show ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:4d:17:91 brd ff:ff:ff:ff:ff:ff
    inet 10.1.8.101/24 brd 10.1.8.255 scope global noprefixroute dynamic ens33
    valid_lft 590sec preferred_lft 590sec
    inet6 fe80::45d4:4eb4:c9bb:69b4/64 scope link noprefixroute
    valid_lft forever preferred_lft forever

    [root@dhcp-client1 ~ 12:28:47]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search xiaoma.cloud
    nameserver 223.5.5.5

    [root@dhcp-client1 ~ 12:29:10]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 10.1.8.2 0.0.0.0 UG 100 0 0 ens33
    10.1.8.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

    基于MAC地址预留IP地址

    在配置文件中,host声明可以将MAC地址绑定到IP地址。 此配置对于始终为特定系统的网络接口提供相 同的IP地址特别有用,尤其是Web或数据库系统之类的服务器。

    dhcp-client2(经理MAC地址查看

    [root@dhcp-client2 ~]# ip link show ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    mode DEFAULT group default qlen 1000
    link/ether `00:0c:29:9f:76:bb` brd ff:ff:ff:ff:ff:ff

    在以下示例中,服务器始终为MAC地址是 00:0c:29:02:49:2a 的系统分配10.1.8.88地址。

    # 在/etc/dhcp/dhcpd.conf最后添加如下内容:
    [root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
    host client.xiaoma.cloud {
    hardware ethernet 00:0c:29:9f:76:bb;
    fixed-address 10.1.8.88;
    }

    重启服务

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

    客户端验证

    # 创建并激活连接
    [root@dhcp-client2 ~ 13:53:04]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33
    [root@dhcp-client2 ~ 13:53:17]# nmcli connection up dynamic

    # 验证
    [root@dhcp-client2 ~ 13:53:24]# ip addr show ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:9f:76:bb brd ff:ff:ff:ff:ff:ff
    inet 10.1.8.88/24 brd 10.1.8.255 scope global noprefixroute dynamic ens33
    valid_lft 597sec preferred_lft 597sec
    inet6 fe80::ff27:a4e6:2f07:d6fd/64 scope link noprefixroute
    valid_lft forever preferred_lft forever

    [root@dhcp-client2 ~ 13:53:28]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search xiaoma.cloud
    nameserver 223.5.5.5

    [root@dhcp-client2 ~ 13:53:42]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 10.1.8.2 0.0.0.0 UG 100 0 0 ens33
    10.1.8.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

    DHCP中继服务器

    DHCP 中继介绍

    前文,我们介绍了DHCP客户端和DHCP服务器在同一个广播域中时,DHCP的工作机制。

    如果DHCP客户端与DHCP服务器不处于同一个广播域,那么DHCP客户端广播的DHCP Discover报文, 会被网络中的三层设备丢弃,无法被DHCP服务器接收,此时,就需要DHCP中继代理(DHCP Relay Agent)。

    DHCP中继可以实现在不同广播域(如子网、Vlan)之间处理和转发DHCP工作时的广播报文,使得 DHCP客户端可以跨网段获取IP地址及相关参数。

    DHCP 中继工作原理

    有DHCP中继的场景中,DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服 务器和DHCP客户端可以正常交互,下图示意了中继情形下,DHCP客户端与DHCP服务器的报文交互过 程。

    在这里插入图片描述

    在有中继的情形下,DHCP客户端申请IP地址仍然分为四个阶段:发现、提供、请求和确认(否认)。只 是客户端发送的报文会被同广播域内的DHCP中继收到,然后由DHCP中继将DHCP报文以单播的形式转 发给服务器。同样,服务器响应的DHCP报文以单播形式发给DHCP中继,然后再由中继转发给客户端。

    DHCP 中继实践

    实验主机

    主机名IP地址虚拟网络
    dhcp-server 10.1.8.10/24 vmnet8
    dhcp-relay 10.1.8.20/24 vmnet8
    dhcp-relay 10.1.1.20/24 vmnet1
    dhcp-client 自动获取 vmnet1

    vmnet1和vmnet8关闭dhcp功能。

    实验拓扑

    在这里插入图片描述

    先将dhcp-client机器的网卡改为vmnet1

    在这里插入图片描述
    在这里插入图片描述

    给dhcp-relay添加第二块网卡(vmnet1)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    配置3台服务器IP地址,主机名

    dhcp-server:

    [root@localhost ~]# hostnamectl set-hostname dhcp-server
    [root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
    [root@localhost ~]# nmcli connection up ens33

    dhcp-relay:

    [root@localhost ~]# hostnamectl set-hostname dhcp-relay
    [root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.20/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
    [root@localhost ~]# nmcli connection up ens33
    [root@localhost ~]# nmcli connection add ifname ens35 con-name ens35 type ethernet ipv4.method manual ipv4.addresses 10.1.1.20/24
    [root@localhost ~]# nmcli connection up ens36

    dhcp-client:

    [root@localhost ~]# hostnamectl set-hostname dhcp-client

    配置 dhcp-server

    配置 dhcp

    # 安装软件包
    [root@dhcp-server ~]# yum install -y dhcp

    # 配置防火墙,放行dhcp服务
    [root@dhcp-server ~]# firewall-cmd –add-service=dhcp
    [root@dhcp-server ~]# firewall-cmd –add-service=dhcp –permanent

    # A窗口
    [root@dhcp-server ~]# vim /usr/share/doc/dhcp-*/dhcpd.conf.example

    # B窗口,从A窗口复制案例
    [root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
    subnet 10.1.8.0 netmask 255.255.255.0 {
    range 10.1.8.100 10.1.8.200;
    option routers 10.1.8.20;
    option broadcast-address 10.1.8.255;
    option domain-name-servers 223.5.5.5;
    option domain-search "xiaoma.cloud";
    default-lease-time 600;
    max-lease-time 7200;
    }
    # 新增一个地址池
    subnet 10.1.1.0 netmask 255.255.255.0 {
    range 10.1.1.100 10.1.1.200;
    option routers 10.1.1.20;
    option broadcast-address 10.1.1.255;
    option domain-name-servers 223.5.5.5;
    option domain-search "xiaoma.cloud";
    default-lease-time 600;
    max-lease-time 7200;
    }

    # 启用并启动服务
    [root@dhcp-server ~]# systemctl enable dhcpd –now

    # 查看服务状态
    [root@dhcp-server ~]# systemctl status dhcpd

    配置路由

    DHCP server必须配置一个到达 DHCP relay 接收 DHCP 广播网卡的路由。

    如果不配置该路由,dhcp server 无法将数据包返回给 10.1.1.20 服务器,最终导致无法提供dhcp给 dhcp-client。

    # 当前实验环境: DHCP relay的第二个网卡,地址是:10.1.1.20/24 。
    # dhcp-server 去往 10.1.1.20/32 路由下一跳是 10.1.8.20
    [root@dhcp-server ~]# nmcli connection modify ens33 ipv4.routes '10.1.1.20/32 10.1.8.20'
    [root@dhcp-server ~]# nmcli connection up ens33

    配置 dhcp-relay

    配置 dhcp relay

    [root@dhcp-relay ~]# yum install -y dhcp

    [root@dhcp-relay ~]# cp /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay.service
    [root@dhcp-relay ~]# vim /etc/systemd/system/dhcrelay.service

    [Unit]
    Description=DHCP Relay Agent Daemon
    Documentation=man:dhcrelay(8)
    Wants=network-online.target
    After=network-online.target
    [Service]
    Type=notify
    # 在 ExecStart 参数末尾添加 DHCP 服务器 IP 地址
    ExecStart=/usr/sbin/dhcrelay -d –no-pid 10.1.8.10
    StandardError=null
    [Install]
    WantedBy=multi-user.target

    [root@dhcp-relay ~]# systemctl enable dhcrelay.service –now

    配置路由转发

    # 开启路由转发
    [root@dhcp-relay ~ ]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    [root@dhcp-relay ~ ]# sysctl -p /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    客户端测试

    [root@centos7 ~ ]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33
    [root@centos7 ~ ]# nmcli connection up dynamic

    [root@centos7 ~ ]# ip -br a
    lo UNKNOWN 127.0.0.1/8 ::1/128
    ens33 UP 10.1.1.131/24 fe80::a614:3cb9:71d6:9829/64 #获取到地址

    # 验证确实是dhcp-server分配的
    [root@centos7 ~ ]# cat /var/lib/dhcpd/dhcpd.leases
    # The format of this file is documented in the dhcpd.leases(5) manual page.
    # This lease file was written by isc-dhcp-4.2.5

    server-duid "\\000\\001\\000\\0012\\004a\\323\\000\\014)\\3675v";

    lease 10.1.1.131 {
    starts 2 2026/08/04 08:44:57;
    ends 2 2026/08/04 08:54:57;
    cltt 2 2026/08/04 08:44:57;
    binding state active;
    next binding state free;
    rewind binding state free;
    hardware ethernet 00:0c:29:28:6d:5d;
    client-hostname "dhcp-client";
    }

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » DHCP服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!