金鱼哥RHCA回忆录:RH358管理DHCP和IP地址分配--使用DHCP方式配置IPv4地址分配
RH358管理DHCP和IP地址分配–使用DHCP方式配置IPv4地址分配
本章节介绍DHCP相关内容。虽然说DHCP基本都在网络设备上进行配置,但还存在一些场景下,需要使用linux的机器进行配置,所以还是得学习和了解。
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章( 第四章 管理DHCP和IP地址分配–使用DHCP方式配置IPv4地址分配 )收录在RHCA专栏:RHCA 回忆录
1. 描述DHCP
在大型网络中,为系统静态分配IP地址是一个挑战。您必须仔细跟踪每个地址,以确保不会同时在多个系统上使用它,并且部署一个新系统通常需要手动步骤来分配它的IP地址。在云环境中,当用户可以按需提供多个实例时,自动化网络配置是必需的。
动态主机配置协议(DHCP)为系统提供了一种方法来自动检索它们的网络配置参数,如IP地址、默认网关、DNS服务器和域或NTP服务器。
通过在网络上部署DHCP服务器,可以集中控制这些参数。您可以为客户端分配一定范围的IP地址,也可以为特定客户端分配保留的IP地址。
DHCP有两种类似的协议:用于IPv4组网的DHCPv4(原DHCP)和用于IPv6组网的DHCPv6。本节主要介绍DHCPv4。DHCPv6将在本章后面讨论。
检查DHCPv4消息
当使用DHCPv4配置客户端网络接口时,它会发送DHCPDISCOVER报文到广播目的255.255.255.255。由于路由器通常不转发该广播地址,因此DHCP服务器必须与客户端安装在同一物理网络中,才能接收到DHCPDISCOVER报文。也可以将路由器配置为DHCP中继,将DHCP报文发送到不同网络上的服务器。
DHCP服务器响应一个包含自己的IP地址和客户端需要使用的IP地址的DHCPOFFER报文。该包还包括一个租期,以表明提供的IP地址的有效时间,以及其他网络参数,如默认网关和DNS服务器。
然后客户端广播一个DHCPREQUEST报文,请求DHCP服务器提供的IP地址。乍一看,这似乎是多余的,但是网络上可能有多个DHCP服务器,或者路由器可能将DHCPOFFER转发到多个网络。因此,客户端可能会收到来自不同DHCP服务器的多个请求。client的DHCPREQUEST报文中包含了接收请求的DHCP服务器的IP地址。
DHCP服务器收到DHCPREQUEST报文后,发送DHCPACK报文,确认客户端在租期到期之前对该客户端IP地址拥有独占权。
在DHCP服务器上,systemd-journald服务捕获这些交换。使用journalctl --unit=dhcpd.service命令访问日志信息。下面的摘录显示了一个使用DHCP请求IP地址的客户端。
DHCPDISCOVER from 52:54:00:01:fa:0b via eth0
MAC地址为52:54:00:01:fa: ob的客户端发送DHCPDISCOVER报文。
DHCPOFFER on 192.168.0.150 to 52:54:00:01:fa:0b (hosta) via eth0
服务器提供192.168.0.150的IP地址。
DHCPREQUEST for 192.168.0.150 (192.168.0.2) from 52:54:00:01:fa:0b (hosta) via eth0
客户端请求该IP地址。
DHCPACK on 192.168.0.150 to 52:54:00:01:fa:0b (hosta) via eth0
客户端请求该IP地址。
客户端会在租期到期之前定时向服务器发送DHCPREQUEST报文,以确保服务器不会回收该IP地址。
DHCP运行过程示意图
管理多台DHCP服务器
虽然DHCP支持在物理网络上运行多个DHCP服务器,但管理这样的环境是具有挑战性的。正常情况下,只有一台DHCP服务器响应客户端的请求。
当多个服务器运行在同一个网络上时,当一个新客户端发送一个DHCPDISCOVER数据包来获取一个地址时,它可能会收到多个DHCPOFFER数据包。客户端只接受一个服务器的请求,并广播一个包含该服务器IP地址的DHCPREQUEST报文。其他DHCP服务器释放为客户端准备的IP地址。
然而,当客户端使用DHCPREQUEST报文更新其IP地址时,服务器的行为取决于服务器是否权威。
当客户端发送的IP地址在授权DHCP服务器管理的地址范围内,但服务器之前不知道该IP地址时,它会拒绝该请求并发回DHCPNAK报文。这可能意味着客户端最初从网络上的另一台DHCP服务器获得其地址。任何收到DHCPNAK数据包的客户端都不能再使用该地址,必须请求一个新的地址。
对于不知道的地址,非授权DHCP服务器将忽略DHCPREQUEST报文。
当使用默认配置启动DHCP服务器时,该服务器不是权威的。这可以防止错误启动的DHCP服务器接管权威服务器提供的地址管理。
重要 :在同一物理网络上运行多个授权DHCP服务器,在同一范围内分配IP地址可能会导致网络问题。因此,这些DHCP服务器可能会将相同的地址分配给两个不同的客户端系统,或错误配置这些系统。
2. 部署DHCP服务器
要配置DHCPv4服务器,首先使用ip addr命令来验证您的网络接口配置指定了一个BROADCAST地址。请记住,DHCPv4客户机广播它们的请求。
[user@host ~]$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:01:fa:0a brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::7418:cf98:c742:3681/64 scope link noprefixroute
valid_lft forever preferred_lft forever
服务器的静态IP地址必须在DHCP服务器管理的范围内。如上所示,DHCP服务器的地址为192.168.0.2/24。该服务器管理192.168.0.0/24 子网。
dhcp-server包提供IPv4和IPv6的DHCP服务。DHCPv6将在后面讨论。
[root@host ~]# yum install dhcp-server
打开dhcp防火墙服务,它控制访问端口67/UDP,以允许与您的dhcp服务器通信
[root@host ~]# firewall-cmd --permanent --add-service=dhcp
[root@host ~]# firewall-cmd --reload
配置DHCP服务器
dhcpd服务使用/etc/dhcp/dhcpd.conf配置文件。dhcp-server包中提供了/usr/share/doc/dhcp-server/dhcpd.conf.example置文件示例。使用该文件作为配置的起点。
以典型的DHCP配置为例
authoritative; # 权威指令指示服务器对其管理的子网是权威的。
subnet 192.168.0.0 netmask 255.255.255.0 { # subnet位置提供子网的详细信息。
range 192.168.0.150 192.168.0.254; # 服务器在这个范围内分配IP地址。
option routers 192.168.0.1; # 服务器提供默认的网关地址。
option broadcast-address 192.168.0.255;
option domain-name-servers 172.25.254.254; # 服务器提供的DNS名称服务器。
option domain-search "example.net", "example.com"; # 服务器提供DNS域搜索列表。
default-lease-time 600; # 如果客户端没有要求任何特定的租期长度,default-lease-time参数提供了一个以秒为单位的默认值。
max-lease-time 7200; # max-lease-time表示服务器可以接受客户端请求的最大租约时间。
}
客户端系统上的NetworkManager使用两个DHCP选项,option domain-name-servers和option domain-search来更新/etc/resolv.conf文件中的nameserver和search参数。还有一个附加的DHCP选项:option domain-name domain_name;。自从redhat Enterprise Linux 6以来,NetworkManager也将该域名存储在search参数中。
基于MAC地址预留IP地址
在配置文件中,主机声明可以将MAC地址与IP地址绑定。这种配置对于始终为特定系统的网络接口提供相同的IP地址特别有用,特别是当它提供web或数据库系统等服务时。
下面例子,服务器总是将192.168.0.3地址分配给MAC地址为52:54:00:01:fa:oc的系统。
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
...output omitted...
}
host web.example.net {
hardware ethernet 52:54:00:01:fa:0c;
fixed-address 192.168.0.3;
}
验证配置
在启动dhcpd systemd服务之前,使用dhcpd -t命令测试您的配置。当检测到错误时,该命令返回非零值。
[root@host ~]# dhcpd -t
Internet Systems Consortium DHCP Server 4.3.6
Copyright 2004-2017 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
ldap_gssapi_principal is not set,GSSAPI Authentication for LDAP will not be used
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not
specified in the config file
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases
[root@host ~]# echo $?
0
使用systemctl命令启动并启用服务。
[root@host ~]# systemctl enable --now dhcpd
3. 配置DHCP客户端
如果需要在客户端上配置用于DHCP的接口,请使用nmcli命令设置ipv4.method为auto。
[root@host ~]# nmcli con add con-name dhcp-connection type ethernet \
ifname eth0 ipv4.method auto
4. 课本练习
[student@workstation ~]$ lab dhcp-ipv4config start
在本练习中,您将在服务器上部署一个DHCP服务器,为连接到辅助网络的系统提供网络配置。
DHCP服务器管理192.168.0.0/24子网,下发192.168.0.200 ~ 192.168.0.254范围内的IP地址。它还向客户机系统提供DNS参数。
1. 准备部署前的前期工作。
在部署DHCP服务器前,需要在DHCP服务器管理的子网中有一个网口,该网口的IP地址为静态IP地址。
[root@servera ~]# nmcli con add con-name ge-conn type ethernet ifname eth1 ipv4.addresses 192.168.0.10/24 ipv4.method manual
[root@servera ~]# nmcli con up ge-conn
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/54)
[root@servera ~]# ip addr show dev eth1
2. 安装dhcp-server软件包。
[root@servera ~]# yum -y install dhcp-server
3. 配置DHCP服务器如下表所示。
[root@servera ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.254;
option broadcast-address 192.168.0.255;
option domain-name-servers 172.25.254.254;
option domain-search "example.net";
default-lease-time 600;
max-lease-time 7200;
}
[root@servera ~]# dhcpd -t
Internet Systems Consortium DHCP Server 4.3.6
Copyright 2004-2017 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
ldap_gssapi_principal is not set,GSSAPI Authentication for LDAP will not be used
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases
[root@servera ~]# echo $?
0
4. 开启并启动dhcpd服务,打开防火墙端口。
[root@servera ~]# systemctl enable --now dhcpd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.
[root@servera ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-06-15 17:02:31 CST; 5s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 3264 (dhcpd)
Status: "Dispatching packets..."
Tasks: 1 (limit: 11248)
Memory: 4.9M
CGroup: /system.slice/dhcpd.service
└─3264 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
…………
[root@servera ~]# firewall-cmd --permanent --add-service=dhcp
success
[root@servera ~]# firewall-cmd --reload
success
5. 按要求创建NetworkManager连接。
该连接必须使用DHCP从服务器上运行的DHCP服务器检索网络配置参数。
[root@serverb ~]# nmcli con add con-name dhcp-conn type ethernet ifname eth1 ipv4.method auto
[root@serverb ~]# nmcli con up dhcp-conn
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@serverb ~]# ip addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:01:fa:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.0.200/24 brd 192.168.0.255 scope global dynamic noprefixroute eth1
valid_lft 520sec preferred_lft 520sec
inet6 fe80::bb0d:944:a0e6:35d1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@serverb ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search lab.example.com example.com example.net
nameserver 172.25.250.254
nameserver 172.25.254.254
6. 修改DHCP服务器的配置,为serverc的第二个网口分配固定IP地址。
[root@servera ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.254;
option broadcast-address 192.168.0.255;
option domain-name-servers 172.25.254.254;
option domain-search "example.net";
default-lease-time 600;
max-lease-time 7200;
}
host serverc {
hardware ethernet 52:54:00:01:fa:0c;
fixed-address 192.168.0.100;
}
[root@servera ~]# dhcpd -t
Internet Systems Consortium DHCP Server 4.3.6
Copyright 2004-2017 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
ldap_gssapi_principal is not set,GSSAPI Authentication for LDAP will not be used
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases
[root@servera ~]# echo $?
0
[root@servera ~]# systemctl restart dhcpd
7. 按要求创建NetworkManager连接。
[root@serverc ~]# nmcli con add con-name dhcp-conn type ethernet ifname eth1 ipv4.method auto
[root@serverc ~]# nmcli con up dhcp-conn
[root@serverc ~]# ip addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:01:fa:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global dynamic noprefixroute eth1
valid_lft 576sec preferred_lft 576sec
inet6 fe80::a92f:3261:7c06:2483/64 scope link noprefixroute
valid_lft forever preferred_lft forever
完成实验。
[student@workstation ~]$ lab dhcp-ipv4config finish
总结
- 介绍DHCP过程。
- 如何部署DHCP服务器。
- 配置DHCP客户端。
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。
以上就是【金鱼哥】对 第四章 管理DHCP和IP地址分配–使用DHCP方式配置IPv4地址分配 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!
- 点赞
- 收藏
- 关注作者
评论(0)