初めに
OCI(Oracle Cloud Infrastructure)は、エフェメラルと予約済の2種類のパブリックIPを提供します。どちらも無料です。これは、他のクラウド・プロバイダーによりも大きな利点です。AWS、Azure、またはGCPを使用している場合は、パブリックIPの料金を支払う必要があります。
「パブリックIP」の呼び方は、クラウド・プロバイダーによって異なりますのでご注意ください。
パブリック・サブネットのインスタンスを起動すると、デフォルトではインスタンスはパブリックIPを取得します。特定のインスタンスに複数のセカンダリVNICを含めることができ、特定のVNICには複数のセカンダリ・プライベートIPを含めることができます。したがって、必要に応じて、1つ以上のVNICで特定のインスタンスに複数のパブリックIPを割り当てることができます。
エフェメラル・パブリックIPの制限:
1. VNICごとに1つ
2. VMインスタンスごとに2つ、ベア・メタル・インスタンスごとに16
では、異なるVNICにまたがる2つのパブリックIPを使用してOCI VMにアクセスする方法を紹介したいと思います。

検証環境:
インスタンス・タイプ: OCI VM
OS: Oracle Linux 7.9
パブリックIPのタイプ: エフェメラル
アタッチされたVNIC: 2つ
1. パブリックIP持ちのインスタンスを作成
パブリック・サブネットのインスタンスを作成する時、デフォルトでは「パブリックIPv4アドレスの割当て」がチェックされます。起動後、プライマリVNICにエフェメラル・パブリックIPが割り当てられ、インスタンスの存続期間中に存在します。AWS Elastic IPとは異なり、OCIエフェメラル・パブリックIPは、インスタンスのリブート後に変更されません。
OCIコンソールからパブリックIPをコピーします。
それで、SSHを使用してインスタンスにアクセスできます。セキュリティ・リストとルート・テーブル(インターネットGWを含む)が正しく設定されているのを確保しておいてください。
2. セカンダリVNICの追加
Compute Instances → Instance details → Attached VNICs → Create VNIC
VNIC名(オプション)を入力し、VCNとサブネットを選択します。
デフォルトでは「パブリックIPv4アドレスの割り当て」がチェックされていません。それをチェックし、「変更の保存」ボタンをクリックします。
VNICがアタッチされたら、VNICの詳細画面からパブリックIPを確認できます。
3. 構成スクリプトの実行
セカンダリVNICをLinux VMインスタンスに追加すると、新しいインタフェース(イーサネット・デバイス)がインスタンスに追加され、OSで自動的に認識されます。ただし、DHCPはセカンダリVNICに対してアクティブではないため、静的IPアドレスおよびデフォルト・ルートでインタフェースを構成する必要があります。
VNICを追加した後のインターフェース情報は、次のようです。(構成実行前)
[opc@linux-vm-with-public-ips ~]$ ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::17ff:fe01:5084 prefixlen 64 scopeid 0x20<link>
ether 02:00:17:01:50:84 txqueuelen 1000 (Ethernet)
RX packets 4497 bytes 47103124 (44.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3943 bytes 2596438 (2.4 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 458 bytes 31519 (30.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 458 bytes 31519 (30.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[opc@linux-vm-with-public-ips ~]$Oracleは、OS構成を完了するためのシェル・スクリプトを提供しています。こちらからスクリプトをダウンロードできます。
構成スクリプトをインスタンスにアップロードし、次のコマンドで実行します。secondary_vnic_all_configure.sh -c
[opc@linux-vm-with-public-ips ~]$ pwd
/home/opc
[opc@linux-vm-with-public-ips ~]$ ll
total 56
-rwxr-xr-x. 1 opc opc 55938 Jan 11 07:18 secondary_vnic_all_configure.sh
[opc@linux-vm-with-public-ips ~]$ sudo ./secondary_vnic_all_configure.sh -c
Info: adding IP config for VNIC MAC 02:00:17:02:e6:f3 with id ocid1.vnic.oc1.ap-tokyo-1.abxhiljrzuxqqz4cir3z7htbswcn6ce4lcxk2fzgz544pe6utnv2woswjeoa
Info: added IP address 10.0.1.172 on interface ens5 with MTU 9000
Info: added rule for routing from 10.0.1.172 lookup ort1 with default via 10.0.1.1
[opc@linux-vm-with-public-ips ~]$構成完了後のインターフェース情報は、次のようです("ens5"が追加された)。
[opc@linux-vm-with-public-ips ~]$ ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::17ff:fe01:5084 prefixlen 64 scopeid 0x20<link>
ether 02:00:17:01:50:84 txqueuelen 1000 (Ethernet)
RX packets 5447 bytes 47346293 (45.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4810 bytes 3290349 (3.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.0.1.172 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::17ff:fe02:e6f3 prefixlen 64 scopeid 0x20<link>
ether 02:00:17:02:e6:f3 txqueuelen 1000 (Ethernet)
RX packets 1 bytes 56 (56.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10 bytes 796 (796.0 B)
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 552 bytes 36599 (35.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 552 bytes 36599 (35.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[opc@linux-vm-with-public-ips ~]$それで、SSHを使用して新しいパブリックIPでインスタンスにアクセスできます。
公式ドキュメント
仮想ネットワーク・インタフェース・カード(VNIC)
Release Announcement - Reserved Public IPs are now available on Oracle Cloud Infrastructure!