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

关于proxmox 制作虚拟机模板的动态dhcp问题

背景

proxmox 制作ubuntu24.04 的模板,虽然已经设置了dhcp,启动了ip还是会附带之前的信息。为了解决这个问题。

如果要保证 Ubuntu 云镜像克隆后每台机器都自动生成唯一的 machine-idDHCP 客户端 ID(避免 IP 冲突),可以结合 cloud-init + netplan 这样配置。


1. cloud-init 模板(推荐写到 /etc/cloud/cloud.cfg.d/99-custom.cfg

# cloud-init configuration
# 确保每次实例化时重新生成 machine-id 和 DHCP 客户端 ID# 保证 systemd-machine-id 每次克隆都重建
system_info:regenerate_ssh_host_keys: truebootcmd:# 删除旧的 machine-id,systemd 会在开机时自动生成新的- rm -f /etc/machine-id- rm -f /var/lib/dbus/machine-id- systemd-machine-id-setup# 确保 cloud-init 不保留 DHCP 客户端 ID(默认就会根据 machine-id 生成新的)
network:config: disabled  # 告诉 cloud-init 不去覆盖 netplan,让我们自己管理

2. Netplan DHCP 配置(例如 /etc/netplan/01-netcfg.yaml

确保 所有网卡通过 DHCP 自动获取地址

network:version: 2ethernets:ens18:       # 按需替换为你的网卡名dhcp4: truedhcp-identifier: mac   # 使用 MAC 地址做 DHCP ID(避免 machine-id 重复问题)
  • 如果使用 dhcp-identifier: mac,则每台 VM 的 DHCP 租约基于 MAC,不基于 machine-id
  • 如果使用 dhcp-identifier: duid,则基于 DUID(默认用 machine-id 生成)
  • 云环境常用 mac,因为每个克隆 VM 通常会改 MAC

3. 云镜像准备注意事项

  1. 清理 cloud-init 状态(做模板前执行一次)
sudo cloud-init clean --logs --machine-id
sudo rm -f /etc/machine-id /var/lib/dbus/machine-id
sudo systemd-machine-id-setup
  1. 关机并制作镜像/模板(不要再开机)
  2. 克隆时保证 MAC 地址不同(不然即使用 mac 作为 ID,也会冲突)

完整流程总结

  • cloud-init 负责清理 machine-id 并重新生成
  • netplan 设置为 DHCP 自动获取
  • dhcp-identifier: mac 避免因 machine-id 重复导致的冲突
  • 模板制作前运行 cloud-init clean 并清除 machine-id

http://www.hskmm.com/?act=detail&tid=8578

相关文章:

  • Oracle清理:如何安全删除trace, alert和archivelog文件?
  • 软件工程个人项目
  • 学习道路道阻且长 希望自己坚持下去
  • 2025/9/18 总结
  • P2216 [HAOI2007] 理想的正方形
  • PuTTY下载和安装
  • 数据通路-单总线结构(最头晕的一集)
  • python基础篇-集合
  • #egsg:在同一程序中比较-计算圆的面积
  • 282 项多模态胃肠病学数据集:适配 VLM 与 MLLM 微调,融合医学图像与临床文本的医疗 AI 训练数据
  • 2-sat板子
  • centos 7中安装jenkins
  • pythonjs逆向 破解滑动验证码 - hello-*
  • 解决 pandas.to_csv 乱码、丢失行和自动换行问题 时间转换
  • JavaDay7
  • 前端场景题笔记
  • P3934 [Ynoi Easy Round 2016] 炸脖龙 I 做题记录
  • 【CompletableFuture 核心操作全解】详细注释版
  • 关于学术不端的一些思考
  • python基础-字典
  • pod 内nslookup请求时常异常
  • 单调队列优化DP
  • 4.5.11版本闪亮登场~快来看看有哪些新功能
  • 教你数分钟内创建并运行一个 DolphinScheduler Workflow!
  • AT_agc065_b [AGC065B] Erase and Insert
  • 《大模型时代——智能体的崛起与应用实践(微课视频版)》
  • 第三节:GoLangChain提示词(Prompts)处理详解
  • rhel8 中vdo 邏輯卷的邏輯擴容
  • Codeforces Round 1051 (Div. 2) 部分题解
  • kingbase金仓数据库的密码有效期和密码复杂度