如何在 Rocky Linux 9 中配置并启用 DHCP 服务器?

问题浏览数Icon
18
问题创建时间Icon
2025-05-10 06:13:00
作者头像
cloudlong99

是否考虑过使用 dnsmasq 作为替代方案?它既能处理 DHCP 分配,又能集成轻量级 DNS 服务,适合小型网络环境。

更多回答

作者头像
ptwenwen

安装 dhcp-server 软件包,编辑 /etc/dhcp/dhcpd.conf 配置文件并设置子网参数,最后执行 systemctl enable --now dhcpd 启用服务。

作者头像
guangming01

在Rocky Linux 9中配置DHCP服务器需安装dhcp-server包,编辑/etc/dhcp/dhcpd.conf定义子网范围和选项,最后启用dhcpd服务并配置防火墙。

延伸知识点:DHCP的租约机制 DHCP通过租约(Lease)动态分配IP地址,包含四个阶段:1. Discover(客户端广播寻找服务器);2. Offer(服务器响应可用IP);3. Request(客户端确认选择IP);4. Acknowledgment(服务器最终分配)。租约默认时间为86400秒(24小时),到期前客户端会尝试续租(Renewal)。在dhcpd.conf中可通过default-lease-timemax-lease-time参数调整租期,避免IP资源耗尽或客户端频繁更换地址导致网络不稳定。

作者头像
jianhua66

在Rocky Linux 9中配置DHCP服务器需通过以下步骤实现,结合虚拟化环境实践经验及常见问题:

  1. 安装dhcp-server

    sudo dnf install dhcp-server -y

    注意:RHEL9开始默认未绑定ISC DHCP源码,需通过EPEL仓库安装(若未配置EPEL需先执行sudo dnf install epel-release

  2. 配置文件/etc/dhcp/dhcpd.conf

    subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.150 192.168.100.200;
    option routers 192.168.100.1;
    option domain-name-servers 8.8.8.8, 1.1.1.1;
    default-lease-time 3600;
    max-lease-time 7200;
    }

    挑战:虚拟化环境中需确保子网与虚拟机网络模式(NAT/桥接)匹配,桥接模式需与物理网络同网段

  3. 接口绑定/etc/sysconfig/dhcpd中添加:

    INTERFACESv4="br0"  # 虚拟化场景常用桥接接口

    经验:KVM环境中若使用libvirt默认网络,需关闭其内置dnsmasq服务避免端口冲突

  4. SELinux与防火墙

    sudo firewall-cmd --add-service=dhcp --permanent
    sudo firewall-cmd --reload
    sudo setsebool -P dhcpd_connect_any 1  # 允许绑定非标准接口
  5. 启动服务

    sudo systemctl enable --now dhcpd
    sudo dhcpd -t  # 预检查配置语法

实践挑战及解决方案:

  • IP分配冲突:通过dhcpd-pools工具监控地址池使用率,建议保留20%冗余
  • 多VLAN支持:配合dhcp-relay配置多个subnet声明,需确保option routers与每个VLAN对应
  • 静态IP绑定
    host kvm-node1 {
    hardware ethernet 52:54:00:12:34:56;
    fixed-address 192.168.100.50;
    }

    注意:MAC地址需与virsh dumpxml显示的虚拟机接口一致

  • 日志分析journalctl -u dhcpd -f重点关注DHCPOFFER/DHCPACK记录,ERROR级日志通常反映配置语法错误

虚拟化环境验证

virsh net-destroy default  # 停用libvirt默认网络
virsh net-start mybridgenet  # 启动自定义桥接网络
virt-install --network bridge=br0,...  # 创建新虚拟机测试IP获取

最终可通过dhclient -v eth0在目标虚拟机验证,若出现TIMEOUT需检查防火墙规则与接口绑定状态。