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

Linux如何配置DHCP服务器?

安装dhcpd或isc-dhcp-server软件包,编辑/etc/dhcp/dhcpd.conf配置文件定义子网、地址池和租期,启动dhcpd服务并设置开机自启,最后通过防火墙放行DHCP端口即可提供IP自动分配服务。

在Linux系统中配置DHCP服务器可为局域网设备自动分配IP地址,简化网络管理,以下是基于ISC DHCP Server(行业标准工具)的详细配置流程,适用于Debian/Ubuntu及RHEL/CentOS等主流发行版。


准备工作

  1. 系统要求

    • 以root权限操作(使用sudo -isu -
    • 确保服务器有静态IP(如168.1.10),避免IP冲突
    • 确认网卡名称(通过ip a查看,例:eth0ens33
  2. 安装ISC DHCP Server

    # Debian/Ubuntu
    sudo apt update && sudo apt install isc-dhcp-server -y
    # RHEL/CentOS
    sudo yum install dhcp-server -y

配置文件详解

主配置文件:/etc/dhcp/dhcpd.conf
用文本编辑器(如nanovim)修改:

# 全局设置(适用于所有子网)
option domain-name "example.com";     # 域名
option domain-name-servers 8.8.8.8, 8.8.4.4;  # DNS服务器
default-lease-time 600;               # 默认租约时间(秒)
max-lease-time 7200;                  # 最大租约时间
# 定义子网(根据实际网络修改)
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 broadcast-address 192.168.1.255; # 广播地址
}

关键参数说明

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

  • range:分配给客户端的IP地址范围
  • routers:客户端默认网关
  • domain-name-servers:DNS服务器(多个用逗号分隔)
  • 高级选项:可添加host声明为特定设备保留固定IP

指定服务网卡

编辑服务启动配置文件:

# Debian/Ubuntu
sudo nano /etc/default/isc-dhcp-server
# 修改为:
INTERFACESv4="eth0"   # 替换为实际网卡名
# RHEL/CentOS
sudo nano /etc/sysconfig/dhcpd
# 修改为:
DHCPDARGS="eth0"      # 替换为实际网卡名

启动服务与防火墙

  1. 启动并设置开机自启

    sudo systemctl start isc-dhcp-server  # Debian/Ubuntu
    sudo systemctl start dhcpd            # RHEL/CentOS
    sudo systemctl enable isc-dhcp-server # 或 dhcpd
  2. 开放防火墙端口

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

测试与验证

  1. 检查服务状态

    sudo systemctl status isc-dhcp-server | grep active
    # 应显示 "active (running)"
  2. 查看租约记录

    tail -f /var/lib/dhcp/dhcpd.leases  # 实时监控分配的IP
  3. 客户端测试

    • 将另一台设备设为自动获取IP
    • 在客户端执行:
      ip addr show      # Linux客户端
      ipconfig /all     # Windows客户端
    • 确认获取到配置范围内的IP(如168.1.100

故障排除

  • 服务启动失败
    检查日志:journalctl -u isc-dhcp-server -xe
    常见错误:配置文件语法错误(用dhcpd -t验证)、网卡未指定。

  • 客户端无法获取IP

    1. 确认服务器和客户端在同一局域网
    2. 检查防火墙是否拦截UDP 67端口
    3. 重启网络服务:sudo systemctl restart networking
  • 地址冲突
    缩小range范围,避开静态设备IP。


安全建议

  1. 限制地址池范围:仅分配必要数量的IP(如range 192.168.1.100 192.168.1.150;)。
  2. MAC地址绑定:为关键设备固定IP:
    host Printer {
      hardware ethernet aa:bb:cc:dd:ee:ff;
      fixed-address 192.168.1.50;
    }
  3. 定期更新:保持系统与DHCP软件最新(apt upgradeyum update)。

通过ISC DHCP服务器,Linux可高效管理局域网IP分配,配置完成后,建议通过tcpdump抓包验证DHCP报文(sudo tcpdump -i eth0 port 67 -vv),对于复杂网络,可扩展配置选项(如IPv6支持或中继代理)。

引用说明

  • ISC DHCP官方文档:https://kb.isc.org/docs/isc-dhcp-44-manual-pages-dhcpdconf
  • Linux man pages:man dhcpd.conf
  • 网络配置参考:RFC 2131 (DHCP协议标准)
0