Linux 系统 DHCP 服务

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于为局域网内的设备自动分配 IP 地址、子网掩码、网关、DNS 等网络参数,避免手动配置的繁琐和冲突,是 Linux 服务器中常用的网络服务之一。

一、DHCP 服务核心原理

1. 地址分配方式

  • 自动分配:为设备分配永久 IP,一旦分配不会回收
  • 动态分配(最常用):为设备分配租期内的 IP,租期到期后回收,可重复分配
  • 手动分配:管理员为特定 MAC 地址绑定固定 IP(地址预留)

2. 地址分配流程(DORA)

  1. 发现(Discover):客户端开机后发送广播包,寻找局域网内的 DHCP 服务器
  2. 提供(Offer):DHCP 服务器收到广播后,向客户端发送包含可用 IP 的响应包
  3. 请求(Request):客户端选择其中一个 IP,再次广播请求确认
  4. 确认(Acknowledge):服务器确认该 IP 分配,发送包含网络参数(网关、DNS、租期)的确认包,客户端完成配置

二、DHCP 服务安装

1. CentOS/RHEL 7/8/9(yum/dnf)

运行

# CentOS 7
yum install -y dhcp
# CentOS 8/9
dnf install -y dhcp

2. Ubuntu/Debian(apt)

运行

# 更新源
apt update
# 安装DHCP服务
apt install -y isc-dhcp-server

三、DHCP 服务核心配置

DHCP 的主配置文件/etc/dhcp/dhcpd.conf默认内容较少,需手动编写核心配置,配置项严格区分大小写,语句以;结尾,注释用#

# 全局配置(对所有子网生效)
option domain-name "local.com";       # 局域网域名
option domain-name-servers 223.5.5.5, 114.114.114.114;  # DNS服务器(阿里+114)
default-lease-time 600;               # 默认租期(秒),600=10分钟
max-lease-time 7200;                  # 最大租期(秒),7200=2小时
ddns-update-style none;               # 关闭DNS动态更新(局域网推荐)
authoritative;                         # 声明为权威DHCP服务器,拒绝非本服务器的配置

# 子网配置(核心,定义分配的网段)
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;   # 可分配的IP地址池(100-200)
  option routers 192.168.1.1;          # 网关地址(路由器/服务器内网IP)
  option subnet-mask 255.255.255.0;    # 子网掩码
  option broadcast-address 192.168.1.255;  # 广播地址
}

# 地址预留(为特定设备绑定固定IP,MAC地址对应设备物理地址)
host pc1 {
  hardware ethernet 00:11:22:33:44:55;  # 设备MAC地址
  fixed-address 192.168.1.88;           # 绑定的固定IP(需在子网内,且不在地址池)
}
host printer {
  hardware ethernet AA:BB:CC:DD:EE:FF;
  fixed-address 192.168.1.99;
}

2. 关键配置项说明

range:定义动态分配的 IP 池,多个网段可配置多个

rangeoption routers:局域网网关,必填,否则客户端无法上外网

option domain-name-servers:DNS 服务器,多个用逗号分隔

default/max-lease-time:租期可根据需求调整,企业网可设 86400(24 小时)

host:地址预留配置,hardware ethernet后接 MAC 地址(冒号分隔)

subnet + netmask:必须与服务器内网网卡的网段一致,否则服务无法启动

四、DHCP 服务启动与自启

1. CentOS/RHEL 7/8/9

bash

运行

# 启动服务
systemctl start dhcpd
# 设置开机自启
systemctl enable dhcpd
# 查看服务状态(确认是否正常运行)
systemctl status dhcpd
# 重启服务(配置修改后需重启)
systemctl restart dhcpd
# 查看服务日志(排查错误)
journalctl -u dhcpd -f  # -f 实时查看日志

2. Ubuntu/Debian

bash

运行

# 启动服务
systemctl start isc-dhcp-server
# 设置开机自启
systemctl enable isc-dhcp-server
# 查看服务状态
systemctl status isc-dhcp-server
# 重启服务
systemctl restart isc-dhcp-server
# 实时查看日志
journalctl -u isc-dhcp-server -f
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐