网站搜索

如何在 Ubuntu 和 Debian 中安装 DHCP 服务器


动态主机配置协议 (DHCP) 是一种网络协议,用于使主机能够从服务器自动分配 IP 地址和相关网络配置。

DHCP 服务器分配给 DHCP 客户端的 IP 地址是“租用”的,租用时间通常根据客户端计算机可能需要连接或 DHCP 配置的时间而变化。

DHCP 是如何工作的?

以下是 DHCP 实际工作原理的快速描述:

  • 一旦客户端(配置为使用 DHCP)并连接到网络启动,它就会向 DHCP 服务器发送 DHCPDISCOVER 数据包。
  • 当DHCP服务器收到DHCPDISCOVER请求报文时,会回复DHCPOFFER报文。
  • 然后客户端收到DHCPOFFER数据包,并向服务器发送DHCPREQUEST数据包,表明它已准备好接收DHCPOFFER中提供的网络配置信息强>数据包。
  • 最后,在 DHCP 服务器收到客户端的 DHCPREQUEST 数据包后,它会发送 DHCPACK 数据包,表明客户端现在可以使用分配给它的 IP 地址。

在本文中,我们将向您展示如何在 Ubuntu/Debian Linux 中设置 DHCP 服务器,并且我们将使用 sudo 命令运行所有命令以获得 root 用户权限。

测试环境搭建

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

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

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

1. 运行以下命令安装 DCHP 服务器软件包,该软件包以前称为 dhcp3-server

sudo apt install isc-dhcp-server

2. 安装完成后,编辑文件 /etc/default/isc-dhcp-server 以使用 INTERFACES 选项定义 DHCPD 用于服务 DHCP 请求的接口。

例如,如果您希望 DHCPD 守护进程侦听 eth0,请按如下方式设置:

INTERFACES="eth0"

并了解如何为上述接口配置静态 IP 地址。

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

3. 主要的 DHCP 配置文件是 /etc/dhcp/dhcpd.conf,您必须在此处添加要发送到客户端的所有网络信息。

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

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

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

sudo 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.10.0/24 LAN 网络设置 DHCP(使用适用于您的场景的参数)。

subnet 192.168.10.0 netmask 255.255.255.0 {
        option routers                  192.168.10.1;
        option subnet-mask              255.255.255.0;
        option domain-search            "tecmint.lan";
        option domain-name-servers      192.168.10.1;
        range   192.168.10.10   192.168.10.100;
        range   192.168.10.110   192.168.10.200;
}

步骤 3:在 DHCP 客户端计算机上配置静态 IP

6. 要将固定(静态)IP 地址分配给特定客户端计算机,请添加以下部分,您需要在其中明确指定其 MAC 地址和要静态分配的 IP:

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

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

保存文件并关闭它。

7. 接下来,暂时启动 DHCP 服务,并使其在下次系统启动时自动启动,如下所示:

------------ SystemD ------------ 
sudo systemctl start isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service


------------ SysVinit ------------ 
sudo service isc-dhcp-server.service start
sudo service isc-dhcp-server.service enable

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

sudo ufw allow  67/udp
sudo ufw reload
sudo ufw show

步骤 4:配置 DHCP 客户端计算机

9. 此时,您可以将网络上的客户端计算机配置为自动从 DHCP 服务器接收 IP 地址。

登录客户端计算机并按如下方式编辑以太网接口配置文件(记下接口名称/编号):

sudo vi /etc/network/interfaces

并定义以下选项:

auto  eth0
iface eth0 inet dhcp

保存文件并退出。并像这样重新启动网络服务(或重新启动系统):

------------ SystemD ------------ 
sudo systemctl restart networking

------------ SysVinit ------------ 
sudo service networking restart

或者,使用桌面计算机上的 GUI 执行设置,将方法设置为自动 (DHCP),如下面的屏幕截图所示(Fedora 25 桌面)。

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

就是这样!在本教程中,我们向您展示了如何在 Ubuntu/Debian 中设置 DHCP 服务器。通过下面的反馈部分与我们分享您的想法。如果您使用基于 Fedora 的发行版,请了解如何在 CentOS/RHEL 中设置 DHCP 服务器。