前面的技术博文解释过通过 nmcil 来配置网络参数,而这篇文章要介绍的是 DHCP 协议程序,每当我们电脑接入网络时都会自动分配 IP 和 DNS 、子网掩码信息,并没有自己来配置网络连接信息,而是 IP 自动分配,能做到这一点就得益于 DHCP 协议,能帮助我们的设备自动配置网络信息。

现在建设你作为学校机房的管理员或者是网吧的管理员,每次都有不同的网络设备要接入到就局域网中,这就会带来大量配置网络信息工作,而且每次上完课部分设备又离开了教室,分配出去的 IP 如果不能回收,会导致 IP 地址被占用,不能被其他人再次使用,导致 IP 不够用浪费 IP 情况,也会带来手动管理 IP 麻烦,DHCP 要解决的问题就是针对这些场景的,自动化配置和自动化管理接入设备的 IP 地址。


DHCP 协议

目前大部分网络设备和操作系统都默认支持 DHCP 协议,如果系统没有支持可以通过软件包的方式安装 DHCP 软件来支持 DHCP 协议,DHCP 分为两个部分一个服务器另外一个是客户端,服务器为提供网络接入服务的设备,而客户端则是要接入网络的设备。

配置 DHCP 服务器:首先,您需要在网络上设置一个 DHCP 服务器,并为 DHCP 服务器分配 IP 地址和其他必要的网络参数,您可以使用现有的服务器,如路由器或专用 DHC P服务器,也可以使用开源 DHCP 服务器软件,如 ISC DHCP 或 dnsmasq ,在 Linux 下安装 dhcp 服务器可以使用下面命令:

# 安装 dhcp 服务器
dnf install -y dhcp-server 

配置文件位如 /etc/dhcp/dhcpd.conf 文件中,DHCP 选项可以用来设置其他网络参数,如 DNS 服务器地址、NTP 服务器地址和 SMTP 服务器地址等,可以在 DHCP 服务器上配置这些选项,并在 DHCP 客户端上使用它们,有客户端接入到网络中 DHCP 会按照这些参数来配置自己的网络参数,官方提供参数参考文件,目录位于 /usr/share/doc/dhcp-server/ ,目前支持的网络参数列表:

配置项配置值
option domain-nameexample.com
option domain-name-serversns1.example.com, ns2.example.com
subnet192.168.1.0
netmask255.255.255.0
range192.168.1.100 - 192.168.1.200
option routers192.168.1.1
option subnet-mask255.255.255.0
option broadcast-address192.168.1.255
default-lease-time600
max-lease-time7200
hostclient1
hardware ethernet00:11:22:33:44:55
fixed-address192.168.1.10
class"phone"
matchsubstring(hardware, 1, 3) = 00:11:22
option domain-name-serversns3.example.com
shared-network"office"
subnet192.168.2.0
netmask255.255.255.0
range192.168.2.100 - 192.168.2.200
option routers192.168.2

最常用参数也就那么几个,下面整理参数对应的作用说明:

配置参数说明
option domain-name指定 DHCP 服务器分配的主机名所属的域名。
option domain-name-servers指定 DHCP 客户端应该使用的 DNS 服务器列表。
subnet定义 DHCP 服务器分配 IP 地址的子网。
netmask定义 DHCP 子网的子网掩码。
range定义 DHCP 服务器可以分配的 IP 地址范围。
option routers指定 DHCP 客户端应该使用的网关地址。
option subnet-mask指定 DHCP 客户端应该使用的子网掩码。
option broadcast-address指定 DHCP 客户端应该使用的广播地址。
default-lease-time定义 DHCP 服务器分配的 IP 地址的默认租约时间(以秒为单位)。
max-lease-time定义 DHCP 服务器分配的 IP 地址的最大租约时间(以秒为单位)。
host指定 DHCP 客户端的主机名。
hardware ethernet指定 DHCP 客户端的 MAC

下面是一个简单的示例代码,配置 DHCP 服务器能分配的 IP 地址池数量就 50 个,并且前 24 位为网段,192.168.31.1 为默认网关地址,最后默认 IP 生命周期时间和最大续租时间,单位为秒:

#  设置 dns 服务不能自动动态更新
ddns-update-style none;
#  忽略客户端更新 DNS 记录
igrone client-update;
# 网段作用域
subnet 192.168.31.0 netmask 255.255.255.0 {
       range 192.168.31.50 192.168.31.150;
       option subnet-mask 255.255.255.0;
       option routers 192.168.31.1;
       option domain-name "ibyte.me";
       option domain-name-servers 1.1.1.1;
       defualt-lease-time 21600;
       max-lease-time 43200;
}

DHCP 自动分配在某些场景下也有一些特殊的问题,例如 DHCP 自动续约服务,自动回收 IP 地址服务,导致某些 IP 不能和某个特定设备绑定。为了解决这些问题 DHCP 新版本有一个类似于绑定特定设备的服务,会把某个特定的 IP 绑定到某个特定的设备至上,要做到这一点就得知道特定设备的 mac 地址,大部分情况下可以在网络设置中查询到 mac 地址,写入 DHCP 到服务端配置文件中,这样 DHCP 会预留某个 IP ,当特定的设备 mac 地址和配置文件中一致即分配给这个设备特定的 IP ,想要达到这一点只需要在 DHCP 服务器端配置文件中添加一段代码:

host www.ibyte.me {
     # 指定网卡 mac 地址
     hardware ethernet 00:0A:02:0B:03:0C;
     # 指定固定 IP 分配
     fixed-address 192.168.31.88;
}

通过此种方式配置的 IP 和 Mac 地址会相互绑定在一起,特定设备分配特定的 IP 地址。


其他资料

便宜 VPS vultr
最后修改:2023 年 07 月 05 日
如果觉得我的文章对你有用,请随意赞赏 🌹 谢谢 !