OCIのオブジェクト・ストレージで、IPv4/IPv6デュアルスタックのエンドポイントが利用可能になりました!
これまでのエンドポイントは特に変わらず利用可能で、新たなエンドポイントとしてデュアルスタックのエンドポイントが追加されました。このエンドポイントを使えば、IPv6が必須な場合や、クライアント側にIPv4とIPv6が混在するような場合でもオブジェクト・ストレージを使うことができそうですので、やってみたいと思います。
準備
まずはIPv6アドレスを持つインスタンスを用意します。
VCN内でのIPv6アドレスの仕組みや利用方法については、IPv6アドレスを参考にしてください。
-
VCNとサブネットにIPv6接頭辞を割り当てておきます。今回はパブリックサブネットにインスタンスを配置して、インスタンスからインターネットゲートウェイ経由でオブジェクトストレージにアクセスする予定です。


-
ルート表やセキュリティ・ルールも忘れずに設定しておきます。まず、サブネットのルート表にIPv6の宛先へのルート・ルールを追加します。

-
のちほどOCI CLIで動作確認したいので、OCI CLIをセットアップしておきます。ここではCLIのインストールやセットアップの方法は割愛しますが、新機能を試すので現時点の最新バージョンをインストールしておきます。

使ってみる
デュアルスタックのエンドポイントは、<namespace>.objectstorage.<region>.ds.oci.customer-oci.com の形式になります。
-
まずはcurlコマンド(curl -v -6)で、先ほど作成したインスタンスからIPv6ベースでエンドポイントにアクセス可能かを確認してみます。問題なさそうです!


-
続いて、CLIが利用するエンドポイントを変更します。ドキュメントによれば、以下の3つの指定方法があるようです。ここでは、わかりやすいようにコマンド単位でのオプションを使ってみます。
- セッション単位で指定
-
OCI_DUAL_STACK_ENDPOINT_ENABLED=trueとOCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED=true
-
- コマンド単位で指定
-
--enable-dual-stackオプションと、--realm-specific-endpointオプション
-
- エンドポイントを上書きするオプションで直接エンドポイントURLを指定(デュアルスタックのエンドポイント以外に他のエンドポイントを指定する場合でも使えます。)
-
--endpoint <dual-stack-url>オプション
-
- セッション単位で指定
-
本当にIPv6対応のエンドポイントが使われているのかがわからないので、--debug オプションを付けて実際にアクセスしているエンドポイントを表示してみます。"objectstorage.ap-tokyo-1.ds.oci.customer-oci.com" という形で"ds"が含まれたURLが見えるので、デュアルスタックのエンドポイントが使われていそうです。

-
ただ、デュアルスタックなのでこれだけだとおそらくIPv4のアドレスを使って通信されていると思われます。そこで、iptablesを使って強制的にオブジェクトストレージのエンドポイントのIPv4アドレス向けの通信を拒否しておきます。

-
IPv4アドレスへの通信を拒否してもデュアルスタックのエンドポイントであればCLI結果は返ってきました。逆に通常のエンドポイントへは疎通出来ないのでコマンドが返ってきませんでした。ということで、無事にデュアルスタックのエンドポイントでIPv6アドレスも使えることが確認できました。






