本教程将指导你将 Ubuntu 26.04 服务器的网络从 DHCP(动态分配)切换为静态 IP 地址。配置静态 IP 可以确保服务器拥有固定地址,避免因 DHCP 租约过期或重启导致的 IP 变动,特别适合服务器、数据库、NAS 等需要稳定网络标识的场景。
适用环境 :Ubuntu 26.04 LTS (Resolute Raccoon) / 使用 Netplan 网络管理工具
本例配置 :IP 地址
192.168.6.102/ 子网掩码255.255.255.0(/24)/ 网关192.168.6.2/ DNS114.114.114.114, 8.8.8.8
🚀 一键配置脚本(整体执行)
如果你追求效率,可以直接以 root 权限执行以下脚本。它会自动检测网卡、备份配置、写入静态 IP 设置并应用。
bash
#!/bin/bash
# =============================================
# Ubuntu 26.04 静态 IP 一键配置脚本
# 功能:配置静态 IP 192.168.6.102/24,网关 192.168.6.2
# =============================================
set -e # 遇到错误立即退出
echo "🚀 开始配置静态 IP 地址..."
# 1. 自动检测网卡名称
INTERFACE=$(ip route | grep default | awk '{print $5}' | head -1)
if [ -z "$INTERFACE" ]; then
echo "❌ 错误:无法自动检测网卡名称,请手动指定"
echo " 执行 ip a 查看网卡名称,然后修改脚本中的 INTERFACE 变量"
exit 1
fi
echo "✅ 检测到网卡: $INTERFACE"
# 2. 备份现有 Netplan 配置
echo "📁 备份现有配置..."
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak 2>/dev/null || echo "⚠️ 未找到现有配置文件,跳过备份"
# 3. 写入新的静态 IP 配置
echo "📝 写入静态 IP 配置..."
sudo tee /etc/netplan/01-netcfg.yaml > /dev/null <<EOF
network:
version: 2
renderer: networkd
ethernets:
$INTERFACE:
dhcp4: false
addresses:
- 192.168.6.102/24
routes:
- to: default
via: 192.168.6.2
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
EOF
# 4. 设置正确的文件权限
sudo chmod 600 /etc/netplan/01-netcfg.yaml
# 5. 测试并应用配置
echo "🔍 测试配置..."
if sudo netplan try --timeout 5; then
echo "✅ 配置测试通过"
else
echo "❌ 配置测试失败,正在恢复备份..."
sudo cp /etc/netplan/01-netcfg.yaml.bak /etc/netplan/01-netcfg.yaml 2>/dev/null || true
sudo netplan apply
exit 1
fi
# 6. 应用配置
echo "🔄 应用网络配置..."
sudo netplan apply
# 7. 显示配置结果
echo ""
echo "=========================================="
echo "✅ 静态 IP 配置完成!"
echo "=========================================="
echo "📌 网卡: $INTERFACE"
echo "📌 IP 地址: 192.168.6.102/24"
echo "📌 网关: 192.168.6.2"
echo "📌 DNS: 114.114.114.114, 8.8.8.8"
echo ""
echo "📌 验证命令:"
echo " ip addr show $INTERFACE"
echo " ip route | grep default"
echo " ping -c 3 114.114.114.114"
echo "=========================================="
📖 分步详解
第一步:理解 Netplan 网络管理工具
Ubuntu 26.04 使用 Netplan 作为默认的网络配置工具。它是一个基于 YAML 的配置抽象层,可以将配置渲染为 networkd 或 NetworkManager 的后端配置。
Netplan 配置文件位置:
/etc/netplan/目录下的.yaml文件- 常见文件名:
01-netcfg.yaml、50-cloud-init.yaml、01-network-manager-all.yaml
Netplan 的 YAML 格式要求:
- 缩进必须使用空格,不可使用 Tab
- 键值对使用
:分隔 - 数组使用
-标识
第二步:查看当前网络状态
在配置之前,先了解当前的网络状态:
bash
# 1. 查看所有网卡和 IP 地址
ip a
# 2. 查看当前路由表
ip route
# 3. 查看当前 DNS 配置
cat /etc/resolv.conf
输出示例:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c1:96:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.6.101/24 brd 192.168.6.255 scope global dynamic ens33
valid_lft 86385sec preferred_lft 86385sec
从输出中可以看到:
- 网卡名称 :
ens33(也可能是eth0、enp0s3等) - 当前 IP :
192.168.6.101/24(动态分配) - 状态 :
state UP(已启用)
第三步:找到你的网卡名称
在配置中,你需要指定正确的网卡名称。使用以下命令之一查看:
bash
# 方法1:使用 ip 命令
ip a | grep -E "^[0-9]+:" | awk '{print $2}' | sed 's/://g'
# 方法2:列出 /sys/class/net 目录
ls /sys/class/net/
# 方法3:查看连接状态(最直观)
ip link show | grep -E "^[0-9]+:" | grep UP
常见网卡名称:
| 类型 | 名称示例 |
|---|---|
| 传统命名 | eth0、eth1 |
| 可预测命名(PCIe) | enp0s3、enp2s1 |
| 可预测命名(虚拟机) | ens33、ens37 |
本文示例使用 ens33,请替换为你的实际网卡名称。
第四步:备份当前 Netplan 配置
修改前务必备份,以便出错时恢复:
bash
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
如果文件不存在(比如使用默认配置),可以跳过这一步。
第五步:编辑 Netplan 配置文件
使用 vim 或 nano 编辑配置文件:
bash
sudo vim /etc/netplan/01-netcfg.yaml
或使用 nano(更简单):
bash
sudo nano /etc/netplan/01-netcfg.yaml
第六步:写入静态 IP 配置
将以下内容粘贴到文件中(注意 :将 ens33 替换为你的实际网卡名称):
yaml
network:
version: 2
renderer: networkd
ethernets:
ens33: # ⚠️ 替换为你的实际网卡名
dhcp4: false # 关闭 DHCP(禁用动态 IP)
addresses:
- 192.168.6.102/24 # 静态 IP 地址 / 子网掩码(/24 = 255.255.255.0)
routes: # 【重要】新版格式,替代弃用的 gateway4
- to: default # 默认路由
via: 192.168.6.2 # 网关地址
nameservers: # DNS 服务器配置
addresses:
- 114.114.114.114 # 国内通用 DNS(主)
- 8.8.8.8 # Google DNS(备用)
配置项详解:
| 字段 | 含义 | 本例值 | 说明 |
|---|---|---|---|
version: 2 |
Netplan 配置版本 | 2 |
固定值,不可修改 |
renderer |
后端渲染引擎 | networkd |
服务器推荐,桌面版可用 NetworkManager |
ethernets |
以太网配置块 | - | - |
dhcp4: false |
关闭 IPv4 DHCP | false |
启用静态 IP 必须设为 false |
addresses |
IP 地址和子网掩码 | 192.168.6.102/24 |
/24 = 255.255.255.0(254个可用IP) |
routes |
路由配置 | - | 新版格式,替代 gateway4 |
to: default |
目标地址(默认路由) | default |
表示所有外部流量 |
via |
网关地址 | 192.168.6.2 |
网络出口设备地址 |
nameservers |
DNS 服务器列表 | - | - |
⚠️ 重要提醒 :Ubuntu 26.04 的 Netplan 已弃用
gateway4字段,必须使用routes格式,否则会报错gateway4 has been deprecated。
子网掩码对照表:
| CIDR | 子网掩码 | 可用 IP 数 |
|---|---|---|
/24 |
255.255.255.0 |
254 |
/25 |
255.255.255.128 |
126 |
/26 |
255.255.255.192 |
62 |
/16 |
255.255.0.0 |
65,534 |
第七步:设置正确的文件权限
Netplan 要求配置文件仅 root 用户可读写:
bash
sudo chmod 600 /etc/netplan/01-netcfg.yaml
600 表示 -rw-------,即只有所有者(root)有读写权限。
第八步:测试配置(安全验证)
在正式应用前,先测试配置是否正确:
bash
sudo netplan try
执行效果:
- 系统会尝试应用配置,并等待 60 秒
- 如果 60 秒内没有确认,配置会自动回滚
- 按
Enter确认,配置正式生效
bash
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 112 seconds
Configuration accepted.
💡 为什么使用
netplan try:如果配置错误(比如 IP 和网关不在同一网段),系统会在 60 秒后自动回滚,避免因配置错误导致无法连接服务器。
第九步:应用配置
如果 netplan try 测试通过,或者你确定配置正确,可以直接应用:
bash
sudo netplan apply
第十步:验证配置是否生效
bash
# 1. 检查 IP 地址是否已更新
ip addr show ens33 | grep inet
# 2. 检查默认网关是否正确
ip route | grep default
# 3. 测试外网连通性
ping -c 3 114.114.114.114
# 4. 测试 DNS 解析
nslookup mirrors.aliyun.com
# 5. 查看完整的网络状态
ip a
成功标志:
inet 192.168.6.102/24 brd 192.168.6.255 scope global ens33
default via 192.168.6.2 dev ens33 proto static
64 bytes from 114.114.114.114: icmp_seq=1 ttl=128 time=0.949 ms
❓ 常见问题与解决方案
1. netplan apply 报错 "gateway4 has been deprecated"
原因 :旧版配置使用了 gateway4 字段,Ubuntu 26.04 已弃用。
解决 :改用 routes 格式:
yaml
routes:
- to: default
via: 192.168.6.2
删除原有的 gateway4 行。
2. 配置静态 IP 后无法 ping 通外网
排查流程:
bash
# 1. 检查默认网关是否配置正确
ip route | grep default
# 应显示:default via 192.168.6.2 dev ens33
# 2. 检查网关本身是否可达
ping -c 2 192.168.6.2
# 3. 检查 DNS 配置
cat /etc/resolv.conf
# 4. 检查是否有多个默认网关冲突
ip route | grep "^default"
# 如果有两行,删除多余的网关:sudo ip route del default via 错误的网关
3. netplan apply 报错 "Conflicting default route declarations"
原因 :Netplan 配置中存在多个网关定义(比如同时有 gateway4 和 routes)。
解决 :确保配置中只有一个网关定义,删除 gateway4 行,只保留 routes 部分。
4. 配置后 SSH 连接断开
原因:修改了 IP 地址,旧 IP 不再可用。
解决:
- 使用新 IP 重新连接:
ssh 用户名@192.168.6.102 - 如果无法连接,通过服务器本地终端(或 IPMI/KVM)检查配置
5. 网卡名称不对(如实际是 eth0 但配置写的是 ens33)
解决:
bash
# 查看实际网卡名称
ip a
# 修改配置文件中的网卡名称
sudo vim /etc/netplan/01-netcfg.yaml
# 将 ens33 改为实际的名称(如 eth0)
# 重新应用
sudo netplan apply
6. 如何恢复到 DHCP(自动获取 IP)?
bash
# 1. 编辑配置文件
sudo vim /etc/netplan/01-netcfg.yaml
# 2. 修改为:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: true # 开启 DHCP
# 删除 addresses、routes、nameservers 部分
# 3. 应用配置
sudo netplan apply
📊 配置校验清单
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| IP 地址 | ip a show ens33 |
包含 192.168.6.102/24 |
| 默认网关 | `ip route | grep default` |
| 网关可达 | ping -c 2 192.168.6.2 |
0% 丢包 |
| 外网连通 | ping -c 3 114.114.114.114 |
0% 丢包 |
| DNS 解析 | nslookup mirrors.aliyun.com |
返回 IP 地址 |
💡 总结
通过本文,你应该已经掌握了:
- Netplan 基础:Ubuntu 26.04 的网络配置工具及其 YAML 格式要求。
- 静态 IP 配置 :使用
routes格式替代已弃用的gateway4。 - 配置步骤:查看网卡 → 备份 → 编辑 → 测试 → 应用 → 验证。
- 问题排查:常见报错及解决方案。
下一步:配置好静态 IP 后,建议配置阿里云镜像源,加速软件安装;或安装 Docker CE,搭建容器化环境。
如果在配置过程中遇到任何问题,欢迎在评论区留言! 😊