如何在 CentOS、RHEL 和 Fedora 上安装 DHCP 服务
创始人
2024-03-01 19:27:38
0

DHCP(Dynamic Host Configuration Protocol)是一个网络协议,它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配 IP 地址并提供其它相关的网络配置参数。

这意味着每次客户端节点启动(连接到网络)的时候,它都会获得一个和从不改变的“静态” IP 地址相反的“动态” IP 地址。DHCP 服务器给 DHCP 客户端分配 IP 地址称为“租约”,租约时间随客户端需要的连接时间或 DHCP 的配置而异。

在这篇指南中,我们会介绍如何在 CentOS/RHEL 和 Fedora 发行版中安装和配置 DHCP 服务。

设置测试环境

本次安装中我们使用如下的测试环境:

  • DHCP 服务器 - CentOS 7
  • DHCP 客户端 - Fedora 25 和 Ubuntu 16.04

DHCP 如何工作?

在进入下一步之前,让我们首先了解一下 DHCP 的工作流程:

  • 当已连接到网络的客户端计算机(配置为使用 DHCP)启动时,它会发送一个 DHCPDISCOVER 消息到 DHCP 服务器。
  • 当 DHCP 服务器接收到 DHCPDISCOVER 请求消息时,它会回复一个 DHCPOFFER 消息。
  • 客户端收到 DHCPOFFER 消息后,它再发送给服务器一个 DHCPREQUEST 消息,表示客户端已准备好获取 DHCPOFFER 消息中提供的网络配置。
  • 最后,DHCP 服务器收到客户端的 DHCPREQUEST 消息,并回复 DHCPACK 消息,表示允许客户端使用分配给它的 IP 地址。

第一步:在 CentOS 上安装 DHCP 服务

1、安装 DHCP 服务非常简单,只需要运行下面的命令即可。

$ yum -y install dhcp

重要:假如系统中有多个网卡,但你想只在其中一个网卡上启用 DHCP 服务,可以按照下面的步骤在该网卡上启用 DHCP 服务。

2、 打开文件 /etc/sysconfig/dhcpd,将指定网卡的名称添加到 DHCPDARGS 列表,假如网卡名称为 eth0,则添加:

DHCPDARGS=eth0

保存文件并退出 。

第二步:在 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 局域网配置 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;
}

第三步:为 DHCP 客户端分配静态 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 守护进程通过 UDP 监听67号端口):

---------- 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

第四步:配置 DHCP 客户端

8、 现在,你可以为网络中的客户端配置自动从 DHCP 服务器中获取 IP 地址。登录到客户端机器并按照下面的方式修改以太网接口的配置文件(注意网卡的名称和编号):

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

添加下面的选项:

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

保存文件并退出。

9、 你也可以在桌面服务器中按照下面的截图(Ubuntu 16.04桌面版)通过 GUI 设置 MethodAutomatic (DHCP)

Set DHCP in Client Network

在客户端网络中设置 DHCP

10、 按照下面的命令重启网络服务(你也可以通过重启系统):

---------- On CentOS/RHEL 7 ----------
$ systemctl restart network
---------- On CentOS/RHEL 6 ----------
$ service network restart

到了这里,如果所有设置都是正确的,你的客户端就应该能自动从 DHCP 服务器中获取 IP 地址。

你也可以阅读:

  1. 如何在 Debian Linux 中安装和配置 Multihomed ISC DHCP 服务
  2. 配置网络的 10 个有用的 “IP” 命令

在这篇文章中我们为你展示了如何在 RHEL/CentOS 中安装 DHCP 服务。在下面的评论框中给我们反馈吧。在接下来的文章中,我们还会为你展示如何在 Debian/Ubuntu 中安装 DHCP 服务。和 TecMint 保持联系。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 的爱好者,即将推出的 Linux SysAdmin 网络开发人员,目前也是 TecMint 的内容创作者,他喜欢和电脑一起工作,并且坚信共享知识。


via: http://www.tecmint.com/install-dhcp-server-in-centos-rhel-fedora/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

计算机网络4小时速成:网关...
计算机网络4小时速成:网关是做什么的?...
2025-05-28 18:01:36
部署一个dhcpd服务器
要部署一个dhcpd服务器,你需要按照以下步骤进行操作:安装dhc...
2025-01-08 00:32:20
不启用dhcp服务器会怎么...
DHCP是动态主机配置协议(Dynamic Host Config...
2024-12-27 15:00:31
BIND9withISC-...
这个问题通常是由于BIND9无法将指定机器的正向映射添加到DNS服...
2024-12-18 00:31:41
在 Ubuntu Serv...
Ubuntu 17.10之前版本 编辑 /etc/networ...
2024-10-11 06:53:39
Android上如何检索D...
可以使用Android提供的ConnectivityManager...
2024-10-10 06:32:03

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...