首页主机资讯ubuntu dhcp如何实现自动化部署

ubuntu dhcp如何实现自动化部署

时间2025-11-25 01:11:04发布访客分类主机资讯浏览560
导读:Ubuntu DHCP 自动化部署实践 一 方案总览 使用 ISC DHCP Server(isc-dhcp-server) 作为 DHCP 服务端,通过 netplan 为服务器配置静态地址,编写 /etc/dhcp/dhcpd.con...

Ubuntu DHCP 自动化部署实践

一 方案总览

  • 使用 ISC DHCP Server(isc-dhcp-server) 作为 DHCP 服务端,通过 netplan 为服务器配置静态地址,编写 /etc/dhcp/dhcpd.conf 定义子网与地址池,并在 /etc/default/isc-dhcp-server 指定监听接口,最后用 systemd 启动与开机自启。
  • 自动化手段可选:本地 Bash 脚本一键部署,或 Ansible 进行批量、可重复交付;客户端侧使用 netplandhclient 获取地址,便于验证与回归。

二 手动步骤速览(用于理解自动化要封装的动作)

  • 安装服务:sudo apt update & & sudo apt install -y isc-dhcp-server
  • 配置服务器静态 IP(Ubuntu 18.04+ 推荐 netplan,示例网卡 eth0
    • 编辑 /etc/netplan/01-eth0.yaml
      • network: version: 2; ethernets: eth0: dhcp4: no; addresses: [192.168.1.10/24]; gateway4: 192.168.1.1; nameservers: { addresses: [8.8.8.8, 1.1.1.1] }
    • 应用:sudo netplan apply
  • 配置 DHCP 服务
    • 编辑 /etc/dhcp/dhcpd.conf(示例):
      • 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 subnet-mask 255.255.255.0; option domain-name-servers 8.8.8.8, 1.1.1.1; default-lease-time 600; max-lease-time 7200; }
  • 指定监听接口
    • 编辑 /etc/default/isc-dhcp-server:INTERFACESv4=“eth0
  • 启动与开机自启
    • sudo systemctl start isc-dhcp-server & & sudo systemctl enable isc-dhcp-server
  • 防火墙放行
    • sudo ufw allow 67/udp & & sudo ufw allow 68/udp
  • 验证
    • sudo systemctl status isc-dhcp-server;租约:cat /var/lib/dhcp/dhcpd.leases;客户端:ip a

三 自动化方案一 Bash 脚本一键部署

  • 功能点
    • 交互式输入 服务器IP/网关/网卡/DNS/地址池,自动生成 netplandhcpd.conf,自动放行 UDP 67/68,设置 开机自启 并输出验证命令。
  • 示例脚本(可直接使用,按需修改默认值)
    • 保存为:dhcp_deploy.sh
    • 赋权:chmod +x dhcp_deploy.sh
    • 运行:sudo ./dhcp_deploy.sh
  • 脚本内容
    • #!/usr/bin/env bash set -Eeuo pipefail read -rp "服务器静态IP(如 192.168.1.10/24): " SERVER_IP read -rp "网关(如 192.168.1.1): " GW read -rp "网卡名(如 eth0/ens33): " NIC read -rp "DNS(逗号分隔,如 8.8.8.8,1.1.1.1): " DNS read -rp "地址池起止(如 192.168.1.100 192.168.1.200): " RANGE_START RANGE_END

      安装

      apt update -y & & apt install -y isc-dhcp-server

      静态IP(netplan)

      mkdir -p /etc/netplan cat > /etc/netplan/01-dhcp-server.yaml < < EOF network: version: 2 ethernets: $NIC: dhcp4: no addresses: [$SERVER_IP] gateway4: $GW nameservers: addresses: [${ DNS//,/ } ] EOF netplan apply

      备份并生成 dhcpd.conf

      cp -a /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak.$(date +%F_%T) 2> /dev/null || true PREFIX=$(echo “$SERVER_IP” | cut -d. -f1-3) cat > /etc/dhcp/dhcpd.conf < < EOF option domain-name “local”; option domain-name-servers ${ DNS//,/ } ; default-lease-time 600; max-lease-time 7200; ddns-update-style none;

      subnet $PREFIX.0 netmask 255.255.255.0 { range $RANGE_START $RANGE_END; option routers $GW; option subnet-mask 255.255.255.0; option broadcast-address $PREFIX.255; } EOF

      监听接口

      echo “INTERFACESv4="$NIC"” > /etc/default/isc-dhcp-server

      防火墙

      ufw allow 67/udp || true ufw allow 68/udp || true

      启动

      systemctl restart isc-dhcp-server || { journalctl -xeu isc-dhcp-server; exit 1; } systemctl enable isc-dhcp-server

      echo -e “\n[OK] DHCP 已部署完成” echo “验证:” echo " systemctl status isc-dhcp-server" echo " 租约:cat /var/lib/dhcp/dhcpd.leases" echo " 客户端获取:在客户端执行 sudo dhclient $NIC 后 ip a"

    • 使用提示

      • 虚拟机环境请关闭或隔离其他 DHCP 服务(如 VMware 自带 DHCP),避免冲突。
      • 若需固定 IP,可在 subnet 内添加 host 段(基于 MAC 绑定)。

四 自动化方案二 Ansible 角色示例

  • 作用:在 Ubuntu 18.04/20.04/22.04/24.04 上批量、幂等地部署 DHCP 服务。
  • 示例 playbook(保存为 site.yml)
      • hosts: dhcp_servers become: yes vars: dhcp_iface: “eth0” server_ip: “192.168.1.10/24” gateway: “192.168.1.1” dns_servers: “8.8.8.8,1.1.1.1” range_start: “192.168.1.100” range_end: “192.168.1.200” tasks:
        • name: Install ISC DHCP Server apt: name=isc-dhcp-server state=present update_cache=yes

        • name: Configure netplan static IP copy: dest: /etc/netplan/01-dhcp-server.yaml content: | network: version: 2 ethernets: { { dhcp_iface } } : dhcp4: no addresses: [{ { server_ip } } ] gateway4: { { gateway } } nameservers: addresses: [{ { dns_servers | replace(‘,’, ’ ') } } ] notify: apply netplan

        • name: Configure DHCP server copy: dest: /etc/dhcp/dhcpd.conf content: | option domain-name “local”; option domain-name-servers { { dns_servers } } ; default-lease-time 600; max-lease-time 7200; ddns-update-style none;

          subnet {
          {
           server_ip | regex_replace('/.*','') | regex_replace('\\.\\d+$','.0') }
          }
           netmask 255.255.255.0 {
          
            range {
          {
           range_start }
          }
           {
          {
           range_end }
          }
              ;
          
            option routers {
          {
           gateway }
          }
              ;
              
            option subnet-mask 255.255.255.0;
          
            option broadcast-address {
          {
           server_ip | regex_replace('/.*','') | regex_replace('\\.\\d+$','.255') }
          }
              ;
          
          }
          
          

          notify: restart isc-dhcp-server

        • name: Set listening interface lineinfile: path: /etc/default/isc-dhcp-server regexp: ‘^INTERFACESv4=’ line: ‘INTERFACESv4=“{ { dhcp_iface } } ”’

        • name: Allow DHCP ports in UFW ufw: rule=allow port=67 proto=udp

        • name: Allow DHCP ports in UFW ufw: rule=allow port=68 proto=udp

      handlers:

      • name: apply netplan command: netplan apply
      • name: restart isc-dhcp-server service: name=isc-dhcp-server state=restarted enabled=yes
  • 运行:ansible-playbook -i inventory site.yml
  • 说明
    • 通过 notify/handler 保证配置变更后自动生效;变量化 网卡/地址池/网关/DNS 便于多环境复用。

五 客户端自动化与验证

  • 客户端获取地址
    • Ubuntu 18.04+(netplan):编辑 /etc/netplan/*.yaml,设置 dhcp4: true,执行 sudo netplan apply
    • 老系统(interfaces):auto eth0; iface eth0 inet dhcp,执行 sudo systemctl restart networking
    • 临时获取:sudo dhclient eth0
  • 验证要点
    • 服务端:systemctl status isc-dhcp-server;租约:cat /var/lib/dhcp/dhcpd.leases
    • 客户端:ip a 查看地址;ip r 查看默认路由;cat /etc/resolv.conf 查看 DNS
  • 常见问题
    • 端口未放行:确保 UDP 67/68 已允许(ufw/iptables)
    • 地址冲突:规划 地址池静态绑定,避免重叠
    • 多 DHCP 冲突:关闭虚拟网络或上游路由器的 DHCP 服务
    • netplan 未生效:检查 yaml 缩进renderer(云镜像可能为 NetworkManager)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu dhcp如何实现自动化部署
本文地址: https://pptw.com/jishu/755102.html
Rust在Linux中如何进行调试 Ubuntu能编译多线程Fortran程序吗

游客 回复需填写必要信息