为 Oracle 主机配置 IPv6

之前试用 Oracle 主机的时候没有配置 IPv6 地址。Oracle 为虚拟主机(Compute instance)的虚拟网络(VCN, Virtual Cloud Network)提供 /56 的 IPv6 地址池,用户可以为一个子网分配 /64 的 IPv6 地址池,然后每个主机的虚拟网卡可以拥有最多 32 个 IPv6 地址。参见文档

给 VCN 分配 IPv6 地址前缀

要给一个已有的虚拟主机分配 IPv6 地址,需要先为主机所在的 VCN 分配 IPv6 地址前缀。

Oracle Cloud >> Networking >> Virtual Cloud Networks

如图,从控制台依次进入 Networking >> Virtual Cloud Networks,选择虚拟主机所在的 VCN 以打开要配置的虚拟网络的详细信息页面。如果有多个 VCN,注意不要选错了。

然后从上图中左侧的列表打开 CIDR Blocks/Prefixes 标签页。单击 Add CIDR Block/IPv6 Prefix 即可打开向导,开始创建 IPv6 地址前缀了。

在向导中勾选图中红框处,然后单击下面的 Add CIDR Blocks/IPv6 Prefixes 按钮,即可让 Oracle 自动为该 VCN 分配一个 IPv6 前缀。分配过程需要一点时间,耐心等待,分配后会自动出现在原来的 IPv4 的 CIDR Block/Prefix 下面。

我这里因为已经自动分配过了,所以需要需要再增加 IPv6 前缀,就需要使用红框下面的 BYOIPv6 来分配自己带到 OCI 的 IPv6 前缀了。可惜的是我没有,只能用 Oracle 自动分配的那个 IPv6 前缀了 :)

为虚拟网络配置 IPv6 路由

在控制台页面 Networking >> Virtual Cloud Networks,打开对应的虚拟网络 VCN 的详细信息页面。

打开它的 Default Route Table,点击 Add Route Rules 以打开 Add Route Rules 向导,增加一条关于 IPv6 的路由信息。

Protocol Version:IPv6
Target Type:Internet Gateway
Destination CIDR Block:::/0
Target Internet Gateway in oci-www: (这里需要根据情况来选择)

上面最后一项中的 oci-www 是该资源所在的 Compartment。默认选择的可能不是对应的,那就单击后面的 (Change Compartment) 来重新选择即可。然后在下面的下拉列表中选择正确的网关,如 Internet Gateway vcn-www 即可。编辑好了再单击下面的 Add Route Rules 来保存。

为虚拟子网增加 IPv6 地址前缀

接上。打开左侧栏目中 CIDR Blocks/Prefixes 上方的 Subnets 标签页,选择要配置的虚拟主机所对应的那个子网打开其详细信息页面。同样的,如果曾经配置了多个子网,注意不要选错了。当然也可以从要配置的虚拟主机的详细信息页面来打开 Attached VNICs 标签页,从而直接打开该虚拟主机对应的子网的详情页面。

从左边栏里切换到 IPv6 Prefixes 标签页。单击 Add IPv6 Prefix 即可打开向导,为该子网配置 IPv6 前缀。每个子网最多可以配置 3 个前缀,其中包括最多 1 个 Oracle 自动分配的前缀。

勾选向导页面中上一个红框里的 Assign an Oracle allocated IPv6 /64 prefix,出现下一个红框。按照提示输入这个 /64 大小的 IPv6 地址池的起始地址,在 00 – FF 之间即可。图中我已经输入了 01。然后单击下面的 Add IPv6 Prefix,并等待系统自动创建。

结果如图所示。这个地址范围很大。

在防火墙规则中允许 IPv6 通讯

在配置虚拟主机和配置虚拟网络的时候,都需要指定防火墙规则。比如在上一节中配置子网的时候看到的 Security Lists,就是针对该子网的防火墙规则。之前没有配置 IPv6 地址,这个默认的规则里是没有相应的 IPv6 规则的。这里也需要针对 IPv6 设置规则。

安全规则可是 VCN 层面的,也可以是在子网层面的。这里是针对子网来配置的。在 Networking >> Virtual Cloud Networks >> vcn-www 页面,打开相应的子网详情页面,默认显示的就是从左边栏目里看到的 Security Lists。单击打开安全表单 Security Lists 的表单,这里是 Default Security List for vcn-www。详情如下图所示。

出站规则(Egress Rules)比较简单,一条规则允许所有出站流量即可。从左边栏目里切换到 Egress Rules 标签页,如上图所示,单击 Add Egress Rules 打开添加出站规则向导,如下图所示填写信息即可,然后单击下面的 Add Egress Rules 保存。

入站规则较为复杂,各有各的要求,这里只列举几个必要的 IPv6 ICMP 规则。从左边栏目里切换到 Igress Rules 标签页,与出站规则的设置类似,单击 Add Igress Rules 打开添加入站规则向导,填写信息后单击下面的 Add Igress Rules 保存。

这里按照 RFC 4890 的推荐允许几个特别的 ICMP 相关的规则,包括允许 ping 的规则。
地址 ::/0,协议 Protocol 选择 IPv6 ICMP,然后类型 Type 和代码 Code 的组合有如下几条,

Type Code
1
2
3 '0'
4 1
4 2
128
129

其中 128 和 129 就是允许 ping 的规则。

为 Compute instance 配置 IPv6 地址

现在,到虚拟主机的详情页面,然后从左侧栏目中切换到 Attached VNICs 标签页。从控制台,依次进入 Compute >> Instances >> Instance details >> Attached VNICs。

对于一个创建好的主机,最少已经有一个可用的虚拟网卡 VNIC 了。打开该虚拟网卡的详情页面,左侧栏能看到新出现的 IPv6 Addresses 标签页入口。点击打开,然后单击 Assign IPv6 Address 按钮打开 IPv6 地址分配向导。

如上图,选择刚才分配好的前缀。然后可以自动在这个范围里分配 IPv6 地址。也可以选择自己手动指定,当然也得在这个前缀给出的范围里面来指定。有那么多可用地址,随便选择一个即可。

图中我使用了 :1234:5678 结尾的地址。因为前面已经有个 : 号了,再紧接着一个 : 冒号就构成了 ::,表示这两个冒号之间的数字都是 0

然后单击下面的 Assign 按钮即可完成 IPv6 地址指派。如果担心自己之前已经将这个 IPv6 地址指派给别的网卡了,就勾选上 Unassign if already assigned to another VNIC。

也可以重复上述步骤,为该网卡指派多个 IPv6 地址。最多 32 个。

在虚拟主机中启用 IPv6 地址

如果是为曾经创建的主机增加 IPv6 地址,上面的操作并不会让这个 IPv6 地址立即生效。如果没有关闭系统的地址自动分配服务 DHCPv6,稍等一段时间就能生效。否则就需要自己在虚拟主机中手动配置让其使用该地址。参考官方文档

通常使用下列指令更新 IP 即可,

sudo dhclient -6 ens3

常用的 Ubuntu(目前是 20.04 版本),如果没有做特殊的修改,系统会自动更新使用分配的 IPv6 地址。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/vps-config-ipv6-for-compute-instance-on-oracle-cloud/>。转载请保留此信息及相应链接。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>