前面的技术博文解释过通过 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-name | example.com |
option domain-name-servers | ns1.example.com, ns2.example.com |
subnet | 192.168.1.0 |
netmask | 255.255.255.0 |
range | 192.168.1.100 - 192.168.1.200 |
option routers | 192.168.1.1 |
option subnet-mask | 255.255.255.0 |
option broadcast-address | 192.168.1.255 |
default-lease-time | 600 |
max-lease-time | 7200 |
host | client1 |
hardware ethernet | 00:11:22:33:44:55 |
fixed-address | 192.168.1.10 |
class | "phone" |
match | substring(hardware, 1, 3) = 00:11:22 |
option domain-name-servers | ns3.example.com |
shared-network | "office" |
subnet | 192.168.2.0 |
netmask | 255.255.255.0 |
range | 192.168.2.100 - 192.168.2.200 |
option routers | 192.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 地址。