在Linux系统中配置DHCP(动态主机配置协议)服务器可以自动为网络中的客户端分配IP地址、子网掩码、网关、DNS等网络参数,简化网络管理流程,以下以CentOS 7/8和Ubuntu 18.04/20.04为例,详细介绍DHCP服务器的安装与配置步骤。
安装前的准备工作
在安装DHCP服务器前,需确保系统满足基本要求并完成网络环境配置:
-
系统要求
支持的Linux发行版:CentOS 7+/RHEL 7+、Ubuntu 18.04+等。
服务器需配置静态IP地址(避免DHCP服务与客户端IP冲突),确保网络连通性。 -
网络环境配置
以CentOS为例,配置静态IP(假设IP为192.168.1.100,子网掩码255.255.255.0,网关192.168.1.1):# 编辑网络配置文件(CentOS 7/8使用Netplan) vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes
Ubuntu系统可通过
/etc/netplan/01-netcfg.yaml
配置静态IP,重启网络服务使配置生效。 -
关闭防火墙或开放DHCP端口
DHCP服务使用UDP 67端口(服务器)和68端口(客户端),需确保防火墙允许流量:# CentOS 7/8 (firewalld) firewall-cmd --permanent --add-service=dhcp firewall-cmd --reload # Ubuntu (ufw) ufw allow 67/udp ufw allow 68/udp
安装DHCP服务器软件
不同Linux发行版的DHCP服务软件包名称不同,需根据系统选择对应的安装命令:
发行版 | 软件包名称 | 安装命令 |
---|---|---|
CentOS/RHEL | dhcpd | yum install dhcpd -y |
Ubuntu/Debian | isc-dhcp-server | apt install isc-dhcp-server -y |
安装完成后,检查服务状态:
# CentOS systemctl status dhcpd # Ubuntu systemctl status isc-dhcp-server
配置DHCP服务器
DHCP服务的主配置文件位于/etc/dhcp/dhcpd.conf
(CentOS)或/etc/dhcp/dhcpd.conf
(Ubuntu),配置前建议备份原文件:
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
全局参数配置
全局参数应用于整个DHCP服务范围,定义默认租约时间、最大租约时间等:
# 设置DNS服务器地址(可配置多个,空格分隔) option domain-name-servers 8.8.8.8, 114.114.114.114; # 默认租约时间(秒,默认600秒=10分钟) default-lease-time 3600; # 最大租约时间(秒,默认86400秒=24小时) max-lease-time 7200; # 启用DDNS(可选) ddns-update-style interim;
子网配置
根据实际网络环境定义子网范围,例如为168.1.0/24
网段分配IP:
subnet 192.168.1.0 netmask 255.255.255.0 { # 分配的IP地址范围(排除服务器IP和保留地址) range 192.168.1.101 192.168.1.200; # 子网掩码 option subnet-mask 255.255.255.0; # 默认网关 option routers 192.168.1.1; # 广播地址 option broadcast-address 192.168.1.255; # 租约时间(覆盖全局默认值) default-lease-time 1800; max-lease-time 7200; }
静态地址分配(可选)
若需为特定客户端(如服务器、打印机)固定分配IP,可通过MAC地址绑定实现:
host server01 { hardware ethernet 00:0c:29:12:34:56; # 客户端MAC地址 fixed-address 192.168.1.10; # 固定IP }
配置参数说明
参数 | 说明 |
---|---|
option domain-name |
定义客户端的域名后缀(如example.com ) |
option routers |
指定客户端的默认网关 |
range |
动态分配的IP地址范围 |
hardware ethernet |
客户端的MAC地址(用于静态绑定) |
fixed-address |
静态绑定的IP地址 |
启动DHCP服务并设置开机自启
配置完成后,启动DHCP服务并设置为开机自启:
# CentOS systemctl start dhcpd systemctl enable dhcpd # Ubuntu systemctl start isc-dhcp-server systemctl enable isc-dhcp-server
检查服务状态及端口监听情况:
systemctl status dhcpd # 或 isc-dhcp-server netstat -ulnp | grep 67 # 确认67端口处于LISTEN状态
测试与验证
客户端测试
在局域网内另一台设备(如Windows/Linux客户端)设置网络为“自动获取IP地址”,通过命令行检查是否成功获取IP:
- Windows:
ipconfig /all
- Linux:
ip addr show
或dhclient -v
服务器端日志查看
DHCP服务会将分配日志记录到系统日志中,可通过以下命令查看:
# CentOS tail -f /var/log/messages | grep dhcpd # Ubuntu tail -f /var/log/syslog | grep isc-dhcp-server
地址池状态检查
使用dhcping
工具测试DHCP服务是否正常响应(需先安装dhcping
:yum install dhcping
或apt install dhcping
):
dhcping 192.168.1.100 # 服务器IP
常见问题解决
-
服务启动失败
- 检查配置文件语法:
dhcpd -t
(CentOS)或dhcpd6 -t
(IPv6),若无输出则语法正确。 - 确认配置文件中的网段与服务器实际网段一致,避免IP冲突。
- 检查配置文件语法:
-
客户端无法获取IP
- 检查防火墙是否放行UDP 67/68端口。
- 确认地址池范围是否包含可用IP,或地址池已耗尽。
- 查看服务器日志,定位客户端连接请求是否到达(如
no free leases
表示地址池用尽)。
相关问答FAQs
Q1: 如何为DHCP服务器配置多个子网?
A: 在dhcpd.conf
中定义多个subnet
段落,每个子网配置独立的网段、地址池和网关。
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.101 192.168.1.200; option routers 192.168.1.1; } subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.101 192.168.2.200; option routers 192.168.2.1; }
同时确保服务器配置了多IP地址(如ip addr add 192.168.2.100/24 dev eth0
),每个子网对应一个网卡IP或VLAN接口。
Q2: 修改DHCP配置后如何使配置立即生效?
A: 修改dhcpd.conf
后,需重启DHCP服务使配置生效:
# CentOS systemctl restart dhcpd # Ubuntu systemctl restart isc-dhcp-server
若仅修改地址池范围或租约时间,也可发送SIGHUP信号重载配置(无需重启服务):
kill -HUP $(cat /var/run/dhcpd.pid) # CentOS kill -HUP $(cat /var/run/dhcp-server/dhcpd.pid) # Ubuntu
重启后,客户端会在租约到期后自动获取新配置,或通过dhclient -r
释放当前IP并重新获取。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33226.html