温馨提示×

Ubuntu Cobbler与DHCP服务器的集成

小樊
34
2025-12-17 05:39:51
栏目: 云计算

Ubuntu 环境下 Cobbler 与 DHCP 的集成实践

一、集成方式概览

  • 方式一:由 Cobbler 托管 DHCP。将 manage_dhcp: 1,在 /etc/cobbler/dhcp.template 中定义子网、网关、DNS、地址池,执行 cobbler sync 自动渲染 /etc/dhcp/dhcpd.conf 并生效。适合全新环境或实验环境。
  • 方式二:由外部 ISC DHCP 服务器提供服务。保持 manage_dhcp: 0,在现有 DHCP 配置中为 PXE 客户端添加关键选项 next-server(指向 Cobbler 服务器 IP)与 filename “pxelinux.0”,并确保允许 BOOTP/PXE 请求。此方式适合已有生产 DHCP 的场景。

二、方式一 Cobbler 托管 DHCP 的步骤

  • 安装组件
    • 执行:sudo apt-get update && sudo apt-get install cobbler cobbler-web tftp-server isc-dhcp-server xinetd
  • 配置核心参数
    • 编辑 /etc/cobbler/settings:设置 servernext_server 为 Cobbler 服务器地址(如 192.168.1.2),开启 manage_dhcp: 1manage_tftpd: 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;
          option subnet-mask 255.255.255.0;
          filename "pxelinux.0";
          next-server $next_server;
          default-lease-time 21600;
          max-lease-time 43200;
      }
      
  • 使配置生效
    • 执行:sudo cobbler sync(渲染 DHCP 配置并重启服务),随后 sudo systemctl restart isc-dhcp-server
  • 验证
    • sudo cobbler check(无报错为宜),sudo systemctl status isc-dhcp-server(确保 DHCP 运行)。

三、方式二 外部 ISC DHCP 与 Cobbler 协同

  • 保持 Cobbler 不托管 DHCP
    • 编辑 /etc/cobbler/settings:设置 manage_dhcp: 0servernext_server 仍指向 Cobbler 服务器地址。
  • 在外部 DHCP 配置中添加 PXE 关键选项
    • /etc/dhcp/dhcpd.conf 的相应 subnet 中加入:
      allow booting;
      allow bootp;
      filename "pxelinux.0";
      next-server 192.168.1.2;   # Cobbler 服务器 IP
      
    • 如采用按客户端分类或地址池策略,可参考常见做法(例如为未知客户端划分可启动地址池,为已登记主机使用固定地址等)。
  • 使配置生效
    • 重启外部 DHCP:sudo systemctl restart isc-dhcp-server
    • 在 Cobbler 侧执行:sudo cobbler sync(刷新 PXE 相关文件与配置)。

四、TFTP 与防火墙要点

  • TFTP 就绪
    • 确保 TFTP 已启用并运行(如使用 xinetd 管理,将 /etc/xinet.d/tftpdisable = no),Cobbler 侧已开启 manage_tftpd: 1;执行 sudo cobbler sync 后 PXE 文件会被放置到 TFTP 根目录。
  • 防火墙放行
    • 放行必要服务与端口(示例为 firewalld):
      sudo firewall-cmd --zone=public --add-service=tftp --permanent
      sudo firewall-cmd --zone=public --add-service=httpd --permanent
      sudo firewall-cmd --zone=public --add-port=25150:25151/tcp --permanent
      sudo firewall-cmd --reload
      
    • 如使用 UFW,请放行 tftp(69/udp)http(80/tcp)25150–25151/tcp

五、验证与常见问题

  • 配置自检与同步
    • 执行 sudo cobbler check(逐项修复告警),每次修改后执行 sudo cobbler sync 使配置生效。
  • 客户端 PXE 启动验证
    • 目标主机 BIOS 设置 Network/PXE 优先启动,应能获取 IP、下载 PXE 启动文件并进入 Cobbler 引导菜单;若失败,检查 DHCP 日志(如 /var/log/syslog/var/log/dhcpd.log)与 next-server/filename 是否正确。
  • 常见错误与修复
    • 客户端未从网络启动:确认交换机/VLAN 允许 PXE(DHCP/BOOTP),客户端启动顺序正确。
    • 获取 IP 但未加载引导文件:核对 filename “pxelinux.0”next-server 是否指向正确;外部 DHCP 未加 allow booting; allow bootp; 也会导致失败。
    • 导入镜像或签名异常:执行 sudo cobbler signature update 后重试导入;必要时检查镜像挂载点与网络仓库可达性。

0