Ubuntu 使用 Netplan 高效批量添加 IP 地址的正确姿势

在现代 Ubuntu Server 发行版中(自 17.10 起),Netplan 已成为标准的网络配置工具。它通过简洁的 YAML 文件格式,取代了传统的 /etc/network/interfaces。虽然 YAML 语法清晰,但手动添加大量 IP 地址仍然是一项繁琐且容易出错的工作。本文将介绍一种安全、高效且可重复使用的方法,通过 Shell 脚本来批量生成 Netplan 的 IP 配置。

第一步:安全第一!备份现有网络配置

在进行任何网络配置变更之前,首要原则是备份。一条简单的命令就能避免因配置失误导致服务器“失联”的巨大风险。

Bash

# 备份您的 Netplan 配置文件
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak

请注意:您的配置文件名可能是 50-cloud-init.yaml 或其他名称,请根据实际情况进行调整。

第二步:理解 Netplan 的 YAML 语法结构

一个典型的 Netplan 配置文件 (/etc/netplan/01-netcfg.yaml) 结构如下:

YAML

network:
  version: 2
  renderer: networkd
  ethernets:
    ens160: # 这是您的网卡名称,例如 eth0, ens3 等
      dhcp4: no
      addresses:
        - 192.168.1.100/24 # 主 IP 地址
        # 这里可以添加更多的 IP 地址
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

我们的目标就是向 addresses: 列表中安全地添加多个 IP 地址条目。

第三步:创建批量添加 IP 的 Shell 脚本

直接向 YAML 文件 echo 内容是不可取的。我们将创建一个脚本来生成所需的配置代码块,然后手动或通过命令将其插入到正确的位置。这种方法将操作风险降至最低。

1. 创建脚本文件

Bash

vim generate_ip_config.sh

2. 粘贴以下脚本内容

这个脚本具有良好的可读性和可配置性。您只需修改顶部的变量即可适配您的网络环境。

Bash

#!/bin/bash

# --- 请根据您的实际情况修改以下变量 ---

# 目标网卡名称 (通过 ip addr 命令查看)
INTERFACE="ens160"

# IP 地址段信息
IP_PREFIX="1.2.3"   # IP 地址的前三段
START_IP=2          # 起始 IP 的最后一段
END_IP=65           # 结束 IP 的最后一段
SUBNET_MASK=26      # 子网掩码 (CIDR 格式),/26 可以容纳 62 个可用 IP

# --- 脚本核心逻辑,无需修改 ---

echo "################################################################"
echo "### Netplan IP 配置生成脚本"
echo "### 即将为网卡 [${INTERFACE}] 生成 ${END_IP-START_IP+1} 个 IP 地址"
echo "### IP 范围: ${IP_PREFIX}.${START_IP} - ${IP_PREFIX}.${END_IP}/${SUBNET_MASK}"
echo "################################################################"
echo ""
echo "请将以下生成的配置块,手动复制并粘贴到您的 Netplan YAML 文件的 'addresses:' 列表下:"
echo ""

# YAML 要求严格的缩进,这里我们生成带有正确缩进的格式
# '      - IP/MASK'
for ((i=START_IP; i<=END_IP; i++)); do
  echo "        - ${IP_PREFIX}.${i}/${SUBNET_MASK}"
done

echo ""
echo "配置生成完毕。"

3. 赋予脚本执行权限

Bash

chmod +x generate_ip_config.sh

4. 运行脚本生成配置

Bash

./generate_ip_config.sh

您将看到类似下面的输出:

################################################################
### Netplan IP 配置生成脚本
### 即将为网卡 [ens160] 生成 64 个 IP 地址
### IP 范围: 1.2.3.2 - 1.2.3.65/26
################################################################

请将以下生成的配置块,手动复制并粘贴到您的 Netplan YAML 文件的 'addresses:' 列表下:

        - 1.2.3.2/26
        - 1.2.3.3/26
        - 1.2.3.4/26
        ... (中间省略) ...
        - 1.2.3.65/26

配置生成完毕。

第四步:编辑 Netplan 文件并应用配置

  1. 编辑配置文件:Bashsudo vim /etc/netplan/01-netcfg.yaml
  2. 粘贴配置:找到您的网卡配置下的 addresses: 部分,将上面脚本生成的 IP 列表粘贴进去。修改前:YAML#... addresses: - 192.168.1.100/24 #... 修改后(注意保持对齐和缩进):YAML#... addresses: - 192.168.1.100/24 - 1.2.3.2/26 - 1.2.3.3/26 - 1.2.3.4/26 ... - 1.2.3.65/26 #...
  3. 测试并应用配置(关键步骤)Netplan 提供了一个极为有用的“试用”功能,它会先应用配置,如果在指定时间内(默认120秒)没有确认,配置将自动回滚。这可以有效防止因配置错误而失联。Bash# 测试配置,如果 SSH 未断开,按回车确认即可 sudo netplan try 如果配置无误且您的网络连接正常,系统会提示您按 Enter 键以永久保留配置。确认无误后,执行最终应用命令:Bashsudo netplan apply
  4. 验证 IP 是否添加成功Baship addr show dev ens160 您应该能在输出中看到所有新添加的 IP 地址。

总结

通过“生成配置 -> 手动粘贴 -> 测试 -> 应用”的流程,我们既利用了脚本的效率,又保证了操作的安全性。这种方法远优于直接修改生产环境的配置文件,是每一位 Linux 系统管理员都应遵循的最佳实践。记住,对待服务器配置,永远要保持谨慎和敬畏。