如何在 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 服务器。