传统手动配置参数的问题DHCP基本概念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地 址具有独占权限直到租约到期为止。Important思考为什么DHCP客户端收到Offer之后不直接使用该IP地址还需要发送一个Request告知服务 器端 广播的Request报文让网络中其他DHCP服务器端得知客户端已选择了某个服务器端分配的IP地址保证 其他服务器端可以释放通过单播Offer分配给该客户端的IP地址。DHCP租期更新如果在50%租期时客户端未得到原服务器端的回应则客户端在87.5%租期时会广播发送DHCP Request任意一台DHCP服务器端都可回应该过程称为重绑定。租约到期后重新向DHCP服务器续约。DHCP服务器同意客户端续约。思考租期时长 长还是短好分场景流动性大的场景(火车站KTV酒吧超市)租期设置短 流动性小的场景(办公室家庭)设置 长租期在DHCP服务器上可以使用journalctl --unitdhcpd.service 命令来访问客户端与服务端通信消 息。 以下摘录显示了客户端通过DHCP请求IP地址。[rootdhcp-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-client1) 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 数据包。其他DHCP服务器释放它们为客户端准备的IP地址。但是当客户端使用 DHCP REQUEST 数据包更新其IP地址时服务器行为取决于服务器是否具有权威 性。 非权威的DHCP服务器会忽略DHCP REQUEST数据包中不知道的地址。当客户端发送的IP地址在权 威DHCP服务器管理的地址范围内但服务器以前不知道该IP地址时它将拒绝该请求并发回DHCP NAK 数据包。这可能意味着客户端最初是从网络上的另一台非权威的DHCP服务器获得其地址的。任何收到 DHCP NAK数据包的客户端都不能再使用该地址而必须请求一个新的地址。使用默认配置启动DHCP服务器时服务器不是权威服务器 这样可以防止非权威DHCP服务器接管权威 服务器提供的地址。DHCP服务器搭建场景路由器、交换机linux、windows servertplink小米路由器家庭场景tp-link小公司(10人)tp-link中公司100-500人路由器交换机大公司1000linux服务器路由器部署DHCP服务接口地址池路由器接口地址192.168.1.1/24属于192.168.1.0网段该网段成为能够分配的地址池接口地址自动成 为分配的网关地址第一步基础配置R1:Huaweisystem-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:Huaweisystem-view [Huawei]sysname sw1 [sw1]stp disable #关闭生成树 Warning: The global STP state will be changed. Continue? [Y/N]y #回答y第二步配置路由器DHCPR1:[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 查看R1r1system-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:Huaweisystem-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:Huaweisystem-view [Huawei]sysname sw1 [sw1]stp disable #关闭生成树 Warning: The global STP state will be changed. Continue? [Y/N]y #回答y第二步配置路由器DHCPR1:Huaweisystem-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]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:Huaweisystem-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.2R2:Huaweisystem-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.1SW1:Huaweisystem-view [Huawei]undo info en [Huawei]sys sw1 [sw1]stp disable Warning: The global STP state will be changed. Continue? [Y/N]ySW2:Huaweisystem-view [Huawei]undo info en [Huawei]sys sw2 [sw1]stp disable Warning: The global STP state will be changed. Continue? [Y/N]y第二步配置路由器DHCPR1# 创建地址池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.1r1 dhcp服务器第四步PC自动获取地址抓包R2 E0/0/0 E0/0/1 观察收到广播的dhcp discover通过dhcp中继单播发给 R1观察获取的地址Linux部署 DHCP 服务环境准备由于workstaion自带DHCP功能所以先将其关闭节点规划节点名称节点IP作用dhcp-server10.1.8.10/24服务器必须静态IPdhcp-client1(普通员工)-从dhcp-server自动获取随机IPdhcp-client2(经理)-从dhcp-server自动获取固定IP 10.1.8.88基础配置服务器必须静态IP地址 dhcp-server:[rootlocalhost ~]# 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 [rootlocalhost ~]# nmcli connection up ens33 [rootlocalhost ~]# hostnamectl set-hostname dhcp-serverdhcp-client1:[rootlocalhost ~]# hostnamectl set-hostname dhcp-client1dhcp-client2:[rootlocalhost ~]# hostnamectl set-hostname dhcp-client2要配置DHCPv4服务器请首先使用ip addr 命令确认您的网络接口配置是否指定了BROADCAST地 址。[rootdhcp-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 软件# 安装软件包 [rootdhcp-server ~]# yum install -y dhcp # 配置防火墙放行dhcp服务 [rootdhcp-server ~]# firewall-cmd --add-servicedhcp [rootdhcp-server ~]# firewall-cmd --add-servicedhcp --permanent # 配置 DHCP 服务器dhcpd服务使用/etc/dhcp/dhcpd.conf 配置文件。 dhcp软件包提供/usr/share/doc/dhcp-*/dhcpd.conf.example 配置文件示例。# 首先cat dhcp主配置文件发现提示我们去参考这个/usr/share/doc/dhcp*/dhcpd.conf.example [rootdhcp-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 [rootdhcp-server ~]# cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example # 窗口B典型的DHCP配置示例加在/etc/dhcp/dhcpd.conf末尾 [rootdhcp-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 laogao.cloud; #局域网设备的域名后缀 laogao.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 配置# 验证配置文件语法 [rootdhcp-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 file启用并启动服务# 启用并启动服务 [rootdhcp-server ~]# systemctl enable dhcpd --noww # 查看服务状态 [rootdhcp-server ~]# systemctl status dhcpd配置 DHCP 客户端dhcp-client1(普通员工)# 添加一个自动获取ip连接假设网卡设备名为ens33 [rootdhcp-client1 ~]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33 [rootdhcp-client1 ~]# nmcli connection up dynamic # 验证 [rootdhcp-client1 ~]# 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:07:ec:8b brd ff:ff:ff:ff:ff:ff inet 10.1.8.102/24 brd 10.1.8.255 scope global noprefixroute dynamic ens33 valid_lft 451sec preferred_lft 451sec inet6 fe80::fd60:8109:ed08:cd78/64 scope link noprefixroute valid_lft forever preferred_lft forever [rootdhcp-client1 ~]# cat /etc/resolv.conf # Generated by NetworkManager search laogao.cloud nameserver 223.5.5.5 [rootdhcp-client1 ~]# 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基于 MAC 地址预留IP地址在配置文件中host声明可以将MAC地址绑定到IP地址。此配置对于始终为特定系统的网络接口提供相同的IP地址特别有用尤其是Web或数据库系统之类的服务器。查看 dhcp-client2 MAC 地址[rootdhcp-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:02:49:2a brd ff:ff:ff:ff:ff:ff在以下示例中服务器始终为MAC地址是00:0c:29:02:49:2a 的系统分配10.1.8.88地址。配置绑定IP地址# 在/etc/dhcp/dhcpd.conf最后添加如下内容 [rootdhcp-server ~]# vim /etc/dhcp/dhcpd.conf host client.laogao.cloud { hardware ethernet 00:0c:29:02:49:2a; fixed-address 10.1.8.88; }重启服务[rootdhcp-server ~]# systemctl restart dhcpd客户端验证# 创建并激活连接 [rootdhcp-client2 ~]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33 [rootdhcp-client2 ~]# nmcli connection up dynamic # 验证 [rootdhcp-client2 ~]# 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:02:49:2a 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 555sec preferred_lft 555sec inet6 fe80::e068:efe7:110b:1b25/64 scope link noprefixroute valid_lft forever preferred_lft forever [rootdhcp-client2 ~]# cat /etc/resolv.conf # Generated by NetworkManager search laogao.cloud nameserver 223.5.5.5 [rootdhcp-client2 ~]# 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 ens33DHCP 中继服务器(扩展)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 中继实践使用centos 7模板克隆出3台机器dhcp-server,dhcp-relay,dhcp-client,然后开机实验主机主机名IP 地址虚拟网络dhcp-server.laogao.cloud10.1.8.10/24vmnet8dhcp-relay.laogao.cloud10.1.8.20/24vmnet8dhcp-relay.laogao.cloud10.1.1.20/24vmnet1dhcp-client1.laogao.cloud自动获取vmnet1dhcp-client2.laogao.cloud自动获取vmnet1vmnet1和vmnet8关闭dhcp功能。实验拓扑先将dhcp-client机器的网卡改为vmnet1给dhcp-relay添加第二块网卡(vmnet1)配置3台服务器IP地址,主机名dhcp-server:[rootlocalhost ~]# hostnamectl set-hostname dhcp-server [rootlocalhost ~]# 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 [rootlocalhost ~]# nmcli connection up ens33dhcp-relay:[rootlocalhost ~]# hostnamectl set-hostname dhcp-relay [rootlocalhost ~]# 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 [rootlocalhost ~]# nmcli connection up ens33 [rootlocalhost ~]# nmcli connection add ifname ens36 con-name ens36 type ethernet ipv4.method manual ipv4.addresses 10.1.1.20/24 [rootlocalhost ~]# nmcli connection up ens36dhcp-client:[rootlocalhost ~]# hostnamectl set-hostname dhcp-client配置 dhcp-server# 安装软件包 [rootdhcp-server ~]# yum install -y dhcp # 配置防火墙放行dhcp服务 [rootdhcp-server ~]# firewall-cmd --add-servicedhcp [rootdhcp-server ~]# firewall-cmd --add-servicedhcp --permanent # A窗口 [rootdhcp-server ~]# vim /usr/share/doc/dhcp-*/dhcpd.conf.example # B窗口从A窗口复制案例 [rootdhcp-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 laogao.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 laogao.cloud; default-lease-time 600; max-lease-time 7200; } # 启用并启动服务 [rootdhcp-server ~]# systemctl enable dhcpd --now # 查看服务状态 [rootdhcp-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 [rootdhcp-server ~]# nmcli connection modify ens33 ipv4.routes 10.1.1.20/32 10.1.8.20 [rootdhcp-server ~]# nmcli connection up ens33配置 dhcp-relay配置 dhcp relay[rootdhcp-relay ~]# yum install -y dhcp [rootdhcp-relay ~]# cp /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay.service [rootdhcp-relay ~]# vim /etc/systemd/system/dhcrelay.service [Unit] DescriptionDHCP Relay Agent Daemon Documentationman:dhcrelay(8) Wantsnetwork-online.target Afternetwork-online.target [Service] Typenotify # 在 ExecStart 参数末尾添加 DHCP 服务器 IP 地址 ExecStart/usr/sbin/dhcrelay -d --no-pid 10.1.8.10 StandardErrornull [Install] WantedBymulti-user.target [rootdhcp-relay ~]# systemctl enable dhcrelay.service --now配置路由转发# 开启路由转发 [rootdhcp-relay ~]# echo net.ipv4.ip_forward1 /etc/sysctl.conf [rootdhcp-relay ~]# sysctl -p /etc/sysctl.conf net.ipv4.ip_forward 1客户端测试[rootdhcp-client ~]# nmcli connection add con-name dynamic type ethernet ipv4.method auto ifname ens33 [rootdhcp-client ~]# nmcli connection up dynamic [rootdhcp-client ~]# ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens33 UP 10.1.1.100/24 fe80::32c5:ad2b:c0d6:f3ab/64 #获取 # 到地址 # 验证确实是dhcp-server分配的 [rootdhcp-server ~]# 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\004\\\034\000\014)6\302w; lease 10.1.1.100 { starts 2 2026/08/04 08:20:43; ends 2 2026/08/04 08:30:43; cltt 2 2026/08/04 08:20:43; binding state active; next binding state free; rewind binding state free; hardware ethernet 00:0c:29:d8:9d:e6; client-hostname dhcp-client; } lease 10.1.1.100 { starts 2 2026/08/04 08:21:14; ends 2 2026/08/04 08:31:14; cltt 2 2026/08/04 08:21:14; binding state active; next binding state free; rewind binding state free; hardware ethernet 00:0c:29:d8:9d:e6; client-hostname dhcp-client; }DHCP 服务器-Dnsmasq(扩展)Dnsmasq 介绍Dnsmasq 是一个集 DNS 缓存、DHCP 、DHCP 中继、PXE一体的软件。多个功能即可以同时实施也可以独立实施。作为 DNS 缓存服务器可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为 DHCP 服务器可用于为局域网电脑分配内网ip地址和提供路由。作为 DHCP 中继服务器为局域网提供 DHCP 中继服务。作为 TFTP 服务器提供网络 PXE 网络引导。Dnsmasq 轻量且易配置适用于个人用户或小型网络。接下来我们分别介绍这些功能。节点规划dhcp-client1 \ dhcp-client2 复用上个实验,dnsmasq重新克隆产生节点名称节点IP作用dnsmasq10.1.8.10/24(服务器必须静态IP)DHCP服务器dhcp-client1(普通员工)从dhcp-server自动获取随机IPDHCP客户端dhcp-client2(经理)从dhcp-server自动获取固定IP10.1.8.66DHCP客户端dnsmasq 安装# 基础配置 [rootlocalhost ~]# 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 [rootlocalhost ~]# nmcli connection up ens33 [rootlocalhost ~]# hostnamectl set-hostname dnsmasq # 安装软件 [rootdnsmasq ~]# yum install -y dnsmasq # 配置防火墙放行dhcp服务 [rootdnsmasq ~]# firewall-cmd --add-servicedhcp [rootdnsmasq ~]# firewall-cmd --add-servicedhcp --permanentdnsmasq 配置/etc/dnsmasq.conf 配置文件提供大量的注释说明。 比较重要参数listen-address定义监听的地址默认是监控本机的所有网卡上。dhcp-authoritativeDHCP 权威服务器。dhcp-rangeIP 地址池范围。可以配置多个。dhcp-host给特定 MAC 地址主机分配主机名和IP地址。dhcp-lease-maxDHCP 租约最长时间。dhcp-option定义 dhcp 选项。设置网关dhcp-optionoption:router,1.2.3.4设置域名服务器dhcp-optionoption:dns-server,1.2.3.4,1.2.3.5设置查找域dhcp-optionoption:domain-search,laogao.cloud,example.com设置对时服务器dhcp-optionoption:ntp-server,1.2.3.4,1.2.3.5配置示例# 文件末尾加上 [rootdnsmasq ~]# vim /etc/dnsmasq.conf # IP地址范围是10.1.8.50-150掩码24位租约时间是12小时 dhcp-range10.1.8.50,10.1.8.101,255.255.255.0,12h # 给Mac地址是00:0c:29:02:49:2a的主机分配IP地址10.1.8.66租约时间45分钟 dhcp-host00:0c:29:02:49:2a,10.1.8.66,45m # 设置网关 dhcp-optionoption:router,10.1.8.2 # 设置DNS dhcp-optionoption:dns-server,8.8.8.8dnsmasq 启用[rootdnsmasq ~]# pkill -9 dnsmasq [rootdnsmasq ~]# systemctl enable dnsmasq.service --now [rootdnsmasq ~]# systemctl status dnsmasq.service客户端测试dhcp-client1[rootdhcp-client1 ~]# nmcli connection up dynamic [rootdhcp-client1 ~]# ip add 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:07:ec:8b brd ff:ff:ff:ff:ff:ff inet 10.1.8.95/24 brd 10.1.8.255 scope global noprefixroute dynamic ens33 valid_lft 43177sec preferred_lft 43177sec inet6 fe80::fd60:8109:ed08:cd78/64 scope link noprefixroute valid_lft forever preferred_lft forever [rootdhcp-client1 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 8.8.8.8 [rootdhcp-client1 ~]# 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 ens33dhcp-client2[rootdhcp-client2 ~]# nmcli connection up dynamic [rootdhcp-client2 ~]# ip add 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:02:49:2a brd ff:ff:ff:ff:ff:ff inet 10.1.8.66/24 brd 10.1.8.255 scope global noprefixroute dynamic ens33 valid_lft 2696sec preferred_lft 2696sec inet6 fe80::e068:efe7:110b:1b25/64 scope link noprefixroute valid_lft forever preferred_lft forever [rootdhcp-client2 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 8.8.8.8 [rootdhcp-client2 ~]# 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 ens33DHCP 中继服务器-Dnsmasq(扩展-自学)这里采用上文中的环境中继服务通过Dnsmasq实现。配置 dnsmasq[rootdhcp-relay ~]# yum install -y dnsmasq [rootdhcp-relay ~]# vim /etc/dnsmasq.conf # 在末尾增加一条记录 # 作用来自于网卡10.1.1.20的dhcp请求转发到10.1.8.10 dhcp-relay10.1.1.20,10.1.8.10 # dhcp-relay可多次使用为不同网段提供relay功能 [rootdhcp-relay ~]# systemctl enable dnsmasq.service --now配置路由转发# 开启路由转发 [rootdhcp-relay ~]# echo net.ipv4.ip_forward1 /etc/sysctl.conf [rootdhcp-relay ~]# sysctl -p /etc/sysctl.conf net.ipv4.ip_forward 1客户端测试[rootdhcp-client1 ~]# nmcli connection up dynamic [rootdhcp-client2 ~]# nmcli connection up dynamic