凌峰创科服务平台

Linux DHCP服务器配置步骤有哪些?

在Linux系统中配置DHCP(动态主机配置协议)服务器,可以为局域网中的自动分配IP地址、子网掩码、网关、DNS等网络参数,简化网络管理流程,以下以常用的DHCP服务器软件dhcpd(ISC DHCP Server)为例,详细介绍在Linux环境下的配置步骤、关键参数及注意事项。

Linux DHCP服务器配置步骤有哪些?-图1
(图片来源网络,侵删)

安装DHCP服务器软件

在基于Debian/Ubuntu的系统上,可通过apt安装:

sudo apt update
sudo apt install isc-dhcp-server -y

在基于RHEL/CentOS的系统上,使用yum或dnf安装:

sudo yum install dhcp -y  # CentOS 7及以下
sudo dnf install dhcp -y  # CentOS 8及以上

安装完成后,dhcpd服务会自动启动,但初始配置可能需要手动调整。

配置DHCP服务核心文件

DHCP服务的主配置文件位于/etc/dhcp/dhcpd.conf(Debian/Ubuntu)或/etc/dhcpd.conf(RHEL/CentOS),配置前建议先备份原文件:

Linux DHCP服务器配置步骤有哪些?-图2
(图片来源网络,侵删)
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

全局配置(可选)

在配置文件开头,可设置全局参数,如默认租约时间、最大租约时间等:

default-lease-time 600;      # 默认租约时间(秒)
max-lease-time 7200;         # 最大租约时间(秒)
authoritative;               # 声明该DHCP服务器是权威的(避免网络中其他DHCP服务器干扰)
option domain-name "example.com";  # 默认域名
option domain-name-servers 8.8.8.8, 8.8.4.4;  # 默认DNS服务器

子网配置

核心是定义要分配IP地址的子网,需指定子网网段、子网掩码、网关地址、DNS服务器及IP地址池,为子网168.1.0/24配置DHCP服务:

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;    # 可分配的IP地址池
    option routers 192.168.1.1;            # 默认网关
    option subnet-mask 255.255.255.0;       # 子网掩码
    option broadcast-address 192.168.1.255; # 广播地址
}

多子网与静态IP分配

若需为多个子网提供服务,可重复添加subnet块,若需为特定设备(如服务器、打印机)分配固定IP,可通过host声明实现:

host server01 {
    hardware ethernet 00:1A:2B:3C:4D:5E;  # 设备MAC地址
    fixed-address 192.168.1.10;           # 固定分配的IP
}

配置文件示例(完整)

# 全局配置
default-lease-time 600;
max-lease-time 7200;
authoritative;
option domain-name "local.lan";
option domain-name-servers 114.114.114.114, 8.8.8.8;
# 子网1:192.168.1.0/24
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;
}
# 子网2:10.0.0.0/24
subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.200;
    option routers 10.0.0.1;
    option subnet-mask 255.255.255.0;
}
# 静态IP分配示例
host printer {
    hardware ethernet AA:BB:CC:DD:EE:FF;
    fixed-address 10.0.0.50;
}

配置DHCP服务监听接口

默认情况下,dhcpd会监听所有网络接口,但建议明确指定监听接口以提高安全性,编辑/etc/default/isc-dhcp-server(Debian/Ubuntu)或/etc/sysconfig/dhcpd(RHEL/CentOS),修改INTERFACES变量:

Linux DHCP服务器配置步骤有哪些?-图3
(图片来源网络,侵删)
# Debian/Ubuntu
sudo nano /etc/default/isc-dhcp-server
# 修改为:INTERFACESv4="eth0"  # 替换为实际网卡名(如ens33)
# RHEL/CentOS
sudo nano /etc/sysconfig/dhcpd
# 修改为:DHCPDARGS="eth0"

启动与测试DHCP服务

启动并设置开机自启

# Debian/Ubuntu
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
# RHEL/CentOS
sudo systemctl start dhcpd
sudo systemctl enable dhcpd

检查服务状态

sudo systemctl status isc-dhcp-server  # 或 dhcpd

测试DHCP分配

在客户端设备(Windows/Linux)上将网络模式设置为“自动获取IP”,然后通过命令查看是否获取到地址:

  • Windows: ipconfig /renew
  • Linux: sudo dhclient eth0
    获取成功后,客户端IP地址应位于配置的地址池内。

查看DHCP分配日志

DHCP服务日志通常记录在/var/log/syslog(Debian/Ubuntu)或/var/log/messages(RHEL/CentOS),可通过以下命令过滤DHCP相关日志:

grep "dhcpd" /var/log/syslog

常见问题排查

  1. 服务启动失败:检查配置文件语法是否正确,使用dhcpd -t测试配置:

    sudo dhcpd -t  # 无输出表示语法正确

    若提示错误,根据错误提示修改配置文件(如子网重叠、IP地址池与网关冲突等)。

  2. 客户端无法获取IP

    • 检查防火墙是否拦截DHCP端口(UDP 67/68),临时关闭防火墙测试:
      sudo ufw disable  # Ubuntu
      sudo systemctl stop firewalld  # CentOS/RHEL
    • 确认监听接口配置正确,使用netstat -ulnp | grep 67检查DHCP服务是否监听67端口。

FAQs

Q1: 如何修改DHCP地址池范围?
A1: 编辑/etc/dhcp/dhcpd.conf文件,找到对应subnet块中的range参数,修改起始和结束IP地址,然后保存并重启DHCP服务:

sudo systemctl restart isc-dhcp-server  # 或 dhcpd

Q2: 如何设置DHCP租约时间?
A2: 在dhcpd.conf的全局配置中修改default-lease-time(默认租约)和max-lease-time(最大租约)参数,单位为秒,设置默认租约为1小时(3600秒),最大租约为24小时(86400秒):

default-lease-time 3600;
max-lease-time 86400;

修改后重启DHCP服务即可生效。

分享:
扫描分享到社交APP
上一篇
下一篇