はじめに
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アドレスの割当て」をクリックします。
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アドレスを使用してアクセスできることが確認できました。