CentOS Cobbler与DHCP集成方法
一 集成方式概览
- 方式一(推荐):由 Cobbler 托管 ISC DHCP,编辑 /etc/cobbler/dhcp.template 定义子网与租约,执行 cobbler sync 自动生成并应用 /etc/dhcpd.conf,避免手工维护两份配置。适用于单台或多网段环境的统一管控。
- 方式二:由 外部 DHCP(如 dnsmasq/现有网关) 提供地址,Cobbler 仅提供 TFTP/引导文件。需在外部 DHCP 中设置 next-server=TFTP_IP 与 filename(BIOS 为 pxelinux.0,UEFI 为 grub/grub.efi)。
- 方式三:使用 dnsmasq 作为 DHCP(Cobbler 可生成其配置模板),适合轻量或一体化部署。
以上三种方式均为官方与社区常见实践,选择取决于你的网络边界与运维策略。
二 方式一 Cobbler托管ISC DHCP步骤(CentOS 7/8)
- 安装组件与启动依赖服务
- 安装:yum install -y cobbler cobbler-web httpd dhcp tftp-server xinetd(或按系统可用包名安装)。
- 启动:systemctl enable --now cobblerd httpd tftp(xinetd 或 tftp.socket 视系统启用)。
- 配置核心参数(/etc/cobbler/settings)
- 设置 server 与 next_server 为 Cobbler 主机 IP(如:192.168.1.10)。
- 启用托管:manage_dhcp: 1;如需避免重复重装,可设 pxe_just_once: 1。
- 可选:设置 default_password_crypted(如:openssl passwd -1 生成)。
- 编辑 DHCP 模板(/etc/cobbler/dhcp.template)
- 典型子网示例:
- 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 domain-name-servers 223.5.5.5, 8.8.8.8;
- default-lease-time 21600; max-lease-time 43200;
- next-server $next_server;
- 按客户端类型选择引导文件:
- BIOS:filename “/pxelinux.0”;
- UEFI:filename “/grub/grub.efi”;
- }
- 说明:模板中可使用 $next_server 与 pxetype 判断自动下发对应引导文件;不要直接修改 /etc/dhcpd.conf,它由 Cobbler 同步生成。
- 同步并启动 DHCP
- 执行:cobbler sync(将模板渲染到 /etc/dhcpd.conf 并重启 dhcpd)。
- 启动:systemctl enable --now dhcpd。
- 导入镜像与关联 Kickstart(示例)
- 挂载 ISO 后导入:cobbler import --name=CentOS-7.9-x86_64 --path=/mnt --arch=x86_64;
- 关联 KS:cobbler profile add --name=CentOS-7.9_mini --distro=CentOS-7.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg。
- 客户端验证
- 目标主机 BIOS 设置 PXE 启动,应能自动获取 IP、下载 PXE 引导并进入安装菜单。
以上步骤覆盖从安装、配置到导入镜像与 Kickstart 的完整链路,适用于大多数 CentOS 7/8 场景。
三 方式二 外部DHCP集成要点
- 在外部 DHCP(如网关/dnsmasq)上配置:
- 指定 TFTP:next-server <TFTP_IP>;
- 指定引导文件:BIOS 用 filename “pxelinux.0”,UEFI 用 filename “grub/grub.efi”;
- 如由外部 DHCP 分配地址,Cobbler 侧将 manage_dhcp: 0,仅确保 next_server 与引导文件正确。
- 适用场景:已有统一 DHCP 边界、需要集中地址管理或跨网段由网关统一分配。
该方式避免与现有 DHCP 冲突,部署简单、边界清晰。
四 方式三 使用dnsmasq提供DHCP
- 安装 dnsmasq 并在 Cobbler 中启用其模板:
- 安装:yum install -y dnsmasq;
- 配置:/etc/cobbler/dnsmasq.template 中启用并调整 dhcp-range、网关、DNS 等;
- 同步:cobbler sync 生成并应用 dnsmasq 配置;
- 启动:systemctl enable --now dnsmasq。
- 适合轻量或一体化环境,减少组件数量。
该方式在生产中也较常见,配置直观、资源占用低。
五 验证与常见问题
- 配置校验与日志
- 运行:cobbler check(逐项修复提示);
- 查看:/var/log/cobbler/、/var/log/messages 与 journalctl -u dhcpd 定位问题。
- 引导文件与架构匹配
- 确保 BIOS/UEFI 使用正确文件(BIOS:pxelinux.0;UEFI:grub/grub.efi),否则会出现“下载引导失败”。
- 避免地址冲突
- 同一二层网段仅保留 一个 DHCP 服务;在虚拟化/云环境中关闭 NAT/DHCP(如 VMware NAT 的 DHCP)。
- 同步与重启
- 每次修改 dhcp.template 或 settings 后务必执行 cobbler sync;必要时重启 dhcpd/cobblerd。
- 导入与 KS 关联
- 导入镜像后使用 cobbler distro list / profile list 检查;KS 默认路径 /var/lib/cobbler/kickstarts/。
这些检查点可显著降低首次部署与后续维护中的常见故障率。