动态主机配置协议(DHCP)

DHCP 服务器分配给 DHCP 客户端的 IP 地址处于“租用”状态,租用时间通常取决于客户端计算机要求连接的时间或 DHCP 服务器配置的时间。

DHCP 如何工作?

以下是 DHCP 实际工作原理的简要说明:

  • DHCPDISCOVER
  • 当 DHCP 服务器收到 DHCPDISCOVER 请求报文后会使用 DHCPOFFER
  • 然后客户端获取到 DHCPOFFER 数据包,并向服务器发送一个 DHCPREQUEST 包,表示它已准备好接收 DHCPOFFER
  • 最后,DHCP 服务器从客户端收到 DHCPREQUEST 报文后,发送 DHCPACK

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



测试环境设置

在这步中我们会使用如下的测试环境。

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


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

1、 运行下面的命令来安装 DHCP 服务器包,也就是 dhcp3-server。



$ sudo apt install isc-dhcp-server2、 安装完成后,编辑 /etc/default/isc-dhcp-server 使用 INTERFACES比如,如果你想让 DHCPD 守护进程监听 eth0,按如下设置:


INTERFACES="eth0"

同样记得为上面的接口配置静态地址



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

3、 DHCP 配置的主文件是 /etc/dhcp/dhcpd.conf, 你必须填写会发送到客户端的所有网络信息。

并且 DHCP 配置中定义了两种不同的声明,它们是:

parametersdeclarations

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


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 客户端上配置静态地址

6、 要给特定的客户机分配一个固定的(静态)的 IP,你需要显式将这台机器的 MAC 地址以及静态分配的地址添加到下面这部分。

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 服务(DHCP 守护进程监听 67 UDP 端口)的防火墙权限:

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


步骤 4:配置 DHCP 客户端

9、 此时,你可以将客户端计算机配置为自动从 DHCP 服务器接收 IP 地址。

登录到客户端并编辑以太网接口的配置文件(注意接口名称/号码):

$ sudo vi /etc/network/interfaces

定义如下选项:

auto eth0iface eth0 inet dhcp

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

------------ SystemD ------------ $ sudo systemctl restart networking------------ SysVinit ------------ $ sudo service networking restart

另外你也可以使用 GUI 来在进行设置,如截图所示(在 Fedora 25 桌面中)设置将方式设为自动(DHCP)。

在 Fedora 中设置 DHCP 网络

此时,如果所有设置完成了,你的客户端应该可以自动从 DHCP 服务器接收 IP 地址了。

就是这样了!在本篇教程中,我们向你展示了如何在 Ubuntu/Debian 设置 DHCP 服务器。在反馈栏中分享你的想法。如果你正在使用基于 Fedora 的发行版,请阅读如何在 CentOS/RHEL 中设置 DHCP 服务器。