【OCI_17】ウィザードを利用せず個別にVCN、ゲートウェイなどコンポーネントを設定してみる
OCIを勉強し始めた時にOCIチュートリアルを参考にしてVCNやインスタンスを作成しました。その時は、VCNをウィザードで作成したので各種ゲートウェイやサブネット、ルート表など自動で作成されてルールなども必要なものが登録されました。
今回は、理解を深めるためにVCNやゲートウェイなどを個別に作成、設定していきたいと思います。さらに、新規ユーザー(developer)を作成し、そのユーザーでSSH接続したり、パブリック・サブネットのOracle Linuxサーバを踏み台にして、プライベート・サブネットのOracle LinuxサーバへSSH接続するまでを検証したいと思います。
※今回は完全に自身のメモ程度のものですので画像はほとんどなく、手順も省略している箇所がありますのでご了承ください。
目次
- 1 vcnを作成(20251028_vcn)
- 2 インターネット・ゲートウェイを作成(インターネット・ゲートウェイ-20251028_vcn)
- 3 パブリック・サブネットを作成(パブリック・サブネット-10_1_1_0)
- 4 コンピュート・インスタンスの作成(instance-10.1.1.100)
- 5 インターネット越しにSSH接続
- 6 新規ユーザー(developer)を作成し、sudoの権限を付与
- 7 インターネット越しにSSH接続できるように公開鍵を設定
- 8 インターネット越しにSSH接続
- 9 プライベート・サブネット用のルート表作成(プライベート・サブネット-20251028_vcn)
- 10 プライベート・サブネット用のセキュリティ・リスト作成(プライベート・サブネット-20251028_vcnのセキュリティ・リスト)
- 11 プライベート・サブネットを作成(プライベート・サブネット-10_1_2_0)
- 12 コンピュート・インスタンスの作成(instance-10_1_2_100)
- 13 パブリック・サブネットのLinuxサーバへ秘密鍵をアップロード(作成)
- 14 パブリック・サブネットのLinuxサーバからプライベート・サブネットのLinuxサーバへ接続
- 15 NATゲートウェイを作成(NATゲートウェイ-20251028_vcn)
- 16 プライベート・サブネット用ルート表へNATゲートウェイを追加
- 17 サービス・ゲートウェイを作成(サービス・ゲートウェイ-20251028_vcn)
- 18 プライベート・サブネット用ルート表へサービス・ゲートウェイを追加
- 19 まとめ
vcnを作成(20251028_vcn)
・ルート表(Default Route Table for 20251028_vcn)が自動で作成されるが、中身は空
・セキュリティ・リスト(Default Security List for 20251028_vcn)が自動で作成されて、以下のルールが設定されている
イングレス:SSH許可、ICMP一部許可をすべて許可に変更
エグレス:すべて許可
・IPv4 CIDRブロック:10.1.0.0/16
インターネット・ゲートウェイを作成(インターネット・ゲートウェイ-20251028_vcn)
・ルート表(Default Route Table for 20251028_vcn)へインターネット・ゲートウェイへのルートを追加
0.0.0.0/0
パブリック・サブネットを作成(パブリック・サブネット-10_1_1_0)
・サブネット・タイプ:リージョナル(推奨)
・IPv4 CIDRブロック:10.1.1.0/24
・ルート表:Default Route Table for 20251028_vcn(パブリック・サブネット用)
・サブネット・アクセス:パブリック・サブネット
・セキュリティ・リスト:Default Security List for 20251028_vcn
コンピュート・インスタンスの作成(instance-10.1.1.100)
・プライベートIPv4アドレスを固定:10.1.1.100
・パブリックIPv4アドレスは自動割当て
・キー・ペアを自動で生成
インターネット越しにSSH接続
・ユーザー:opc
・パスワード:ブランク
・ダウンロードした秘密鍵
新規ユーザー(developer)を作成し、sudoの権限を付与
・ユーザーを作成
sudo useradd -m developer
※-m:ホームディレクトリ(例:/home/developer)を自動作成
・パスワード設定
sudo passwd developer
・sudo権限を付与
※Oracle Linux(およびRHEL系)では、wheelグループ のメンバーにsudo権限が付与されている
sudo usermod -aG wheel developer
※-aG:既存グループに追加(上書きではない)
・wheelグループへ追加されたことを確認
groups developer
※developer : developer wheel のように表示されればOK
インターネット越しにSSH接続できるように公開鍵を設定
重要:authorized_keys に入れる公開鍵は、接続元クライアントで使う秘密鍵と対の公開鍵です。
今回は、opc 用の鍵と同じ公開鍵を利用します。
sudo mkdir -p /home/developer/.ssh
sudo cp -ip /home/opc/.ssh/authorized_keys /home/developer/.ssh/ # ← 公開鍵をコピー
sudo chown -R developer:developer /home/developer/.ssh
sudo chmod 700 /home/developer/.ssh
sudo chmod 600 /home/developer/.ssh/authorized_keys
・developer ユーザーに切り替えて確認(Teraterm上でユーザーを切り替え)
su – developer
sudo ls /root
※初回は、developerのパスワードが求められます
■参考:OCI の Oracle Linux イメージでは、セキュリティ強化のためにデフォルトで鍵認証のみ有効、パスワード認証は無効になっている
鍵認証のみを有効にしている直接のスイッチは、/etc/ssh/sshd_config.d/50-cloud-init.conf の「PasswordAuthentication no」
これにより「パスワード認証は禁止」になり、/etc/ssh/sshd_config の「AuthorizedKeysFile .ssh/authorized_keys」(=公開鍵を使うファイルの場所)と OpenSSH の既定値 PubkeyAuthentication yes が効いて、公開鍵(=秘密鍵の対)だけでログインできる構成になっています。
■参考:sudo時にパスワード入力を省略したい場合
opcユーザーは、デフォルトで/etc/sudoers.d/90-cloud-init-users に設定があります
visudo コマンドで設定を編集
sudo visudo
developer ALL=(ALL) NOPASSWD:ALL
■参考:SSHログインも許可する場合
デフォルトで /etc/ssh/sshd_config では特定ユーザーしか許可されていないことがある
⇒OracleLinuxでは、設定されてなさそう(そもそもAllowUsersの行が存在しない)
インターネット越しにSSH接続
Teratermで接続できることを確認します。
プライベート・サブネット用のルート表作成(プライベート・サブネット-20251028_vcn)
プライベート・サブネットを作成する際、強制的に選択する必要があるので事前に作成します。ただし、設定前、設定後、の動作を確認したいのでこの時点では中身のルールは空のままにしています。
プライベート・サブネット用のセキュリティ・リスト作成(プライベート・サブネット-20251028_vcnのセキュリティ・リスト)
・イングレス:
パブリック・サブネットからのSSH接続とすべての接続元からのICMPを受け入れるリストを作成
・エグレス
すべてのプロトコルを許可
プライベート・サブネットを作成(プライベート・サブネット-10_1_2_0)
・サブネット・タイプ:リージョナル(推奨)
・IPv4 CIDRブロック:10.1.2.0/24
・ルート表:プライベート・サブネット-20251028_vcn(プライベート・サブネット用)
・サブネット・アクセス:プライベート・サブネット
・セキュリティ・リスト:プライベート・サブネット-20251028_vcnのセキュリティ・リスト
コンピュート・インスタンスの作成(instance-10_1_2_100)
・プライベートIPv4アドレスを固定:10.1.2.100
・公開キー・ファイル(.pub)のアップロード(パブリック・サブネットのLinuxサーバと同じキーを利用)
パブリック・サブネットのLinuxサーバへ秘密鍵をアップロード(作成)
個人パソコンにある秘密鍵の中身をコピーする。SCPなどでファイル自体をコピーしてもいいです。
sudo touch /home/opc/.ssh/ssh-key-2025-10-28.key
sudo vi /home/opc/.ssh/ssh-key-2025-10-28.key
sudo chmod 600 /home/opc/.ssh/ssh-key-2025-10-28.key
パブリック・サブネットのLinuxサーバからプライベート・サブネットのLinuxサーバへ接続
コマンド例:sudo ssh 秘密鍵ファイル ユーザー名@プライベート・サブネットのLinuxサーバIPアドレス
[opc@instance-10-1-1-100 ~]$ sudo ssh -i /home/opc/.ssh/ssh-key-2025-10-28.key opc@10.1.2.100The authenticity of host ‘10.1.2.100 (10.1.2.100)’ can’t be established.
ED25519 key fingerprint is SHA256:zFSWr7o5lici00z4lGPu5EsBnSSkOFdNP3mR9LBizTI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘10.1.2.100’ (ED25519) to the list of known hosts.
[opc@instance-10-1-2-100 ~]$
NATゲートウェイを作成(NATゲートウェイ-20251028_vcn)
プライベート・サブネットのLinuxサーバへSSH接続できましたが、プライベート・サブネットのLinuxサーバは、インターネットへ接続できないのでアップデートができません。ですが、NATゲートウェイを作成することでプライベート・サブネットのLinuxサーバは、インターネットへ接続することができます。
以下は、NATゲートウェイ、ルート表を作成してない時点の実行例です。
実行例:
[opc@instance-10-1-2-100 ~]$ sudo yum check-update
CKsplice for Oracle Linux 9 (x86_64) [ === ] — B/s | 0 B –:– ETKsplice for Oracle Linux 9 (x86_64) 0.0 B/s | 0 B 03:46
Errors during downloading metadata for repository ‘ol9_ksplice’:
– Curl error (28): Timeout was reached for https://yum.ap-osaka-1.oci.oraclecloud.com/repo/OracleLinux/OL9/ksplice/x86_64/repodata/repomd.xml [Failed to connect to yum.ap-osaka-1.oci.oraclecloud.com port 443: Connection timed out]
Error: Failed to download metadata for repo ‘ol9_ksplice’: Librepo was interrupted by a signal
プライベート・サブネット用ルート表へNATゲートウェイを追加
宛先:0.0.0.0/0
ターゲット・タイプ:NATゲートウェイ
ターゲット:作成したNATゲートウェイ
以下は、NATゲートウェイ、ルート表を作成した後の「yum check-update」の実行例です。
実行例:
[opc@instance-10-1-2-100 ~]$ sudo yum check-update
Ksplice for Oracle Linux 9 (x86_64) 75 MB/s | 13 MB 00:00
Oracle Linux 9 OCI Included Packages (x86_64) 54 MB/s | 191 MB 00:03
Oracle Linux 9 BaseOS Latest (x86_64) 95 MB/s | 90 MB 00:00
Oracle Linux 9 Application Stream Packages (x86_64) 99 MB/s | 71 MB 00:00
Oracle Linux 9 Addons (x86_64) 13 MB/s | 735 kB 00:00
Oracle Linux 9 UEK Release 8 (x86_64) 94 MB/s | 19 MB 00:00
NetworkManager.x86_64 1:1.52.0-7.0.1.el9_6 ol9_baseos_latest
NetworkManager-config-server.noarch 1:1.52.0-7.0.1.el9_6 ol9_baseos_latest
~ 以下省略 ~
サービス・ゲートウェイを作成(サービス・ゲートウェイ-20251028_vcn)
ウィザードでは、サービス・ゲートウェイも作成されていました。
OCIバケットを作成しているのでプライベート・サブネットからサービス・ゲートウェイを経由して、OCIバケットへ通信できるかを確認するため、サービス・ゲートウェイを作成します。
以下は、サービス・ゲートウェイ、ルート表を作成してない時点の実行例です。curl でオブジェクトストレージのエンドポイントにアクセスしてみますが応答が返りません。
実行例:
リージョンが Japan Central (Osaka) の場合:
curl -v https://objectstorage.ap-osaka-1.oraclecloud.com
■サービス・ゲートウェイを作成
名前:サービス・ゲートウェイ-20251028_vcn
サービス:OCI KIX Object Storage
プライベート・サブネット用ルート表へサービス・ゲートウェイを追加
ターゲット・タイプ:サービス・ゲートウェイ
宛先サービス:OCI KIX Object Storage
ターゲット・サービス・ゲートウェイ:作成したサービス・ゲートウェイ
以下は、サービス・ゲートウェイ、ルート表を作成した後の実行例です。curl でオブジェクトストレージのエンドポイントにアクセスして、応答が返されました。
実行例:
[opc@instance-10-1-2-100 ~]$ sudo curl -v https://objectstorage.ap-osaka-1.oraclecloud.com
* Trying 134.70.112.3:443…
* Connected to objectstorage.ap-osaka-1.oraclecloud.com (134.70.112.3) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
~ 以下省略 ~
まとめ
VCNやゲートウェイなどを個別に作成、設定し、さらに、新規ユーザー(developer)を作成、そのユーザーでSSH接続したり、パブリック・サブネットのOracle Linuxサーバを踏み台にして、プライベート・サブネットのOracle LinuxサーバへSSH接続するまでを検証しました。検証することでウィザードだけでは知ることができなかった設定方法なども確認できました。
以下、他の記事をまとめた一覧です。OCI以外にAWSもまとめています。