当前位置:首页 > Linux > 正文

如何在Linux上配置DHCP服务器?

安装dhcpd服务,编辑/etc/dhcp/dhcpd.conf配置文件,定义子网、地址池、网关等参数,保存后启动dhcpd服务并设置开机自启。

在Linux系统中配置DHCP服务器需要安装并配置相关软件,以自动为网络中的设备分配IP地址、子网掩码、网关等网络参数,以下是基于ISC DHCP Server(行业标准工具)的详细步骤,适用于Ubuntu/Debian和CentOS/RHEL系统,配置前请确保您有root权限。


安装DHCP服务器

Ubuntu/Debian 系统

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

CentOS/RHEL 系统

sudo yum install dhcp-server -y # CentOS 7/8 sudo dnf install dhcp-server -y # CentOS Stream/RHEL 9


配置DHCP服务

编辑主配置文件

配置文件路径:

  • Ubuntu/Debian: /etc/dhcp/dhcpd.conf
  • CentOS/RHEL: /etc/dhcp/dhcpd.conf

使用文本编辑器(如nano)打开文件:

sudo nano /etc/dhcp/dhcpd.conf

设置基础网络参数

以下是一个典型配置示例(根据实际网络修改):

# 定义全局默认租期(单位:秒) default-lease-time 600; max-lease-time 7200; # 指定DNS服务器和域名 option domain-name "example.com"; option domain-name-servers 8.8.8.8, 8.8.4.4; # 禁用DHCP服务日志(可选) log-facility local7; # 定义子网配置 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分配(MAC绑定)

    在配置文件中添加: host Printer { hardware ethernet 00:1a:2b:3c:4d:5e; # 设备的MAC地址 fixed-address 192.168.1.50; # 分配的固定IP }

  • 自定义DNS或网关

    在subnet块内添加: option domain-name-servers 192.168.1.2; option routers 192.168.1.254;


指定服务监听的网卡

Ubuntu/Debian

编辑 /etc/default/isc-dhcp-server:

INTERFACESv4="eth0" # 替换为你的网卡名(如enp0s3)

CentOS/RHEL

创建覆盖配置(若需要):

如何在Linux上配置DHCP服务器? 第1张

如何在Linux上配置DHCP服务器? 第2张

sudo systemctl edit dhcpd

输入:

[Service] ExecStart=/usr/sbin/dhcpd -4 -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid eth0


启动服务并验证

启动DHCP服务

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

设置开机自启

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

检查服务状态

sudo systemctl status isc-dhcp-server # 确保显示"active (running)"

测试DHCP分配

  • 在客户端执行: dhclient -v # 强制更新IP(Linux客户端) ipconfig /renew # Windows客户端
  • 查看服务器日志: journalctl -u isc-dhcp-server -f # Ubuntu/Debian journalctl -u dhcpd -f # CentOS/RHEL


防火墙配置

允许DHCP端口(UDP 67/68):

# Ubuntu/Debian (UFW) sudo ufw allow 67/udp sudo ufw allow 68/udp # CentOS/RHEL (Firewalld) sudo firewall-cmd --add-service=dhcp --permanent sudo firewall-cmd --reload


常见问题解决

  1. 服务启动失败

    如何在Linux上配置DHCP服务器? 第3张

    • 检查配置文件语法:sudo dhcpd -t
    • 确认网卡名正确(使用ip a查看)。
  2. 客户端无法获取IP

    • 确保客户端与服务器在同一子网。
    • 检查防火墙是否阻止UDP 67/68端口。
    • IP冲突

      避免IP范围与静态IP重叠(如路由器分配的IP)。

    • 安全建议

      1. 限制IP范围:仅分配必要数量的IP(如range 192.168.1.100 192.168.1.150)。
      2. 启用日志监控:定期检查/var/log/syslog(Ubuntu)或/var/log/messages(CentOS)。
      3. 隔离网络:将DHCP服务器部署在受信任的内网,避免暴露到公网。


      通过以上步骤,您已成功在Linux上部署了DHCP服务器,此配置适用于小型办公或家庭网络,对于企业级需求(如多子网、负载均衡),建议结合网络设备(如路由器)或高级DHCP方案(如DHCP Relay)。

      引用说明基于ISC DHCP官方文档(https://kb.isc.org/docs/isc-dhcp-44-manual-pages)及Linux发行版手册(Ubuntu/CentOS),实践前请确保理解网络拓扑结构,错误配置可能导致网络中断。

0