在现代 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 文件并应用配置
- 编辑配置文件:Bash
sudo vim /etc/netplan/01-netcfg.yaml - 粘贴配置:找到您的网卡配置下的
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 #... - 测试并应用配置(关键步骤)Netplan 提供了一个极为有用的“试用”功能,它会先应用配置,如果在指定时间内(默认120秒)没有确认,配置将自动回滚。这可以有效防止因配置错误而失联。Bash
# 测试配置,如果 SSH 未断开,按回车确认即可 sudo netplan try如果配置无误且您的网络连接正常,系统会提示您按Enter键以永久保留配置。确认无误后,执行最终应用命令:Bashsudo netplan apply - 验证 IP 是否添加成功Bash
ip addr show dev ens160您应该能在输出中看到所有新添加的 IP 地址。
总结
通过“生成配置 -> 手动粘贴 -> 测试 -> 应用”的流程,我们既利用了脚本的效率,又保证了操作的安全性。这种方法远优于直接修改生产环境的配置文件,是每一位 Linux 系统管理员都应遵循的最佳实践。记住,对待服务器配置,永远要保持谨慎和敬畏。