---
author: Aaron Kili
category: 系统运维
comments_data: []
count:
  commentnum: 0
  favtimes: 7
  likes: 0
  sharetimes: 0
  viewnum: 6357
date: '2017-04-10 21:02:16'
editorchoice: false
excerpt: DHCP（Dynamic Host Configuration Protocol）是一个网络协议，它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配
  IP 地址并提供其它相关的网络配置参数。
fromurl: http://www.tecmint.com/install-dhcp-server-in-centos-rhel-fedora/
id: 8391
islctt: true
largepic: /images/p/201704/10/210212fa0vyfoadmrbtkto.jpg
permalink: /article-8391-1.html
pic: /images/p/201704/10/210212fa0vyfoadmrbtkto.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: DHCP（Dynamic Host Configuration Protocol）是一个网络协议，它使得服务器能从预定义的 IP 池中为网络中的客户端节点自动分配
  IP 地址并提供其它相关的网络配置参数。
tags:
- DHCP
thumb: false
title: 如何在 CentOS、RHEL 和 Fedora 上安装 DHCP 服务
titlepic: true
translator: ictlyh
updated: '2017-04-10 21:02:16'
---

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


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


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


![](/images/p/201704/10/210212fa0vyfoadmrbtkto.jpg)


### 设置测试环境


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


* 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 设置 `Method` 为 `Automatic (DHCP)`。


![Set DHCP in Client Network](/images/p/201704/10/210218s5wt0qwhjqhjw598.png)


*在客户端网络中设置 DHCP*


10、 按照下面的命令重启网络服务（你也可以通过重启系统）：



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

```

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


你也可以阅读：


1. [如何在 Debian Linux 中安装和配置 Multihomed ISC DHCP 服务](http://www.tecmint.com/install-and-configure-multihomed-isc-dhcp-server-on-debian-linux/)
2. [配置网络的 10 个有用的 “IP” 命令](http://www.tecmint.com/ip-command-examples/)


在这篇文章中我们为你展示了如何在 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](http://www.tecmint.com/author/aaronkili/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出