RH358管理DHCP和IP地址分配--使用DHCP方式配置IPv4地址分配

RH358管理DHCP和IP地址分配–使用DHCP方式配置IPv4地址分配

本章节介绍DHCP相关内容。虽然说DHCP基本都在网络设备上进行配置,但还存在一些场景下,需要使用linux的机器进行配置,所以还是得学习和了解。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

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客户端。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

猜你喜欢

转载自blog.csdn.net/qq_41765918/article/details/122161395