本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
OCI(Oracle Cloud Infrastructure)は、エフェメラルと予約済の2種類のパブリックIPを提供します。どちらも無料です。これは、他のクラウド・プロバイダーによりも大きな利点です。AWS、Azure、またはGCPを使用している場合は、パブリックIPの料金を支払う必要があります。
クラウド・プロバイダー | OCI | AWS | Azure | GCP |
---|---|---|---|---|
IPの名称 | Public IP | Elastic IP | Static IP, Dynamic IP | External IP |
料金 | 無料 | 有料 | 有料 | 有料 |
「パブリックIP」の呼び方は、クラウド・プロバイダーによって異なりますのでご注意ください。
パブリック・サブネットのインスタンスを起動すると、デフォルトではインスタンスはパブリックIPを取得します。特定のインスタンスに複数のセカンダリVNICを含めることができ、特定のVNICには複数のセカンダリ・プライベートIPを含めることができます。したがって、必要に応じて、1つ以上のVNICで特定のインスタンスに複数のパブリックIPを割り当てることができます。
エフェメラル・パブリックIPの制限:
- VNICごとに1つ
- VMインスタンスごとに2つ、ベア・メタル・インスタンスごとに16
では、異なるVNICにまたがる2つのパブリックIPを使用してOCI VMにアクセスする方法を簡単に紹介したいと思います。
検証環境:
インスタンス・タイプ: OCI VM
OS: Oracle Linux 7.9
パブリックIPのタイプ: エフェメラル
アタッチされたVNIC: 2つ
ステップ
1. パブリックIP持ちのインスタンスを作成する
2. セカンダリVNICを追加する
3. 構成スクリプトを実行する
1. パブリックIP持ちのインスタンスを作成する
パブリック・サブネットのインスタンスを作成する時、デフォルトでは「パブリックIPv4アドレスの割当て」がチェックされます。起動後、プライマリVNICにエフェメラル・パブリックIPが割り当てられ、インスタンスの存続期間中に存在します。AWS Elastic 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でインスタンスにアクセスできます。
以上
関連記事
オラクル・クラウドの個人ブログ一覧
OCI「エフェメラル・パブリックIP」を「予約済パブリックIP」に変更する方法
公式ドキュメント
仮想ネットワーク・インタフェース・カード(VNIC)
Release Announcement - Reserved Public IPs are now available on Oracle Cloud Infrastructure!