温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
Oracle Cloud 甲骨文云在 4 月 15 日左右已经全面开放 IPv6(此前仅在 GOV 政府区域开放),所有云基础架构(Oracle Cloud Infrastructure,OCI)都支持 IPv6 。
对我们而言,简单来说,就是云主机(Compute Instance)也可以分配 IPv6 了,操作非常简单,无需重启,免费使用,支持 IPv4/IPv6 双栈的甲骨文是不是更香了?
相关文章:
Oracle Cloud 甲骨文云对象存储 ObjectStorage API(OCI)详细使用说明
Oracle Cloud 甲骨文云宣布提供终身永久免费 VPS、对象存储、数据库等服务,附教程评测
分配 IPv6 分两种情形,一是全新创建主机实例,二是已创建的实例分配 IPv6。
对于第一种情形,在创建主机实例时,勾选 IPv6 即可:
第二种情形是本文重点,大致流程是:① 分配 CIDR → ② 配置子网 → ③ 配置路由 → ④ 配置安全规则 → ⑤ 分配 IPv6,下面进行详细说明,前四个步骤在 网络 > 虚拟云网络 > 虚拟云网络详细信息
中操作,最后一个步骤在实例的 VNIC 详细信息
中操作:
分配 CIDR
路径:网络 > 虚拟云网络 > 虚拟云网络详细信息 > CIDR 块,直接点击添加 IPv6 CIDR 块
即可,默认会分配一个 /56 大小的 IPv6 地址块:
配置子网
路径:网络 > 虚拟云网络 > 虚拟云网络详细信息 > 子网,点击子网右侧的三个点,再点击编辑:
勾选 启用 IPv6 CIDR 块
,填写 00-FF 任意一个十六进制数字,然后保存,这里就会分配一个 /64 大小的 IPv6 地址块:
配置路由
路径:网络 > 虚拟云网络 > 虚拟云网络详细信息 > 路由表,点击添加路由规则
,按截图示例设置并保存:
IPv4/IPv6 双栈要正常工作,应该要有以下两条路由(::/0、0.0.0.0/0):
配置安全规则
路径:网络 > 虚拟云网络 > 虚拟云网络详细信息 > 网络安全组,出站规则、入站规则都要添加,点击添加规则
,按截图示例设置(开放所有)并保存:
IPv4/IPv6 双栈要正常工作,应该要有以下两条规则(::/0、0.0.0.0/0):
分配 IPv6
路径:计算 > 实例 > 实例详细信息 > 附加的 VNIC > VNIC 详细信息,点击 分配 IPv6 地址
,在方框中填写 IPv6 地址后缀,然后点击分配即可:
测试 IPv6
现在主机实例应当已经获取到了 IPv6 地址(部分系统可能需要手动更新一下),测试一下:
可以看到 PING 通了,而且 PING 值非常低,极有可能跟谷歌是机房直连的。
实际测试中发现,三网没有一个机房的 IPv6 是直连的,所以没啥用?
问题点
1、NotAuthorizedOrNotFound
确认已开通实例没勾选启用 IPv6,并且已经过了 30 天试用期的账号会出现这个错误。可以重新创建子网并勾选 IPv6(IPv4 会变),也可以通过辅助手段直接添加 IPv6。
不删除子网分配 IPv6 方法,已过试用期的账号也可以实现:
I、控制台右上角点开 Cloud Shell:
II、获取 compartment_id:
在 Cloud Shell 中输入:
oci iam compartment list
III、获取 subnet_id:
在 Cloud Shell 中输入([compartment_id]
替换成上一步查询到的 compartment_id
):
oci network subnet list --compartment-id [compartment_id]
注意,如果子网有多个的话,这里会获取多个 id,辨别一下到底操作的是哪个。
IV、获取 CIDR 块地址
V、给 subnet 分配 IPv6
在 Cloud Shell 中输入([subnet_id]
替换成第 III 步查询到的 subnet_id
,[cidr]
替换成上一步添加的 IPv6 CIDR 块,注意这里子网分配的块大小是 /64
,而不是 /56
):
oci network subnet update --subnet-id [subnet_id] --ipv6-cidr-block [cidr]
如图分配成功,接下来参照上面步骤配置路由、配置安全规则、分配 IPv6 等等即可。
纯命令行操作可以参考《Oracle Cloud 甲骨文云利用 API(OCI)分配并启用原生 IPv6 详细使用说明 - 提示 NotAuthorizedOrNotFound 也可以操作》,优势在于更快、更方便。
2、分配不到 IPv6 地址
即已在管理控制台按步骤操作分配了 IPv6,但是主机仍然没有 IPv6。
部分精简版的系统存在这个问题,实际上网络已经支持 IPv6,只是在最终获取 IPv6 时失败,此时我们可以直接将 IPv6 地址赋给网卡:
root@oc-kr:~# ifconfig ens3 inet6 add [IPv6]/64 up
注意将 [IPv6] 改为实际的 IPv6 地址,后缀固定是 /64
,Oracle 自带 Linux 映像默认网卡都是 ens3
。
也可以尝试使用如下方法启用 IPv6(针对早期版本,供参考,勿照搬):
root@oc-kr:~# echo "net.ipv6.conf.all.disable_ipv6 = 0" >> /etc/sysctl.conf
root@oc-kr:~# echo "net.ipv6.conf.default.disable_ipv6 = 0" >> /etc/sysctl.conf
root@oc-kr:~# echo "net.ipv6.conf.ens3.disable_ipv6 = 0" >> /etc/sysctl.conf
root@oc-kr:~# echo "net.ipv6.conf.lo.disable_ipv6 = 0" >> /etc/sysctl.conf
root@oc-kr:~# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.ens3.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
root@oc-kr:~# dhclient -6
或者直接将 IPv6 地址写到网卡配置文件中(以 CentOS 为例,供参考,勿照搬):
root@oc-kr:~# vim /etc/sysconfig/network-scripts/ifcfg-ens3
DEVICE="ens3"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
NM_CONTROLLED="no"
IPV6_AUTOCONF="yes"
IPV6INIT="yes"
NOZEROCONF="yes"
IPV6ADDR_SECONDARIES="2001::f001/64"
ZONE=public
如果是 Ubuntu 系统,则可参考如下配置:
root@oc-kr:~# vim /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
dhcp4: true
dhcp6: false
match:
macaddress: 02:00:17:01:2e:*
addresses:
- 2603:c022:8001:*:*:*:*:*/128
set-name: ens3
注意,macaddress
后的 MAC 地址,及 addresses
后的 IPv6 地址,请改成自己申请的地址。
参考文章
1、《IPv6 on Oracle Cloud Infrastructure》
2、《Oracle Cloud Infrastructure Documentation - IPv6 Addresses》
Oracle 开启IPv6 - 璃墨的小站
Mac OS X 10_15_7Safari 605.1.15来自 福建 的大神
感谢,已开启成功!
LinuxFirefox 91.0来自 广东 的大神
感謝博主的細緻分享,我也成功開啓了IPv6!按上面步驟在網頁上操作後獲取到IPv6,但是機器裏沒有,運行
ifconfig ens3 inet6 add [IPv6]/64 up
後就OK了。
Mac OS X 10_15_7Chrome 101.0.4951.41来自 美国 的大神
ip6地址也分配了,ping6 Google也正常,但是ping不通这个ipv6地址,什么情况啊?求大佬赐教
也就是说内网访问外网是通的,但是外网没办法访问内网,这个大概率是防火墙问题,访问网页控制台或者用 cli 命令,看看是否放行 IPv6(防火墙默认只放行 IPv4)