内部ネットワークの共有パターン#
本構成はFJcloud-O 東日本/西日本リージョン3向けです。
要求事項#
- 利用者側の各部門が、仮想リソースやグループ・ユーザーをプロジェクトという単位で管理したい
- 部門間で共通利用する踏み台サーバーや共有サーバーなどは、1つのプロジェクトにまとめたい
対応するデザインパターン概要#
-
複数のプロジェクトをネットワークRBAC(プロジェクト間でネットワークリソースを共有する機能)で接続し、1つのプロジェクトに配備された踏み台サーバーや共有サーバーなどの共通サービスを、複数のプロジェクトで利用する例を記載します。
-
これによるメリットは以下のとおりです。
- 共通のサービスを1つのプロジェクトに集約することで、構築/運用コストやミドルウェアなどのライセンス費用を削減
構造(イメージ図)#
- 本構成ではプロジェクトAの内部ネットワークA1を、プロジェクトB・Cと共有します。
- 「ssh」や「rdp」など業務サーバーB・Cメンテナンス用ポートへのアクセスは、プロジェクトAの踏み台サーバーを経由します。
- 内部ネットワークA0・A1・B・CのIPアドレスは、重複しないよう設計してください。
- 本構成では、仮想サーバーを、時間課金のRed Hat Enterprise Linuxで作成しています。
実装サンプル#
1. 内部ネットワークを作成#
仮想ネットワーク・仮想ルーターを作成します。
- 各作業プロジェクトで「内部ネットワークA0」・「内部ネットワークA1」・「内部ネットワークB」・「内部ネットワークC」を作成
- DHCPは「有効」、DNSサーバーは「8.8.8.8」を設定
- 作成手順は、初期構築ガイド 仮想ネットワークを作成 を参照
- 以下の設定値例を参照
作業プロジェクト | ネットワーク | 仮想ネットワーク名 | サブネット名 | サブネット | ゲートウェイIP | 用途 |
---|---|---|---|---|---|---|
プロジェクトA | 内部ネットワークA0 | nwA0 | subnetA0 | 192.168.1.0/24 | 192.168.1.1 | SSL-VPN接続用 |
プロジェクトA | 内部ネットワークA1 | nwA1 | subnetA1 | 192.168.10.0/24 | 192.168.10.1 | 共有ネットワーク用 |
プロジェクトB | 内部ネットワークB | nwB | subnetB | 192.168.20.0/24 | 192.168.20.1 | 業務用 |
プロジェクトC | 内部ネットワークC | nwC | subnetC | 192.168.30.0/24 | 192.168.30.1 | 業務用 |
- 各作業プロジェクトで「ルーターA0」・「ルーターA1」・「ルーターB」・「ルーターC」を作成します。作成した仮想ルーターに内部ネットワークのサブネットを接続します。
- 仮想ルーターの作成手順は、初期構築ガイド 仮想ルーターを作成 を参照
- 仮想ルーターと内部ネットワークのサブネットを接続する手順は、初期構築ガイド 仮想ルーターとサブネットの接続 を参照
- 以下の設定値例を参照
作業プロジェクト | ルーター | 仮想ルーター名 | 外部ネットワーク | サブネット接続 | IPアドレス | 用途 |
---|---|---|---|---|---|---|
プロジェクトA | ルーターA0 | routerA0 | 接続(fip-net) | subnetA0 | 192.168.1.1 | SSL-VPN接続用 |
プロジェクトA | ルーターA1 | routerA1 | - | subnetA1 | 192.168.10.1 | 共有ネットワーク用 |
プロジェクトB | ルーターB | routerB | 接続(fip-net) | subnetB | 192.168.20.1 | 業務用 |
プロジェクトC | ルーターC | routerC | 接続(fip-net) | subnetC | 192.168.30.1 | 業務用 |
2. セキュリティグループを作成#
(1) 内部ネットワークA0(SSL-VPN接続)用#
プロジェクトA内に以下を作成します。
- セキュリティグループ
- セキュリティグループ名:SG-A0
- 説明:SSL-VPN接続用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」をすべて許可
- 受信:「SSL-VPNクライアントプール」からの、「SSH (22/tcp)」「RDP (3389/tcp)」を許可
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
4 | カスタムTCPルール | 受信 | ポート番号 | 22 | CIDR | 192.168.246.0/24 |
5 | カスタムTCPルール | 受信 | ポート番号 | 3389 | CIDR | 192.168.246.0/24 |
(2) 内部ネットワークA1(共有ネットワーク)用#
(A) プロジェクトAでの設定#
プロジェクトA内に以下を作成します。
- セキュリティグループ
- セキュリティグループ名:SG-A1-at-pjA
- 説明:共有ネットワーク用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」をすべて許可
- 受信:「内部ネットワークA1」からの、「SSH (22/tcp)」「RDP (3389/tcp)」「ICMP」を許可
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート番号 | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
4 | ALL ICMP | 受信 | - | - | CIDR | 192.168.10.0/24 |
5 | カスタムTCPルール | 受信 | ポート番号 | 22 | CIDR | 192.168.10.0/24 |
6 | カスタムTCPルール | 受信 | ポート番号 | 3389 | CIDR | 192.168.10.0/24 |
(B) プロジェクトBでの設定#
セキュリティグループはプロジェクト間で共有されません。そのため、プロジェクトB内にSG-A1-at-pjAと同一のセキュリティグループを作成します。
- セキュリティグループ
- セキュリティグループ名:SG-A1-at-pjB
- 説明:共有ネットワーク用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」すべて許可
- 受信:「内部ネットワークA1」からの、「SSH (22/tcp)」「RDP (3389/tcp)」「ICMP」を許可
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート番号 | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
4 | ALL ICMP | 受信 | - | - | CIDR | 192.168.10.0/24 |
5 | カスタムTCPルール | 受信 | ポート番号 | 22 | CIDR | 192.168.10.0/24 |
6 | カスタムTCPルール | 受信 | ポート番号 | 3389 | CIDR | 192.168.10.0/24 |
(C) プロジェクトCでの設定#
同様に、プロジェクトC内に、SG-A1-at-pjAと同一のセキュリティグループを作成します。
- セキュリティグループ
- セキュリティグループ名:SG-A1-at-pjC
- 説明:共有ネットワーク用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」をすべて許可
- 受信:「内部ネットワークA1」からの、「SSH (22/tcp)」「RDP (3389/tcp)」「ICMP」を許可
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート番号 | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
4 | ALL ICMP | 受信 | - | - | CIDR | 192.168.10.0/24 |
5 | カスタムTCPルール | 受信 | ポート番号 | 22 | CIDR | 192.168.10.0/24 |
6 | カスタムTCPルール | 受信 | ポート番号 | 3389 | CIDR | 192.168.10.0/24 |
(3) 内部ネットワークB(業務)用#
プロジェクトB内に以下を作成します。
- セキュリティグループ
- セキュリティグループ名:SG-B
- 説明:業務用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」をすべて許可
- 受信:すべて拒否
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
(4) 内部ネットワークC(業務)用#
プロジェクトC内に以下を作成します。
- セキュリティグループ
- セキュリティグループ名:SG-C
- 説明:業務用
- 作成手順は初期構築ガイド セキュリティグループを作成 を参照
- セキュリティグループルール
- 送信:「TCP」「UDP」「ICMP」をすべて許可
- 受信:すべて拒否
- 設定手順は初期構築ガイド セキュリティグループルールを作成 を参照
- 以下の設定値例を参照
No. | ルール | 方向 | オープンポート | ポート | 接続先 | CIDR |
---|---|---|---|---|---|---|
1 | ALL TCP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
2 | ALL UDP(1-65535) | 送信 | - | - | CIDR | 0.0.0.0/0 |
3 | ALL ICMP | 送信 | - | - | CIDR | 0.0.0.0/0 |
3. SSL-VPNを作成#
仮想サーバーへのセキュアーな接続を実現するため、プロジェクトA内にSSL-VPNを作成します。
(1) VPNサービスを作成#
- ルーターA0にVPNサービスを設定
- 作成手順は初期構築ガイド VPNサービスを作成 を参照
- 以下の設定値例を参照
項目 | 設定値例 |
---|---|
仮想ルーター名 | routerA0 |
サブネット名 | subnetA0 |
VPNサービス名 | ssl-vpn-service |
説明 | (空欄) |
管理状態 | TRUE |
Note
「指定した仮想ルーターにファイアウォールが設定されていません。VPNサービス作成後に設定してください。」というポップアップが現れますが、ここではOKをクリックします。
(2) SSL-VPNコネクションを作成#
- 以下のSSL-VPNコネクションを作成
- 作成手順は初期構築ガイド SSL-VPNコネクションを作成 を参照
- 以下の設定値例を参照
項目 | 設定値例 |
---|---|
SSL-VPN接続名 | ssl-vpn-conn |
管理状態 | TRUE |
証明書 | FJcloud証明書(デフォルト) |
グローバルIP | 自動割当 |
クライアントIPプール | 192.168.246.0/24 |
4. ネットワークRBACを作成#
プロジェクトAで、APIを使用してネットワークRBACを作成します。
- 設定項目(REST API)
リクエストパラメーター名 | 変数例 | 設定値例 | 内容 |
---|---|---|---|
"action" | $RBAC_ACTION | "access_as_shared" | RBACポリシーのアクションを指定 |
"object_id" | $OBJ_ID | (仮想ネットワークID) | 共有する内部ネットワークのリソースIDを指定 ここでは内部ネットワークA1のIDを指定 |
"object_type" | $OBJ_TYPE | "network" | RBACポリシーを適用するオブジェクトのタイプを指定 |
"target_tenant" | $TAR_TENANT1 | (プロジェクトID) | RBACポリシーを適用するプロジェクトのIDを指定 ここではプロジェクトBのIDを指定 |
"target_tenant" | $TAR_TENANT2 | (プロジェクトID) | RBACポリシーを適用するプロジェクトのIDを指定 ここではプロジェクトCのIDを指定 |
-
実行API
以下のcurlコマンドを実行し、内部ネットワークA1をプロジェクトBに共有するためのRBACポリシーを作成curl -Ss $NETWORK/v2.0/rbac-policies -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{ "rbac_policy":{ "action":"'$RBAC_ACTION'", "object_id":"'$OBJ_ID'", "object_type":"'$OBJ_TYPE'", "target_tenant":"'$TAR_TENANT1'" } }' | jq .
-
実行API
以下のcurlコマンドを実行し、内部ネットワークA1をプロジェクトCに共有するためのRBACポリシーを作成curl -Ss $NETWORK/v2.0/rbac-policies -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{ "rbac_policy":{ "action":"'$RBAC_ACTION'", "object_id":"'$OBJ_ID'", "object_type":"'$OBJ_TYPE'", "target_tenant":"'$TAR_TENANT2'" } }' | jq .
Note
RHELの仮想環境でAPIを実行するための手順は、初期構築ガイドの API実行-コマンドライン編 を参照してください。
Note
target_tenantにワイルドカードを使用することで、複数の内部ネットワークを指定することはできません。
プロジェクトの数だけアクセスポリシーを作成してください。
5. 仮想サーバーを作成#
-
以下の設定値例に従い、各作業プロジェクトで「踏み台サーバー」・「共有サーバー」・「業務サーバーB」・「業務サーバーC」を作成
- サーバーグループは「設定なし」、デバイスサイズは最小ディスク容量を設定
- キーペアは任意のキーペアを選択
-
「踏み台サーバー」・「業務サーバーB」・「業務サーバーC」ではプロビジョニングスクリプトを設定
- インターネット接続のため、一時的なデフォルトゲートウェイを設定
#!/bin/bash /sbin/ip r d default via 192.168.10.1
- インターネット接続のため、一時的なデフォルトゲートウェイを設定
-
作成手順は初期構築ガイド 仮想サーバー構築 を参照
作業プロジェクト | 仮想サーバー | 仮想サーバー名 | 仮想サーバータイプ | OSイメージ | 選択済み仮想ネットワーク | セキュリティグループ | デフォルトゲートウェイとして設定される値 |
---|---|---|---|---|---|---|---|
プロジェクトA | 踏み台サーバー | BastionVM | C3-2 | [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) | nwA0・nwA1 | (ここでは選択不要) | 192.168.1.1 |
プロジェクトA | 共有サーバー | SharedVM | C3-2 | [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) | nwA1 | SG-A1-at-pjA | (設定不要) |
プロジェクトB | 業務サーバーB | BizVM-B | C3-2 | [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) | nwB・nwA1 | (ここでは選択不要) | 192.168.20.1 |
プロジェクトC | 業務サーバーC | BizVM-C | C3-2 | [Hourly] Red Hat Enterprise Linux 8.x 64bit (English) | nwC・nwA1 | (ここでは選択不要) | 192.168.30.1 |
- ポートのセキュリティグループを設定
- IaaSポータル画面の場合:上記の各プロジェクト内で、ポートの「アクション」 → 「セキュリティグループ設定」をクリック
- 初期設定値「default」を解除し、以下の表に従い必要なセキュリティグループを選択
- 「仮想詳細画面」をリロードして、設定内容が反映されていることを確認
作業プロジェクト | 仮想サーバー | 仮想サーバー名 | 仮想ネットワーク | セキュリティグループ | 用途 |
---|---|---|---|---|---|
プロジェクトA | 踏み台サーバー | BastionVM | nwA0 | SG-A0 | 内部ネットワークA0用 |
プロジェクトA | 踏み台サーバー | BastionVM | nwA1 | SG-A1-at-pjA | 内部ネットワークA1用 |
プロジェクトB | 業務サーバーB | BizVM-B | nwA1 | SG-A1-at-pjB | 内部ネットワークA1用 |
プロジェクトB | 業務サーバーB | BizVM-B | nwB | SG-B | 内部ネットワークB用 |
プロジェクトC | 業務サーバーC | BizVM-C | nwA1 | SG-A1-at-pjC | 内部ネットワークA1用 |
プロジェクトC | 業務サーバーC | BizVM-C | nwC | SG-C | 内部ネットワークC用 |
-
すべてのサーバーが、「内部ネットワークA1」に接続されていることを確認
- IaaSポータル画面の場合:各プロジェクトにログインし、仮想ネットワーク一覧 → 「nwA1」のリンク → 「ポート」を確認
- 作成したポートがすべて存在し、状態が「ACTIVE」かつ管理状態が「Up」であることを確認する
-
設定変更を反映させるため、すべての仮想サーバーを再起動
- IaaSポータル画面の場合:各プロジェクトにログインし、仮想サーバ一覧 → 仮想サーバーの「アクション」 → 既存のポートの「アクション」 → 「再起動(ハード)」を選択
6. 踏み台サーバーの設定変更#
踏み台サーバーのルーティング設定を変更します。
(1)「踏み台サーバー」にログイン#
-
作業用PCからSSL-VPN接続
-
TeraTermを使用して、踏み台サーバーにログイン
$ ssh -i ./test-keypair.pem k5user@192.168.1.11 $ sudo su -
(2)踏み台サーバーから、他のサーバーへSSHするための準備#
- キーペアファイルを、自PCから踏み台サーバーへ転送
- TeraTermの[ファイル]→[ssh scp...]を選択
- from:「送信するキーペアファイル」を選択、to:踏み台サーバーの任意フォルダー(例:/home/k5user)を指定
- キーペアファイルのアクセス権限を「600」に指定
$ chmod 600 ./test-keypair.pem $ ls -l total 4 -rw-------. 1 k5user k5user 1679 Sep 13 2018 test-keypair.pem
(3)ルーティング設定を変更#
(A)デバイスeth1をデフォルトルートから削除#
ルーティング情報を確認の上、デバイスeth1でデフォルトルートを使用しないように設定します。
- rootユーザーに変更し、内部ネットワークA1へのポート追加後のルーティング情報を確認
- IPアドレス192.168.1.11および192.168.10.11はデバイスeth0、eth1それぞれに割り当てられたIPアドレス
- 以下の作業で
default via 192.168.10.1 dev eth1 proto dhcp metric 101
の行が削除されるように、デバイスeth1をデフォルトルートから削除
$ sudo su - # ip route show default via 192.168.1.1 dev eth0 proto static metric 100 default via 192.168.10.1 dev eth1 proto dhcp metric 101 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.11 metric 101
-
デバイスeth1のconnectionに対するUUIDを確認
# nmcli connection show NAME UUID TYPE DEVICE System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 Wired connection 1 a5f11d64-7961-3790-9bf4-8525e5e0e691 ethernet eth1 ens3 421b5593-cd40-421f-8cfd-3b23942345f6 ethernet --
-
デバイスeth1のconnectionに対するUUIDを指定し、デバイスをデフォルトゲートウェイとして使用しないようする設定(
ipv4.never-default
)が無効になっていることを確認# nmcli connection show a5f11d64-7961-3790-9bf4-8525e5e0e691 | grep "ipv4.never-default" ipv4.never-default: no
-
デバイスeth1をデフォルトゲートウェイとして使用しないように設定
ipv4.never-default
の設定パラメーターをyes
に修正nmcli connection modify a5f11d64-7961-3790-9bf4-8525e5e0e691 ipv4.never-default yes
-
設定の変更内容を確認
# nmcli connection show a5f11d64-7961-3790-9bf4-8525e5e0e691 | grep "ipv4.never-default" ipv4.never-default: yes
-
設定変更を反映
# nmcli connection up a5f11d64-7961-3790-9bf4-8525e5e0e691 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
-
ルーティングを再度確認し、デバイスeth1がデフォルトルートとして使用されていないことを確認
# ip route show default via 192.168.1.1 dev eth0 proto static metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.11 metric 101
(B) デバイスeth0にスタティックルーティングを設定#
将来のルーティング変更(例:デフォルトルートをバックLAN側に切替)でSSL-VPN接続できなくなるリスクを回避するため、デバイスeth0にスタティックルーティングを設定します。
-
デバイスeth0のconnectionに対するUUIDを確認
# nmcli connection show NAME UUID TYPE DEVICE System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 Wired connection 1 a5f11d64-7961-3790-9bf4-8525e5e0e691 ethernet eth1 ens3 421b5593-cd40-421f-8cfd-3b23942345f6 ethernet --
-
デバイスeth0のconnectionに対するUUIDを指定し、デバイスeth0に対しスタティックルーティングを設定する
nmcli connection modify 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 +ipv4.routes "192.168.246.0/24 192.168.1.1"
-
設定の変更内容を確認
# nmcli connection show 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 | grep "ipv4.routes" ipv4.routes: { ip = 192.168.246.0/24, nh = 192.168.1.1 }
-
設定変更を反映
# nmcli connection up 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
-
再度ルーティングを確認
# ip route show default via 192.168.1.1 dev eth0 proto static metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.11 metric 101 192.168.246.0/24 via 192.168.1.1 dev eth0 proto static metric 100
7.業務サーバーBの設定変更#
業務サーバーBのルーティング設定を変更します。
手順は 6. 踏み台サーバーの設定変更 と同じです。
(1)「踏み台サーバー」から「業務サーバーB」にログイン、rootユーザへ変更#
$ ssh -i ./test-keypair.pem k5user@192.168.10.21 $ sudo su -
(2)ルーティング設定を変更#
「SSL-VPNクライアントIPプール」のスタティックルーティング追加は不要です。
- 修正後のルーティング情報
- IPアドレス192.168.1.21および192.168.10.60はデバイスeth1、eth0それぞれに割り当てられたIPアドレス
# ip route show default via 192.168.20.1 dev eth0 proto static metric 100 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.21 metric 101 192.168.20.0/24 dev eth0 proto kernel scope link src 192.168.20.60 metric 100
- IPアドレス192.168.1.21および192.168.10.60はデバイスeth1、eth0それぞれに割り当てられたIPアドレス
(3)サーバーを再起動し、疎通確認#
サーバーを再起動し、再度踏み台サーバー経由でsshログインできることを確認します。
上記(2)で設定したルーティング情報が反映されていることを確認します。
8.業務サーバーCの設定変更#
業務サーバーCのルーティング設定を変更します。
手順は 6. 踏み台サーバーの設定変更 と同じです。
(1)「踏み台サーバー」から「業務サーバーC」にログイン、rootユーザへ変更#
$ ssh -i ./test-keypair.pem k5user@192.168.10.31 $ sudo su -
(2)ルーティング設定を変更#
「SSL-VPNクライアントIPプール」のスタティックルーティング追加は不要です。
- 修正後のルーティング情報
- IPアドレス192.168.10.31および192.168.30.91はデバイスeth1、eth0それぞれに割り当てられたIPアドレス
# ip route show default via 192.168.30.1 dev eth0 proto static metric 100 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.31 metric 101 192.168.30.0/24 dev eth0 proto kernel scope link src 192.168.30.91 metric 100
- IPアドレス192.168.10.31および192.168.30.91はデバイスeth1、eth0それぞれに割り当てられたIPアドレス
(3)サーバーを再起動し、疎通確認#
サーバーを再起動し、再度踏み台サーバー経由でsshログインできることを確認します。
上記(2)で設定したルーティング情報が反映されていることを確認します。
9. 付録:テンプレートでの自動構築#
IaaSポータルでの手動構築で、特に煩雑となる以下の章に対応するテンプレートファイルを公開します。
APIでテンプレートファイルを実行することで、自動構築ができます。
- 1 . 内部ネットワークを作成
- 2 . セキュリティグループを作成
- 4 . ネットワークRBACを作成
※SSL-VPNの構築はテンプレートに非対応のため、IaaSポータルでの手動構築が必要です。
テンプレートによる構築手順を以下で説明します。
なお、APIでのテンプレート実行方法は必要に応じて、「テンプレートを使用したサンプルシステムの構築」の 4. APIでのスタック作成 を参照してください。
(1) 事前準備#
以下よりテンプレートをダウンロードし、解凍してください。
フォルダー・ファイル構成:
- SAMPLE_TEMPLATE_prjA:プロジェクトAで実行するテンプレート用フォルダ
├ TEMPLATE_NETWORK_prjA.yaml
├ PARAMETER_NETWORK_prjA.json
├ TEMPLATE_SG_prjA.yaml
└ PARAMETER_SG_prjA.json - SAMPLE_TEMPLATE:プロジェクトB・Cで実行するテンプレート用フォルダ
├ TEMPLATE_NETWORK.yaml
├ PARAMETER_NETWORK_prjB.json
├ PARAMETER_NETWORK_prjC.json
├ TEMPLATE_SG.yaml
├ PARAMETER_SG_prjB.json
└ PARAMETER_SG_prjC.json
続いて、IaaSポータルより、各プロジェクトで以下の値を任意の場所に控えてください。
- プロジェクトA
- 外部ネットワーク(fip-net)の仮想ネットワークID
- プロジェクトB
- 外部ネットワーク(fip-net)の仮想ネットワークID
- プロジェクトID
- プロジェクトC
- 外部ネットワーク(fip-net)の仮想ネットワークID
- プロジェクトID
さらに、以下ファイルに、上記で控えた値を記入します
- PARAMETER_NETWORK_prjA.json
- 2行目(fip_net)の
<仮想ネットワークID>
を、プロジェクトAの外部ネットワーク(fip-net)の仮想ネットワークIDに置換 - 10行目(project_id2)の
<プロジェクトID>
を、プロジェクトBのプロジェクトIDに置換 - 11行目(project_id3)の
<プロジェクトID>
を、プロジェクトCのプロジェクトIDに置換
- 2行目(fip_net)の
- PARAMETER_NETWORK_prjB.json
- 2行目(fip_net)の
<仮想ネットワークID>
を、プロジェクトBの外部ネットワーク(fip-net)の仮想ネットワークIDに置換
- 2行目(fip_net)の
- PARAMETER_NETWORK_prjC.json
- 2行目(fip_net)の
<仮想ネットワークID>
を、プロジェクトCの外部ネットワーク(fip-net)の仮想ネットワークIDに置換
- 2行目(fip_net)の
Note
外部ネットワーク(fip-net)の仮想ネットワークID確認方法は、「テンプレートを使用したサンプルシステムの構築」パターンの 事前準備 を参照してください。
また、プロジェクトIDの確認方法は、「テンプレートを使用したサンプルシステムの構築」パターンの (2) スタック作成スクリプトの準備 を参照してください。
(2) プロジェクトAでの作業#
以下の作業を、プロジェクトAのAPIトークンを取得し、順に実行します。
(A) セキュリティグループを作成#
- API実行フォルダに、
PARAMETER_SG_prjA.json
およびTEMPLATE_SG_prjA.yaml
を展開します。 - スタック名を
SG-prjA
として、curlコマンドでスタックを作成します。
(B) ネットワーク関連リソースを作成#
- API実行フォルダに、
PARAMETER_NETWORK_prjA.json
およびTEMPLATE_NETWORK_prjA.yaml
を展開します。 - スタック名を
NW-prjA
として、curlコマンドでスタックを作成します。
(3) プロジェクトBでの作業#
以下の作業を、プロジェクトBのAPIトークンを取得し、順に実行します。
(A) セキュリティグループを作成#
- API実行フォルダに、
PARAMETER_SG_prjB.json
およびTEMPLATE_SG.yaml
を展開します。 - スタック名を
SG-prjB
として、curlコマンドでスタックを作成します。
(B) ネットワーク関連リソースを作成#
- API実行フォルダに、
PARAMETER_NETWORK_prjB.json
およびTEMPLATE_NETWORK.yaml
を展開します。 - スタック名を
NW-prjB
として、curlコマンドでスタックを作成します。
(4) プロジェクトCでの作業#
以下の作業を、プロジェクトCのAPIトークンを取得し、順に実行します。
(A) セキュリティグループを作成#
- API実行フォルダに、
PARAMETER_SG_prjC.json
およびTEMPLATE_SG.yaml
を展開します。 - スタック名を
SG-prjC
として、curlコマンドでスタックを作成します。
(B) ネットワーク関連リソースを作成#
- API実行フォルダに、
PARAMETER_NETWORK_prjC.json
およびTEMPLATE_NETWORK.yaml
を展開します。 - スタック名を
NW-prjC
として、curlコマンドでスタックを作成します。
(5) SSL-VPNを構築#
必要に応じて、IaaSポータルからSSL-VPNを作成します。 手順は 3. SSL-VPNを作成 を参照してください。
以上で、テンプレートによる構築は終了です。
この後の手順は、5. 仮想サーバーを作成 以降を参照し、進めてください。
Note
スタック削除をする際は、失敗を避けるため、以下をご確認ください。
(SSL-VPNなど、あとから追加構築したリソースとの依存関係がないことを確認してください)
注意事項#
- 本パターンは2024年5月時点のFJcloud-O 東日本/西日本リージョン3で動作検証しています。
- 実際の運用では、 セキュリティグループ活用 を参考に、適切なセキュリティグループを設定してください。