複数のパブリックIPでOCI Compute (VM)にアクセスする方法

OCI Core Services

初めに

OCI(Oracle Cloud Infrastructure)は、エフェメラル予約済の2種類のパブリックIPを提供します。どちらも無料です。これは、他のクラウド・プロバイダーによりも大きな利点です。AWS、Azure、またはGCPを使用している場合は、パブリックIPの料金を支払う必要があります。

クラウド・プロバイダーOCIAWSAzureGCP
IPの名称Public IPElastic IPStatic IP, Dynamic IPExternal IP
料金無料有料有料有料

「パブリックIP」の呼び方は、クラウド・プロバイダーによって異なりますのでご注意ください。

パブリック・サブネットのインスタンスを起動すると、デフォルトではインスタンスはパブリックIPを取得します。特定のインスタンスに複数のセカンダリVNICを含めることができ、特定のVNICには複数のセカンダリ・プライベートIPを含めることができます。したがって、必要に応じて、1つ以上のVNICで特定のインスタンスに複数のパブリックIPを割り当てることができます

エフェメラル・パブリックIPの制限:
1. VNICごとに1つ
2. VMインスタンスごとに2つ、ベア・メタル・インスタンスごとに16

では、異なるVNICにまたがる2つのパブリックIPを使用してOCI VMにアクセスする方法を紹介したいと思います。

Access OCI Compute with multiple public IPs

検証環境:
インスタンス・タイプ: OCI VM
OS: Oracle Linux 7.9
パブリックIPのタイプ: エフェメラル
アタッチされたVNIC: 2つ

1. パブリックIP持ちのインスタンスを作成

パブリック・サブネットのインスタンスを作成する時、デフォルトでは「パブリックIPv4アドレスの割当て」がチェックされます。起動後、プライマリVNICにエフェメラル・パブリックIPが割り当てられ、インスタンスの存続期間中に存在します。AWS Elastic IPとは異なり、OCIエフェメラル・パブリックIPは、インスタンスのリブート後に変更されません
Assign a public IPv4 address

OCIコンソールからパブリックIPをコピーします。
Check public IP address on primary VNIC

それで、SSHを使用してインスタンスにアクセスできます。セキュリティ・リストとルート・テーブル(インターネットGWを含む)が正しく設定されているのを確保しておいてください。
SSH login to OCI Compute instance (with public IP on primary VNIC)

2. セカンダリVNICの追加

Compute Instances → Instance details → Attached VNICs → Create VNIC
Create Secondary VNIC

VNIC名(オプション)を入力し、VCNとサブネットを選択します。
VNIC information

デフォルトでは「パブリックIPv4アドレスの割り当て」がチェックされていません。それをチェックし、「変更の保存」ボタンをクリックします。
IP information

VNICがアタッチされたら、VNICの詳細画面からパブリックIPを確認できます。
Check public IP address

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でインスタンスにアクセスできます。
SSH login to OCI Compute instance (with public IP on secondary VNIC)

構成を維持するために、インスタンスを再起動するたびにスクリプト再実行してください。
以上

公式ドキュメント
仮想ネットワーク・インタフェース・カード(VNIC)
Release Announcement - Reserved Public IPs are now available on Oracle Cloud Infrastructure!

タイトルとURLをコピーしました