[OCI] IPv6に対応した仮想クラウドネットワーク(VCN)を作成して、自宅からIPv6アドレスで仮想マシンにアクセスしてみた


はじめに

2021/4/15から、OCIの全リージョンでIPv6が利用可能になりました。

[Release Notes : IPv6 general availability]
(https://docs.oracle.com/en-us/iaas/releasenotes/changes/5b5cc0a0-cc06-4d25-bde8-5bcb8cbe94b6/)

ということで、 IPv6に対応したVCNを作成し、OCI上のComputeインスタンスの自宅からIPv6アドレスでアクセスできるか検証してみました。

1. IPv6に対応したVCNの作成

まずは、IPv6に対応したVCN「VCN_IPv6」を作成します。
「IPv6 CIDRブロックの有効化」のチェックボックスをオンにしてVCNを作成します。

IPv6 CIDRブロックを有効にしたVCNには、58ビットマスクのIPv6 CIDRブロックが自動的に割り当てられます。

2. インターネット・ゲートウェイの作成

インターネット・ゲートウェイ「Internet Gateway」作成します。

3. IPv6に対応したサブネットの作成

「VCN_IPv6」内にIPv6に対応したサブネット「Subnet_IPv6」を作成します。

CIDRブロックのセクションで、「IPv6 CIDRブロックの有効化」のチェックボックスをオンにし、IPv6のCIDRブロックを指定します。サブネットマスクは64ビットで固定となっています。

ルート表として、VCN作成時に作成される「Default Route Table for VCN_IPv6」を指定します。
サブネット・アクセスは、今回はインターネット側からのアクセスを確認するので、「パブリック・アクセス」を選択します。

DHCPオプションには「Default DHCP Options for VCN_IPv6」、セキュリティ・リストには「Default Security List for VCN_IPv6」を指定します。
いずれもVCN作成時にデフォルトで作成されたものです。

4. ルート表へのルート・ルールの追加

サブネット「Subnet_IPv6」に関連づけたルート表「Default Route Table for VCN_IPv6」にルート・ルールを追加します。

まずはIPv4のインターネットへのトラフィックをインターネット・ゲートウェイにルーティングするルート・ルールです。

次にIPv6のインターネットへのトラフィックをインターネット・ゲートウェイにルーティングするルート・ルールです。

ルート表「Default Route Table for VCN_IPv6」にルート・ルールが追加されました。

5. セキュリティ・リストのセキィリティ・ルールの編集

サブネット「Subnet_IPv6」に関連づけたセキュリティ・リスト「Default Security List for VCN_IPv6」のセキュリティ・ルールを編集します。

デフォルトでは以下のようなセキュリティ・ルールが設定されています。

今回はアクセス確認なので、デフォルトで作成されているIPv6-ICMPに関するセキュリティ・リストを編集し、インターネット側からのIPv6でのPingに応答するように変更します。

デフォルトではこちらのようになっています。

これを以下のように変更し、全てのアドレスからIPv6のpingを許可します。

6. Computeインスタンスの作成

Computeインスタンスの作成は、通常の手順と同じです。
今回は以下のような設定で作成しました。



7. ComputeインスタンスへのIPv6アドレスの割り当て

Computeインスタンスが実行中になったことを確認したら、ComputeインスタンスにIPv6アドレスを割り当てます。

画面左下にあるリソース欄の「アタッチされたVNIC」をクリックします。

VNIC名をクリックします。

VNICの詳細が表示されます。

画面左下にあるリソース欄の「IPv6アドレス」をクリックします。

「IPv6アドレスの割当て」をクリックします。

IPv6アドレスを入力し、「割当て」をクリックします。

VNICにIPv6アドレスが割り当てられました。

OCIでは、VNICに割り当てられたIPv6アドレスは、プライベートIPアドレスだけでなくパブリックIPアドレスとしても使用されますので、インターネット側からアクセスする際にも、こちらで割り当てたIPv6アドレスを利用します。

8. OSレベルでのIPv6アドレスの有効化

opcユーザとして、Computeインスタンスにログインします。

ifconfigコマンドでネットワークインターフェースの状態を確認します。

[opc@computeipv6 ~]$ ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::17ff:fe01:d903  prefixlen 64  scopeid 0x20<link>
        ether 02:00:17:01:d9:03  txqueuelen 1000  (Ethernet)
        RX packets 2721  bytes 836707 (817.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3420  bytes 2104526 (2.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 403  bytes 28859 (28.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 403  bytes 28859 (28.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

以下のコマンドで、ネットワークインターフェース「ens3」にIPv6アドレスを取得します。

sudo dhclient -6 ens3

再度、ifconfigコマンドでネットワークインターフェースの状態を確認します。

[opc@computeipv6 ~]$ ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::17ff:fe01:d903  prefixlen 64  scopeid 0x20<link>
        inet6 2603:c021:0:86ff:1::1  prefixlen 128  scopeid 0x0<global>
        ether 02:00:17:01:d9:03  txqueuelen 1000  (Ethernet)
        RX packets 2721  bytes 836707 (817.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3420  bytes 2104526 (2.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 403  bytes 28859 (28.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 403  bytes 28859 (28.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ネットワークインターフェース「ens3」にIPv6アドレス「2603:c021:0:86ff:1::1」が割り当てられたことが確認できました。

9. IPv6アドレスでの接続確認

ComputeインスタンスのIPv6アドレス「2603:c021:0:86ff:1::1」に対して、自宅のコンピュータからping6コマンドを打ってみます。

無事、ping応答が返ってきました。

まとめ

ComputeインスタンスにIPv6アドレスを使用してアクセスできることが確認できました。