网站搜索

如何在 CentOS、RHEL 和 Fedora 中安装 DHCP 服务器


DHCP动态主机配置协议)是一种网络协议,使服务器能够自动分配 IP 地址并向网络上的客户端提供其他相关的网络配置参数,从预定义的 IP 池。

这意味着每次客户端(连接到网络)启动时,它都会获得一个“动态”IP 地址,而不是永远不会改变的“静态”IP 地址。 DHCP 服务器分配给 DHCP 客户端的 IP 地址是“租用”的,租用时间可能会有所不同,具体取决于客户端可能需要连接或 DHCP 配置的时间长短。

在本教程中,我们将介绍如何在 CentOS/RHEL 和 Fedora 发行版中安装和配置 DHCP 服务器。

测试环境搭建

我们将使用以下测试环境来进行此设置。

DHCP Server - CentOS 7 
DHCP Clients - Fedora 25 and Ubuntu 16.04

DHCP 是如何工作的?

在继续之前,我们先简要解释一下 DHCP 的工作原理:

  • 当客户端计算机(配置为使用 DHCP)并连接到网络时,它会向 DHCP 服务器转发一条 DHCPDISCOVER 消息。
  • DHCP服务器收到DHCPDISCOVER请求消息后,回复DHCPOFFER消息。
  • 然后客户端收到DHCPOFFER消息,并向服务器发送DHCPREQUEST消息,表明它准备获取DHCPOFFER中提供的网络配置强>消息。
  • 最后但并非最不重要的一点是,DHCP 服务器接收来自客户端的 DHCPREQUEST 消息,并发送 DHCPACK 消息,表明客户端现在可以使用分配给它的 IP 地址。

步骤1:在CentOS中安装DHCP服务器

1. 安装 DCHP 非常简单,只需运行以下命令即可。

yum -y install dhcp

重要:假设系统连接了多个网络接口,但您希望仅在其中一个接口上启动 DHCP 服务器,请设置 DHCP 服务器仅在该界面上启动,如下所示。

2. 打开文件/etc/sysconfig/dhcpd,将特定接口的名称添加到DHCPDARGS列表中,例如如果接口是eth0,然后添加:

DHCPDARGS=eth0

保存文件并退出。

步骤2:在CentOS中配置DHCP服务器

3.对于初学者来说,要设置DHCP服务器,第一步是创建dhcpd.conf配置文件,主要的DHCP配置文件通常是/ etc/dhcp/dhcpd.conf(默认为空),它保存发送给客户端的所有网络信息。

不过,有一个示例配置文件 /usr/share/doc/dhcp*/dhcpd.conf.sample,它是配置 DHCP 服务器的良好起点。

并且,DHCP 配置文件中定义了两种类型的语句,它们是:

  • 参数 – 说明如何执行任务、是否执行任务或向 DHCP 客户端发送哪些网络配置选项。
  • 声明 – 指定网络拓扑、定义客户端、为客户端提供地址或将一组参数应用于一组声明。

因此,首先将示例配置文件复制为主配置文件,如下所示:

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

4. 现在,打开主配置文件并定义 DHCP 服务器选项:

vi /etc/dhcp/dhcpd.conf 

首先在文件顶部设置以下全局参数,这些参数将应用于所有子网(请指定适用于您的方案的值):

option domain-name "tecmint.lan";
option domain-name-servers ns1.tecmint.lan, ns2.tecmint.lan;
default-lease-time 3600; 
max-lease-time 7200;
authoritative;

5.现在,定义一个子网;在此示例中,我们将为 192.168.56.0/24 LAN 网络配置 DHCP(请记住使用适用于您的场景的参数):

subnet 192.168.56.0 netmask 255.255.255.0 {
        option routers                  192.168.56.1;
        option subnet-mask              255.255.255.0;
        option domain-search            "tecmint.lan";
        option domain-name-servers      192.168.56.1;
        range   192.168.56.10   192.168.56.100;
        range   192.168.56.120  192.168.56.200;
}

步骤 3:为 DHCP 客户端分配静态 IP

您可以为网络上的特定客户端计算机分配静态 IP 地址,只需在 /etc/dhcp/dhcpd.conf 文件中定义以下部分,您必须在其中明确指定其 MAC 地址和固定 IP 地址。待分配IP:

host ubuntu-node {
	 hardware  ethernet 00:f0:m4:6y:89:0g;
	 fixed-address 192.168.56.105;
 }

host fedora-node {
	 hardware  ethernet 00:4g:8h:13:8h:3a;
	 fixed-address 192.168.56.110;
 }

保存文件并关闭它。

注意:您可以使用以下命令查找或显示 Linux MAC 地址。

ifconfig -a eth0 | grep HWaddr

6. 现在同时启动 DHCP 服务,并使其在下次系统启动时自动启动,使用以下命令:

---------- On CentOS/RHEL 7 ---------- 
systemctl start dhcpd
systemctl enable dhcpd

---------- On CentOS/RHEL 6 ----------
service dhcpd start
chkconfig dhcpd on

7. 接下来,不要忘记允许 DHCP 服务(DHCPD 守护程序侦听端口 67/UDP),如下所示:

---------- On CentOS/RHEL 7 ----------
firewall-cmd --add-service=dhcp --permanent 
firewall-cmd --reload 

---------- On CentOS/RHEL 6 ----------
iptables -A INPUT -p tcp -m state --state NEW --dport 67 -j ACCEPT
service iptables save

步骤 4:配置 DHCP 客户端

8. 现在,您可以将网络上的客户端配置为自动从 DHCP 服务器接收 IP 地址。登录到客户端机器并按如下方式修改以太网接口配置文件(不包括接口名称/编号):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加以下选项:

DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes

保存文件并退出。

9. 您还可以在桌面计算机上使用 GUI 执行设置,将方法设置为自动 (DHCP),如下图所示(Ubuntu 16.04 桌面版)。

10.然后按如下方式重新启动网络服务(您可以重新启动系统):

---------- On CentOS/RHEL 7 ----------
systemctl restart network

---------- On CentOS/RHEL 6 ----------
service network restart

此时,如果所有设置都正确,您的客户端应该会自动从 DHCP 服务器接收 IP 地址。

您还可以阅读:

  1. 如何在 Debian Linux 上安装和配置多宿主 ISC DHCP 服务器
  2. 10 个有用的“IP”命令来配置网络接口

在本教程中,我们向您展示了如何在 RHEL/CentOS 中设置 DHCP 服务器。使用下面的评论表给我们回信。在即将发布的文章中,我们将向您展示如何在 Debian/Ubuntu 中设置 DHCP 服务器。在那之前,请始终与 TecMint 保持联系。