Ubuntu Netplan 静态 IP 配置指南(含 IPv6)
Netplan 是 Ubuntu 18.04+ 的默认网络配置工具,配置文件放在 /etc/netplan/ 目录下,YAML 格式。
⚠️ 修改前建议备份:
sudo cp /etc/netplan/50-manual-config.yaml{,.bak}
配置文件位置
bash
/etc/netplan/50-manual-config.yaml文件名不固定,/etc/netplan/ 下的 .yaml 文件都会被读取,按字母顺序合并。
完整模板(IPv4 + IPv6)
yaml
network:
version: 2
renderer: networkd # 桌面版用 NetworkManager,服务器用 networkd
ethernets:
eth0: # 网卡名,用 `ip a` 查看,可能是 ens3、enp1s0 等
dhcp4: false
dhcp6: false
# ---- IPv4 ----
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
search:
- localdomain
# ---- IPv6 ----
# addresses 里直接追加 IPv6 地址即可
# 例如下面是 /128 单地址 + /64 子网两种常见写法:
# addresses 里可混合写 IPv4 和 IPv6:
# addresses:
# - 192.168.1.100/24
# - "2001:db8:1234::100/128"
# - "2001:db8:1234::/64" # 如果你有整个 /64 段
# IPv6 默认路由(网关用 link-local 或全局地址)
# routes:
# - to: "::/0"
# via: "fe80::1" # VPS 常见:用 link-local 网关
# IPv6 DNS
# nameservers:
# addresses:
# - "2001:4860:4860::8888"
# - "2606:4700:4700::1111"合并写法(更常用)
实际中 IPv4 和 IPv6 写在同一个 addresses 列表里:
yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.100/24
- "2001:db8:1234::100/128"
routes:
- to: default
via: 192.168.1.1
- to: "::/0"
via: "fe80::1"
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
- "2001:4860:4860::8888"
- "2606:4700:4700::1111"VPS 常见场景(Hetzner/Vultr 等)
yaml
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: false
dhcp6: false
addresses:
- "203.0.113.50/24"
- "2001:db8:abcd::1/64"
routes:
- to: default
via: "203.0.113.1"
- to: "::/0"
via: "fe80::1"
nameservers:
addresses:
- 8.8.8.8
- "2001:4860:4860::8888"只用 DHCP(最简单)
yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp6: trueIPv6 只开 SLAAC(自动获取)
yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
ipv6-accept-ra: true # 接受路由通告,自动配置 IPv6
nameservers:
addresses:
- 8.8.8.8
- "2001:4860:4860::8888"应用配置
bash
# 验证语法(不会真正生效)
sudo netplan try
# 直接应用
sudo netplan apply
# debug 模式(排错用)
sudo netplan --debug apply
netplan try会在 120 秒后自动回滚,防止把自己踢下线。远程操作强烈建议用它。
常见问题
1. 网卡名不知道是什么
bash
ip a
# 或
ls /sys/class/net/2. IPv6 不通
bash
# 检查地址是否生效
ip -6 addr show eth0
# 测试连通性
ping6 google.com
# 查看路由
ip -6 route show3. YAML 缩进报错
Netplan 对缩进非常敏感,必须用空格(不能用 Tab)。可以用 netplan generate 先检查语法。
4. 多个 IP / 段
yaml
addresses:
- 192.168.1.100/24
- 192.168.1.101/32 # 额外 IP
- "2001:db8::100/128"参考链接: