资讯中心

Ubuntu 22.04 一键式脚本批量配置多组 IP 地址

  

在 Ubuntu 22.04 中实现一键式批量配置多组 IP 地址,可通过编写 Shell 脚本结合 netplan 网络配置工具完成。以下是实现方案及脚本示例:


一、脚本实现逻辑

  1. 备份原配置:防止误操作导致网络中断
  2. 生成多IP配置:通过循环结构批量添加多组 IP
  3. 应用新配置:使用 netplan 生效新规则
  4. 验证结果:检查 IP 配置状态

二、脚本示例(保存为

batch_ip.sh

#!/bin/bash # 参数定义(根据需求修改)NETWORK_INTERFACE="ens33"# 网卡名称(通过 ip addr 查询)PRIMARY_IP="192.168.1.100/24"# 主IP及子网掩码GATEWAY="192.168.1.1"# 默认网关 DNS_SERVERS="8.8.8.8 114.114.114.114"# DNS服务器 EXTRA_IPS=("192.168.1.101/24""192.168.1.102/24") # 需批量添加的额外IP组# 备份原配置文件 sudo cp /etc/netplan/*.yaml /etc/netplan/backup.yaml # 生成新的 netplan 配置 sudo tee /etc/netplan/99-multi-ip.yaml > /dev/null <<EOF network: version: 2 renderer: networkd ethernets: $NETWORK_INTERFACE: dhcp4: no addresses: - $PRIMARY_IP - ${EXTRA_IPS[@]} # 批量添加多组IP routes: - to: default via: $GATEWAY nameservers: addresses: [$DNS_SERVERS] EOF# 应用配置并重启网络 sudo netplan apply # 验证配置结果 echo -e "\n当前IP配置:"ip addr show $NETWORK_INTERFACE | grep "inet "

三、关键配置说明

  1. IP 格式要求

    • 必须包含子网掩码(如
      /24
      )610
    • 多个 IP 用空格分隔写入数组
      EXTRA_IPS
  2. 网卡识别

    • 通过
      ip addr
      查询当前网卡名称(可能是 ens33/enp0s3 等)6
  3. 配置生效

    • 必须执行
      netplan apply
      使新配置生效210

四、使用方式

# 赋予脚本执行权限 chmod +x batch_ip.sh # 以 root 权限执行 sudo ./batch_ip.sh

五、扩展场景(多网段/不同网关)

若需为不同 IP 配置独立网关,需使用 路由表策略

  1. 创建独立路由表
    /etc/iproute2/rt_tables
  2. 通过
    ip rule add
    设置分流规则
    (详见 14 中双网卡路由策略实现思路)

六、注意事项

  1. 测试环境验证:建议先在非生产环境测试脚本
  2. 语法缩进:YAML 文件对缩进敏感,建议用制表符保持格式
  3. 物理限制:确保交换机/VLAN 支持多 IP 广播5

通过此脚本可实现 1 分钟内批量部署多组 IP,适用于服务器集群初始化、网络测试等场景。若需动态生成 IP(如基于槽位号),可结合

sed/awk

命令实现更复杂的逻辑8。