Oracle Cloud 免费服务器 IPv6 开启完全指南 | 控制台配置与系统设置教程
Oracle Cloud(甲骨文云) 为所有免费套餐用户提供完整的 IPv6 支持,包括免费的公网 IPv6 地址和充足的带宽。然而,默认情况下 IPv6 并未自动启用,需要手动在控制台和操作系统中进行配置。本文将详细介绍从 VCN 网络配置到系统级设置的完整流程,帮助你顺利开启并使用 IPv6。
为什么需要启用 IPv6?
IPv6 的核心优势
| 优势 | 说明 |
|---|---|
| 🌐 海量地址空间 | 2^128 个地址,永不枯竭 |
| 🔒 内置安全性 | IPsec 原生支持,端到端加密 |
| ⚡ 更高效的路由 | 简化的报头,更快的转发 |
| 📱 物联网友好 | 每个设备都可拥有公网 IP |
| 🚀 未来趋势 | 全球互联网正在向 IPv6 迁移 |
Oracle Cloud IPv6 免费额度
完全免费包含:
- ✅ 每个 VCN 一个
/56IPv6 CIDR 块 - ✅ 每个子网一个
/64IPv6 子网 - ✅ 每个实例最多 1 个公网 IPv6 地址
- ✅ 无限的 IPv6 出站流量(计入总带宽配额)
- ✅ 无额外费用
对比 IPv4:
- IPv4 需要申请公网 IP(有限额)
- IPv6 地址充足,可随时分配
- IPv6 无需 NAT,直连更简单
配置架构概览
在开始之前,了解 Oracle Cloud IPv6 的配置层级:
根目录 (Compartment)
↓
虚拟云网络 (VCN)
├─ IPv4 CIDR: 10.0.0.0/16
└─ IPv6 CIDR: 2603:c1:x:b500::/56 ← 第一步:添加
↓
子网 (Subnet)
├─ IPv4 CIDR: 10.0.1.0/24
└─ IPv6 CIDR: 2603:c1:x:b500:ee::/64 ← 第二步:启用
↓
路由表 (Route Table)
└─ ::/0 → Internet Gateway ← 第三步:添加路由
↓
安全列表 (Security List)
└─ 允许 ::/0 入站/出站 ← 第四步:配置规则
↓
云服务器实例 (Instance)
└─ VNIC 分配 IPv6 地址 ← 第五步:绑定
↓
操作系统配置 ← 第六步:系统级设置配置顺序很重要! 必须按照从上到下的顺序逐步配置。
第一部分:控制台面板操作
步骤 1:进入虚拟云网络详情

操作路径:
登录 Oracle Cloud 控制台
→ 左侧菜单 "网络" (Networking)
→ 点击 "虚拟云网络" (Virtual Cloud Networks)
→ 选择你的 VCN
→ 查看网络详情快速访问: 你也可以直接从实例页面跳转:
计算 (Compute) → 实例 (Instances)
→ 选择实例 → 附加的 VNIC
→ 点击 VNIC 名称
→ 跳转到对应的 VCN步骤 2:添加 IPv6 CIDR 块


详细操作:
- 在 VCN 详情页,找到左侧菜单 "CIDR 块" (CIDR Blocks)
- 点击 "添加 IPv6 CIDR 块" (Add IPv6 CIDR Block)
- 系统会自动分配一个
/56的 IPv6 地址段 - 点击 "添加" 确认

添加成功后:
- 你会看到类似
2603:c1:3:b500::/56的 IPv6 CIDR - 这个地址段由 Oracle 自动分配,无法自定义
- 一个 VCN 只能有一个 IPv6 CIDR 块
什么是 /56 CIDR?
/56表示前 56 位是网络位,后 72 位是主机位- 可以划分为 256 个
/64子网 - 每个
/64子网可容纳 2^64 个地址(约 1800 亿亿个) - 对于个人使用绰绰有余
步骤 3:启用子网 IPv6


操作步骤:
- 在 VCN 详情页,点击左侧 "子网" (Subnets)
- 选择你要启用 IPv6 的子网(通常是公有子网 Public Subnet)
- 点击 "编辑" (Edit)
- 勾选 "启用 IPv6 CIDR 块" (Enable IPv6 CIDR block)
- 在输入框中输入 子网标识符(2 位十六进制数,如
ee) - 点击 "保存更改" (Save Changes)
子网标识符说明:
- 输入值是 2 位十六进制数(00-ff)
- 最终生成的 IPv6 CIDR 为:
VCN的IPv6前缀:输入值::/64 - 例如:VCN 是
2603:c1:3:b500::/56,输入ee - 则子网 CIDR 为:
2603:c1:3:b500:ee::/64
常见错误处理
如果保存时出现以下错误:
错误信息: NotAuthorizedOrNotFound
原因: 权限不足或资源 ID 不匹配
解决方案: 请跳转到本文最后的 处理 NotAuthorizedOrNotFound 错误 部分,使用 Cloud Shell 命令修复。修复成功后再回来继续这里的步骤!

验证成功:
- 子网详情页会显示 IPv6 CIDR 块
- 格式类似:
2603:c1:3:b500:ee::/64
步骤 4:配置路由表

IPv6 流量需要明确的路由规则才能访问互联网。
操作步骤:
- 在 VCN 详情页,点击左侧 "路由表" (Route Tables)
- 选择关联到该子网的路由表(通常只有一个)
- 点击 "编辑所有路由规则" (Edit All Route Rules)
- 点击 "添加路由规则" (Add Route Rules)
填写路由规则:
目的地类型 (Destination Type): CIDR
目的地 CIDR (Destination CIDR): ::/0 ← 注意是两个冒号
目标类型 (Target Type): Internet网关 (Internet Gateway)
目标 Internet网关: 选择你的 Internet Gateway关键字段说明:
| 字段 | 值 | 说明 |
|---|---|---|
| 目的地 CIDR | ::/0 | IPv6 默认路由(所有 IPv6 流量) |
| 目标类型 | Internet Gateway | 互联网网关,负责 NAT 和出口 |
| ::/0 含义 | 所有 IPv6 地址 | 相当于 IPv4 的 0.0.0.0/0 |
重要提醒
- 必须使用
::/0(两个冒号),不是:/0或0::/0 - 如果已有 IPv4 路由规则(0.0.0.0/0),不影响 IPv6
- IPv4 和 IPv6 路由规则可以共存
- 点击 "保存路由规则" (Save Route Rules)
验证路由表:
应该看到两条规则:
1. 0.0.0.0/0 → Internet Gateway (IPv4)
2. ::/0 → Internet Gateway (IPv6) ← 新增的步骤 5:配置安全列表


安全列表(Security List)相当于虚拟防火墙,控制进出子网的流量。
添加入站规则(Ingress Rules):
- 在 VCN 详情页,点击左侧 "安全列表" (Security Lists)
- 选择关联到该子网的安全列表
- 点击 "添加入站规则" (Add Ingress Rules)
填写入站规则:
源类型 (Source Type): CIDR
源 CIDR (Source CIDR): ::/0
IP协议 (IP Protocol): 所有协议 (All Protocols)
或者根据需要选择:
- TCP
- UDP
- ICMPv6(必需,用于邻居发现)推荐的最小化配置:
规则 1:允许 ICMPv6(必需)
源 CIDR: ::/0
协议: ICMPv6
ICMPv6 类型: 所有
说明: 允许邻居发现和路径 MTU 发现规则 2:允许 SSH(远程管理)
源 CIDR: ::/0
协议: TCP
目标端口范围: 22
说明: 允许 IPv6 SSH 连接规则 3:允许 HTTP/HTTPS(Web 服务)
源 CIDR: ::/0
协议: TCP
目标端口范围: 80,443
说明: 允许 Web 访问添加出站规则(Egress Rules):
通常默认允许所有出站流量,但建议检查:
目的地类型: CIDR
目的地 CIDR: ::/0
IP协议: 所有协议如果没有出站规则,点击 "添加出站规则" 并添加上述配置。
安全建议
- 生产环境不要开放所有端口
- 仅开放必要的服务端口
- 定期审查安全列表规则
- 考虑使用网络安全组(NSG)进行更细粒度控制
步骤 6:为实例分配 IPv6 地址

右侧可见多了一个 IPv6 地址的选项!点击 "分配 IPv6 地址" (Assign IPv6 Address)
操作步骤:
- 进入实例详情页
- 滚动到 "附加的 VNIC" (Attached VNICs)
- 点击 VNIC 名称,进入 VNIC 详情
- 找到 "IPv6 地址" (IPv6 Addresses) 部分
- 点击 "分配 IPv6 地址" (Assign IPv6 Address)

分配方式:
方式 1:自动分配(推荐)
- 不填写任何内容
- 直接点击 "分配"
- 系统会从子网的
/64中随机分配一个地址 - 格式类似:
2603:c1:3:b500:ee:xxxx:xxxx:xxxx
方式 2:手动指定
- 在输入框中填写你想要的 IPv6 后缀
- 例如:
:1表示2603:c1:3:b500:ee::1 - 确保该地址未被其他实例使用
- 点击 "分配"

分配成功后:
- VNIC 详情页会显示分配的 IPv6 地址
- 记下这个地址,稍后 SSH 连接会用到
- 可以在 DNS 中为该地址添加 AAAA 记录
IPv6 地址类型
- 全局单播地址 (Global Unicast):以
2xxx:或3xxx:开头,可公网访问 - 链路本地地址 (Link-Local):以
fe80:开头,仅内网通信 - Oracle Cloud 分配的是全局单播地址
第二部分:系统级配置
完成控制台配置后,还需要在操作系统中启用 IPv6。不同系统的配置方法略有差异。
网卡名称提示
- ARM 机器(Ampere A1)网卡名称默认为
enp0s6 - AMD/Intel 机器(x86_64)网卡名称默认为
ens3 - 可以通过
ip link命令查看实际网卡名称
方案一:使用 DHCPv6 获取 IPv6(推荐)
适用于大多数 Linux 发行版(Ubuntu、CentOS、Oracle Linux)。
1. 获取 IPv6
# 对于 ens3 网卡(AMD/Intel)
sudo dhclient -6 ens3
# 对于 enp0s6 网卡(ARM)
sudo dhclient -6 enp0s6命令说明:
dhclient:DHCP 客户端工具-6:使用 DHCPv6 协议ens3/enp0s6:网卡名称
2. 查看 IPv6 是否生效
ip -6 addr show预期输出:

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 state UP qlen 1000
inet6 2603:c1:3:b500:ee:xxxx:xxxx:xxxx/64 scope global dynamic noprefixroute
valid_lft 7200sec preferred_lft 7200sec
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever关键字段:
scope global dynamic:全局单播地址(可公网访问)valid_lft:地址有效期(秒),到期后会续租fe80::开头:链路本地地址
3. 测试 IPv6 网络情况
# 测试 Google IPv6 DNS
ping6 google.com
# 或
ping -6 google.com
# 测试连通性
curl -6 https://ipv6.google.com
成功标志:
- 收到回复包(64 bytes from ...)
- 无 "Network is unreachable" 错误
4. 重启服务器验证持久化
sudo reboot重启后再次检查:
# 检查 IPv6 地址是否保留
ip -6 addr show
# 测试连通性
ping6 -c 3 google.com如果重启后 IPv6 地址丢失,需要配置开机自动获取(见下方"持久化配置"部分)。
方案二:systemd-networkd 配置(Debian/Ubuntu 推荐)
这是更稳定的方案,适合 Debian 系列系统。
详细教程请参考: 👉 Debian 系统自动获取 IPv6 完全指南
简要步骤:
- 创建配置文件
/etc/systemd/network/10-ens3.network - 配置 DHCPv4 + IPv6 RA
- 禁用 ifupdown,启用 systemd-networkd
- 重启网络服务
方案三:Netplan 配置(Ubuntu 18.04+)
Ubuntu 18.04 及以上版本默认使用 Netplan。
编辑配置文件:
sudo nano /etc/netplan/50-cloud-init.yaml添加 IPv6 配置:
network:
version: 2
ethernets:
ens3:
dhcp4: true
dhcp6: true
accept-ra: true应用配置:
sudo netplan apply持久化配置(防止重启后丢失)
方法 1:使用 rc.local(简单但不推荐)
# 编辑 rc.local
sudo nano /etc/rc.local
# 添加以下内容(在 exit 0 之前)
dhclient -6 ens3
# 设置执行权限
sudo chmod +x /etc/rc.local方法 2:使用 systemd 服务(推荐)
创建服务文件:
sudo nano /etc/systemd/system/ipv6-dhcp.service服务内容:
[Unit]
Description=DHCPv6 Client for ens3
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/dhclient -6 ens3
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload
sudo systemctl enable ipv6-dhcp.service
sudo systemctl start ipv6-dhcp.service方法 3:使用 NetworkManager(桌面版 Ubuntu)
# 启用 IPv6
sudo nmcli con mod "有线连接 1" ipv6.method auto
# 重启连接
sudo nmcli con down "有线连接 1"
sudo nmcli con up "有线连接 1"第三部分:处理 NotAuthorizedOrNotFound 错误
如果在启用子网 IPv6 时遇到 NotAuthorizedOrNotFound 错误,需要使用 Cloud Shell 通过命令行修复。

步骤 1:打开 Cloud Shell
点击控制台右上角的 ">_" 图标,打开 Cloud Shell。
步骤 2:获取 compartment_id
oci iam compartment list
输出示例:
{
"data": [
{
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaxxxxxxxxxxxx",
"id": "ocid1.compartment.oc1..aaaaaaaayyyyyyyyyyyy",
"name": "root",
...
}
]
}提取 compartment_id:
# 复制 "id" 字段的值
# 例如:ocid1.compartment.oc1..aaaaaaaayyyyyyyyyyyy步骤 3:查询子网列表,获取 subnet_id
TIP
下面命令中的 [compartment_id] 替换为上一步获取的 compartment_id,不保留 [] 符号
oci network subnet list --compartment-id ocid1.compartment.oc1..aaaaaaaayyyyyyyyyyyy
输出示例:
{
"data": [
{
"id": "ocid1.subnet.oc1.xxxxxxxx.zzzzzzzzzzzz",
"display-name": "public-subnet",
"time-created": "2024-01-15T10:30:00.000Z",
...
}
]
}提取 subnet_id:
复制 "id" 字段的值
例如:ocid1.subnet.oc1.xxxxxxxx.zzzzzzzzzzzz如果有多个子网,根据 display-name 和 time-created 判断哪个是你要操作的子网。
步骤 4:获取 IPv6 CIDR

在 VCN 详情页的 "CIDR 块" 部分,找到已添加的 IPv6 CIDR。
例如: 2603:c1:3:b500::/56
步骤 5:计算子网 IPv6 CIDR
将 VCN 的 /56 CIDR 转换为你想要的 /64 子网 CIDR。
计算公式:
子网 IPv6 CIDR = VCN前缀 + 子网标识符 + ::/64示例:
- VCN IPv6 CIDR:
2603:c1:3:b500::/56 - 子网标识符:
ee(你在控制台输入的 2 位十六进制数) - 子网 IPv6 CIDR:
2603:c1:3:b500:ee::/64
如何确定子网标识符?
如果你忘记了输入的标识符,可以尝试:
00,01,02...ee,ef,ff- 或使用 Cloud Shell 查询现有子网配置
步骤 6:更新子网信息
将 [subnet_id] 和 [cidr] 替换为实际值!
oci network subnet update \
--subnet-id ocid1.subnet.oc1.xxxxxxxx.zzzzzzzzzzzz \
--ipv6-cidr-block 2603:c1:3:b500:ee::/64完整示例:
oci network subnet update \
--subnet-id ocid1.subnet.oc1.phx.ad1.aaaaaaaa1234567890 \
--ipv6-cidr-block 2603:c1:3:b500:ee::/64常见错误处理
如果执行提示错误:
错误信息:
The requested ipv6CidrBlock 2603:c1:3:b500::/56 is invalid:
Subnet can have only 64 bit IPv6 CIDRs.原因: CIDR 前缀长度错误,子网必须是 /64,不能是 /56
解决方法: 修改 CIDR,将 /56 改为 /64
# 错误写法
2603:c1:3:b500::/56
# 正确写法(添加子网标识符)
2603:c1:3:b500:ee::/64然后重新执行命令。
执行成功后:
- 返回控制台刷新子网页面
- 应该能看到 IPv6 CIDR 已成功启用
- 继续完成后续的路由表和安全列表配置
第四部分:验证与测试
1. 检查 IPv6 地址
# 查看所有 IPv6 地址
ip -6 addr show
# 查看特定网卡
ip -6 addr show ens3
# 简洁输出
ifconfig | grep inet62. 测试 IPv6 连通性
# Ping Google IPv6 DNS
ping6 -c 4 2001:4860:4860::8888
# Ping IPv6 网站
ping6 -c 4 ipv6.google.com
# 使用 curl 测试
curl -6 https://api64.ipify.org预期输出:
你的IPv6地址3. 在线 IPv6 测试
访问以下网站进行综合测试:
测试项目包括:
- IPv6 连通性
- DNS 解析
- MTU 大小
- 延迟和丢包率
4. 从外部访问服务器
SSH over IPv6:
# 从另一台支持 IPv6 的设备
ssh -6 opc@[2603:c1:3:b500:ee:xxxx:xxxx:xxxx]
# 或在 ~/.ssh/config 中配置
Host oracle-ipv6
HostName 2603:c1:3:b500:ee:xxxx:xxxx:xxxx
User opc
IdentityFile ~/.ssh/oracle_key
AddressFamily inet6Web 服务测试:
# 在服务器上启动测试 Web 服务
python3 -m http.server 8080
# 从外部访问
curl -6 http://[2603:c1:3:b500:ee:xxxx:xxxx:xxxx]:8080第五部分:常见问题解答
Q1: 为什么我的实例没有获取到 IPv6 地址?
可能原因:
- 控制台未正确配置(VCN、子网、路由、安全列表)
- VNIC 未分配 IPv6 地址
- 系统未启用 DHCPv6 客户端
排查步骤:
# 1. 检查控制台配置
# 登录 Oracle Cloud 控制台确认所有步骤已完成
# 2. 检查 VNIC 是否分配了 IPv6
# 实例详情 → VNIC → 查看 IPv6 地址部分
# 3. 检查系统 DHCP 客户端
sudo dhclient -6 ens3
# 4. 查看系统日志
journalctl -u systemd-networkd -fQ2: IPv6 地址会变化吗?
答案: 取决于分配方式
动态分配(DHCPv6):
- ✅ 地址可能会变化(租期到期后)
- ✅ 租期通常为 2 小时
- ✅ 续租时会保持相同地址(除非冲突)
静态分配:
- ❌ 地址固定不变
- ❌ 需在控制台手动指定
- ❌ 删除后需重新分配
建议:
- 对于服务器,建议在控制台预留静态 IPv6
- 对于临时测试,动态分配即可
Q3: 如何为域名添加 IPv6 解析(AAAA 记录)?
DNS 配置示例:
Cloudflare:
类型: AAAA
名称: @ 或 www
内容: 2603:c1:3:b500:ee:xxxx:xxxx:xxxx
TTL: 自动阿里云 DNS:
记录类型: AAAA
主机记录: @
记录值: 2603:c1:3:b500:ee:xxxx:xxxx:xxxx
TTL: 10分钟验证 DNS 解析:
dig AAAA your-domain.com
nslookup -type=AAAA your-domain.comQ4: IPv6 和 IPv4 可以同时使用吗?
答案: 完全可以!✅
双栈配置(Dual Stack):
- 服务器同时拥有 IPv4 和 IPv6 地址
- 客户端优先使用 IPv6(如果支持)
- 不支持 IPv6 的客户端回退到 IPv4
- 现代操作系统和浏览器都支持双栈
优势:
- 兼容性最好
- 平滑过渡到 IPv6
- 无需额外配置
Q5: IPv6 会影响性能吗?
答案: 不会,甚至可能更好!
性能对比:
| 指标 | IPv4 | IPv6 | 说明 |
|---|---|---|---|
| 延迟 | 基准 | 相同或更低 | 简化的报头处理更快 |
| 吞吐量 | 基准 | 相同 | 带宽取决于网络 |
| NAT 开销 | 有 | 无 | IPv6 无需 NAT,减少延迟 |
| 路由效率 | 一般 | 更好 | 更大的路由表聚合 |
实测数据:
- Oracle Cloud 内部:IPv6 与 IPv4 性能几乎相同
- 跨运营商:IPv6 可能略快(避免 NAT)
- 国际访问:取决于对端网络的 IPv6 优化程度
Q6: 如何禁用 IPv6(如果不需要)?
临时禁用:
# 禁用特定网卡的 IPv6
sudo sysctl -w net.ipv6.conf.ens3.disable_ipv6=1
# 禁用所有网卡的 IPv6
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1永久禁用:
# 编辑 sysctl 配置
sudo nano /etc/sysctl.d/99-disable-ipv6.conf
# 添加以下内容
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# 应用配置
sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf不建议禁用
- Oracle Cloud 免费提供 IPv6
- 未来互联网将全面转向 IPv6
- 禁用可能导致某些应用异常
第六部分:高级应用场景
1. 搭建 IPv6 -only 服务
某些场景下,你可能希望服务仅通过 IPv6 访问:
Nginx 配置:
server {
listen [::]:80; # 仅监听 IPv6
listen [::]:443 ssl; # 仅监听 IPv6 HTTPS
server_name ipv6-only.example.com;
location / {
root /var/www/html;
index index.html;
}
}Apache 配置:
Listen [::]:80
Listen [::]:443
<VirtualHost [::]:80>
ServerName ipv6-only.example.com
DocumentRoot /var/www/html
</VirtualHost>2. IPv6 隧道(桥接)
如果你的本地网络不支持 IPv6,可以通过 Oracle Cloud 建立隧道:
使用 socat 建立隧道:
# 在 Oracle Cloud 服务器上
sudo apt install socat
socat TCP6-LISTEN:8080,fork,reuseaddr TCP4:127.0.0.1:80 &
# 在本地计算机
socat TCP4-LISTEN:8080,fork,reuseaddr TCP6:[oracle-ipv6-address]:80803. Docker 容器启用 IPv6
Docker daemon 配置:
// /etc/docker/daemon.json
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80"
}重启 Docker:
sudo systemctl restart docker运行容器:
docker run -d --name my-app -p 80:80 nginx容器将自动获得 IPv6 地址。
4. Kubernetes IPv6 支持
Kubernetes 集群配置:
# kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
podSubnet: "10.244.0.0/16,fd00::/48"
serviceSubnet: "10.96.0.0/12,fd01::/112"总结
为 Oracle Cloud 免费服务器开启 IPv6 的完整流程:
控制台配置(6 步):
- ✅ 添加 VCN IPv6 CIDR 块(
/56) - ✅ 启用子网 IPv6(
/64) - ✅ 配置路由表(
::/0→ Internet Gateway) - ✅ 配置安全列表(允许 IPv6 流量)
- ✅ 为实例 VNIC 分配 IPv6 地址
- ✅ 处理可能的
NotAuthorizedOrNotFound错误
系统配置(3 种方案):
- ✅ DHCPv6 快速获取(临时测试)
- ✅ systemd-networkd 持久化(Debian/Ubuntu 推荐)
- ✅ Netplan 配置(Ubuntu 18.04+)
关键收益:
- 🎯 充分利用 Oracle Cloud 免费 IPv6 资源
- 🌐 享受下一代互联网协议的优势
- 🔧 提升网络安全性和性能
- 📱 为物联网和未来应用做好准备
下一步学习:
开启你的 IPv6 之旅吧!🚀✨