温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
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》
Windows 10Chrome 90.0.4430.93来自 香港 的大神
我自己也是这么做的,但是遇到一点问题。就是VPS上用dhclient -6获取到在网页分配的v6地址之后,ping6 google.com可以解析出地址,但是ping不通。但是两台vps互ping v6地址就没问题。自己对v6不太熟悉,大佬知道什么原因不?
两台 vps 互 ping,是指不同地区的不同 VPS,还是自己账号下开的两台?
Oracle Cloudですでに作成済みのネットワークに対してIPv6を有効にする方法 - OSAKANA TAROのメモ帳
Windows 10Chrome 90.0.4430.212来自 新加坡 的大神
用 chmod x /etc/rc.d/rc.local
然后把dhclient -6扔进去就行了,开机有ipv6,虽然有点傻
可以的,或者修改 DHCP 配置,把 IPv6 加进去。
Windows 10Chrome 90.0.4430.212来自 湖北 的大神
怎么修改DHCP配置?我这是centos7,搜了下不知道怎么修改
如果是自带的 CentOS,采用的是 cloud-init 管理,所以修改这个配置即可,可以参考下这个配置 https://vircloud.net/go/cloud-init-ipv6/
或者直接改网卡配置,看文章最后一节。
Windows 10Chrome 91.0.4472.77来自 美国 的大神
DD的debian最后到 /etc/network/interfaces 添加一行 iface ens3 inet6 dhcp
再重启网卡即可
Windows 10Chrome 91.0.4472.124来自 广东 的大神
Oracle Linux 7.9里面,还要手动添加一下上面分配那个IPv6。ens3是网络接口名称,可以通过
ip addr
来查看,一般都是这个。ip addr add 2603:xxxx:xxxx:xxxx::2333 dev ens3
Oracle Cloud 甲骨文云启用原生 IPv6 地址详细教程 - 简单、通用、免费、双栈更香 - zzss.cf