Linux 服务:动态主机配置协议(DHCP)实战指南 —— 服务器部署与跨网段配置
Linux 服务:动态主机配置协议(DHCP)实战指南 —— 服务器部署与跨网段配置
一、DHCP服务简介
1. 定义
DHCP(动态主机配置协议)是一种网络协议,用于自动为网络中的主机分配 IP 地址及相关网络参数(如网关、DNS 服务器地址等),简化网络配置管理。
2. 用途
- 解决 IP 地址资源不足的场景:当子网内主机数量超过可用 IP 地址数量时,通过动态分配实现 IP 地址复用(如 ISP 运营商对家庭用户的网络分配)。
- 适配 IP 地址频繁变动的网络:对于移动办公、出差设备等需要频繁接入不同网络的场景,自动获取 IP 地址可避免手动配置的繁琐。
3. 可提供的配置信息
- 网络接口的IP地址和子网掩码;
- 对应IP的网络地址和广播地址;
- 默认网关地址;
- DNS服务器地址。
4. DHCP 分配 IP 地址的过程(DORA 流程)
DHCP 的地址分配通过 4 个关键步骤完成,简称 DORA:
- Discover(发现):客户端启动后,通过广播发送
DHCP Discover
报文,寻找网络中的 DHCP 服务器(目标 IP 为 255.255.255.255,源 IP 为 0.0.0.0)。 - Offer(提供):DHCP 服务器收到请求后,从地址池中选择一个未分配的 IP 地址,通过广播发送
DHCP Offer
报文,包含拟分配的 IP、子网掩码、租约时间等信息。 - Request(请求):客户端若接受该 IP,再次广播
DHCP Request
报文,确认使用该 IP(同时告知其他 DHCP 服务器无需再提供地址)。 - Acknowledge(确认):DHCP 服务器收到确认后,广播
DHCP ACK
报文,正式确认 IP 分配,包含完整的网络参数;若 IP 不可用,则发送DHCP NAK
报文拒绝。
5. 端口
- 端口:服务器监听 UDP 67 端口,客户端通过 UDP 68 端口回应;
- DHCPv6:适用于 IPv6 网络,客户端使用 UDP 546 端口。
6. 核心概念
- DHCP 客户端:需要获取 IP 地址的设备(如电脑、手机);
- DHCP 服务器:负责分配 IP 地址及参数的服务器;
- DHCP 中继代理:通常为路由器,用于跨网段转发 DHCP 报文(因 DHCP 报文默认是广播,无法直接跨子网传播);
- 作用域(Subnet):服务器管理的一个子网范围,包含可分配的 IP 地址段及网络参数;
- 超级作用域:多个作用域的集合,用于管理多个连续或不连续的子网;
- 地址池:作用域内可动态分配的 IP 地址范围;
- 租约:IP 地址的分配有效期,到期前客户端需申请续租;
- 选项类型:除 IP 地址外的附加配置参数(如 DNS、网关);
- 保留地址:为特定设备(通过 MAC 地址识别)预留的固定 IP 地址,确保该设备始终获取同一 IP。
二、DHCP服务器搭建(Linux环境)
1. 安装软件包
yum -y install dhcp # 注意服务名无"d"后缀,与httpd等区分
2. 配置主配置文件
-
主配置文件路径:
/etc/dhcp/dhcpd.conf
(默认为空); -
参考模板路径:
/usr/share/doc/dhcp-server/dhcpd.conf.example
; -
复制模板并修改:
cp -p /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf vim /etc/dhcp/dhcpd.conf
-
基础配置示例(定义子网、地址池等):
subnet 192.168.100.0 netmask 255.255.255.0 { # 定义子网及掩码range 192.168.100.50 192.168.100.150; # 地址池范围#option domain-name-servers ns1.internal.example.org; ---定义DNS服务器#option domain-name "internal.example.org"; ---定义域option routers 192.168.100.254; # 网关(可选)# option domain-name-servers 8.8.8.8; # DNS服务器(可选,需取消注释)default-lease-time 600; # 默认租约时间(秒)max-lease-time 7200; # 最大租约时间(秒)
}
- 为特定MAC绑定固定IP(保留地址):
```conf
host desktop30 { # 自定义主机名hardware ethernet 00:0c:29:0d:1c:a5; # 目标设备MAC地址fixed-address 172.16.30.60; # 绑定的固定IP
}
3. 启动服务并设置自启
systemctl restart dhcpd # 重启服务
systemctl enable dhcpd # 开机自启
4. 配置防火墙 (可直接关)
firewall-cmd --add-service=dhcp --permanent # 永久开放DHCP服务
firewall-cmd --reload # 重载规则
5. 租约记录查看
服务器分配的 IP 租约信息保存在/var/lib/dhcpd/dhcpd.leases
文件中,可通过该文件查看已分配的 IP、租约时间等。
三、DHCP客户端配置(Linux环境)
1. 修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 网卡文件名因系统而异
修改内容:
BOOTPROTO=dhcp # 启用DHCP
ONBOOT=yes # 开机启动网卡
# 删除原有IP、子网掩码、网关、DNS相关行(如IPADDR、NETMASK等)
2. 重启网卡服务
systemctl restart network # 重启网络服务,使配置生效
四、DHCP中继配置(跨网段分配IP)
场景:通过中继服务器,让不同网段的客户端从同一DHCP服务器获取IP。
1. DHCP服务器配置
- 网卡模式:NAT模式,IP设为
192.168.100.20
; - 修改配置文件,支持目标网段(如192.168.200.0/24):
# 无需为本地网段(192.168.100.0/24)分配地址,留空 subnet 192.168.100.0 netmask 255.255.255.0 { }# 为中继目标网段配置地址池 subnet 192.168.200.0 netmask 255.255.255.0 {range 192.168.200.50 192.168.200.100; # 目标网段地址池option routers 192.168.200.254; # 目标网段网关(中继服务器IP)default-lease-time 600;max-lease-time 7200; }
- 重启服务:
systemctl restart dhcpd
2. DHCP中继服务器配置
服务器搭建需使用“仅主机模式”,避免桥接模式导致IP混乱。
-
开启IP转发(允许跨网卡转发数据包):
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf # 永久生效 sysctl -p # 立即生效
-
配置网卡:
- 网卡1(ens33):NAT模式,IP设为
192.168.100.254
(与DHCP服务器同网段); - 网卡2(ens36):仅主机模式,IP设为
192.168.200.254
(目标网段网关)。
- 网卡1(ens33):NAT模式,IP设为
-
安装DHCP软件包(含中继功能):
yum -y install dhcp
-
启动中继服务(指向DHCP服务器IP):
dhcrelay 192.168.100.20 # 192.168.100.20为DHCP服务器IP
3. 客户端配置
- 网卡模式:仅主机模式(与中继服务器ens36同网段);
- 启用DHCP(同“客户端配置”步骤),自动获取IP(来自192.168.200.0/24网段地址池)。