Webサーバ等の業務用のサーバにログインする際に、インターネット等外部に公開するインターフェイスとログイン用のインターフェースを分けて、
より安全にシステムにログインできるようにしたいといった要求事項に対応します。
Webサーバ等のサーバに安全にログインするための方式としては、踏み台サーバを利用したパターン に加えて、ログイン対象のサーバに
複数のインターフェースを設けておき、メンテナンス時に外部に公開するサービス用のインターフェースとは別のインターフェースからログインして
メンテナンスする方式があります。
本パターンでは "バックLAN" を用いた方式について記載します。
本パターンでは、踏み台サーバのプロジェクト間接続方式の構成例 をもとに、
管理用のネットワークの "バックLAN" を作成して、
プロジェクト間接続を行う例を記載します。
以下では、踏み台サーバを配備した既存のプロジェクトを 『共通プロジェクト』、実業務を行うプロジェクトを『業務プロジェクト』として、
業務プロジェクトの環境を作成し、共通プロジェクトから業務プロジェクトに接続していきます。
プロジェクト | プロジェクト接続 | 用途 |
---|---|---|
プロジェクトA 『共通プロジェクト』 | 接続元 | 踏み台サーバを配置し、インターネットからの接続を1本化 |
プロジェクトB 『業務プロジェクト』 | 接続先 | 各種業務用のシステムを配備 ※本パターンでは共通プロジェクトから接続する業務プロジェクトは 1つですが、 共通プロジェクトから複数の業務プロジェクトに接続する形態でも本パターンで 対応可能です |
(1) 実装サンプルで使用する設定値
バックLANパターンの実装サンプルでは、以下の設定値を使用します。
ネットワーク | ネットワーク名称 | サブネット名称 | サブネット | プロジェクト | 用途 |
---|---|---|---|---|---|
内部ネットワーク1a | cdp-intnet-000 | cdp-subnet-000 | 192.168.0.0/24 | 共通プロジェクト | 踏み台サーバ用 (作成済とします) |
内部ネットワーク1b | cdp3-intnet-031 | cdp3-subnet-031 | 192.168.31.0/24 | 業務プロジェクト | インターネットからのWebアクセス用 |
内部ネットワーク2b | cdp3-intnet-032 | cdp3-subnet-032 | 192.168.32.0/24 | バックLANからのWebサーバメンテナンス用 |
仮想リソース | IPアドレス | プロジェクト | 備考 |
---|---|---|---|
踏み台サーバ | 192.168.0.6 | 共通プロジェクト | 作成済/グローバルIP割当済とします |
Webサーバ | 192.168.31.x | 業務プロジェクト | IPアドレスは任意とします |
192.168.32.x | |||
外部ネットワーク接続用仮想ルータ | 192.168.31.1 | 内部ネットワーク1b側のIPアドレス | |
プロジェクト間接続用仮想ルータ | 192.168.32.254 | 内部ネットワーク2b側のIPアドレス | |
192.168.0.232 | 内部ネットワーク1a側のIPアドレス |
(2) 実装サンプルで使用するルーティング設定の概要
バックLANパターンの実装サンプルでは、
バックLAN に配備する仮想サーバ等が、
以下の通信を行えるようにするルーティングを設定します。
上記の内容を、業務プロジェクト側のルーティングとして以下のように設定します。
設定内容 | 宛先アドレス (destination) | 転送先アドレス (nexthop) | ルーティング情報の設定先 |
---|---|---|---|
①接続元の共通プロジェクトの踏み台サーバと通信する設定 | 192.168.0.0/24 | 192.168.32.254 | 内部ネットワーク2bのサブネット |
②仮想サーバの配備等に使用する特別なIPアドレスと通信する設定 | 169.254.169.254/32 | ||
③デフォルトゲートウエイ | 0.0.0.0/0 | 192.168.31.1 | 内部ネットワーク1bのサブネット |
既存の共通プロジェクト側には、接続先の業務プロジェクトへのルーティングとして、以下の設定を追加します。
設定内容 | 宛先アドレス (destination) | 転送先アドレス (nexthop) | ルーティング情報の設定先 |
---|---|---|---|
接続先の業務プロジェクトの仮想サーバと通信する設定 | 192.168.32.0/24 | 192.168.0.232 | 内部ネットワーク1aサブネット |
(1) 接続先の業務プロジェクトのバックLAN側ネットワーク環境作成
接続先の業務プロジェクトで、バックLAN側のネットワーク環境を作成します。
本パターンでは、APIでのみ設定できるパラメータを設定してサブネットを作成します。
サブネットの作成に合わせて、(1)で作成する環境はすべて APIで作成します。
(2) プロジェクト間接続
仮想ルータを用いて、同一ドメイン内で異なるプロジェクトを接続します。
なお、(2) の作業の手順は、共通サービスパターン と同じです。
作業手順は 共通サービスパターン の各手順を参照してください。
※設定値は、(1) 実装サンプルで使用する設定値 で読み替えてください。
(3) ファイアーウォール/セキュリティグループ設定
仮想サーバ等を配備する前に、ファイアーウォールやセキュリティグループの設定を行ってください。
設定に際しては、以下のデザインパターンをご覧ください。
デザインパターン名称 | 説明 |
---|---|
セキュリティグループ活用 | セキュリティグループ のみでアクセス制御するパターンです。 |
セキュリティグループ/ ファイアーウォール併用 | セキュリティグループ と ファイアーウォール を組み合わせたパターンです。 |
機能別セキュリティグループ | 機能別にアクセス制限をかけるパターンです。 |
(4) 業務プロジェクト上に仮想サーバ作成
業務プロジェクト上に、Webサーバ等の仮想サーバを適宜作成します。
作成後、共通プロジェクトの踏み台サーバからログインできるようになります。
(5) 接続先の業務プロジェクトのWebサーバ用ネットワーク環境作成
接続先の業務プロジェクトで、Webサーバ用のネットワーク環境を作成します。
作業については、インターネット接続パターン の ネットワークの作成 や、
複数ルータ外部接続パターン を参照してください。
※設定値は、(1) 実装サンプルで使用する設定値 で読み替えてください。
(6) 仮想サーバにネットワークインタフェースを追加
業務プロジェクトに作成した仮想サーバに、ネットワークインタフェースを追加します。
(1) 内部ネットワーク2b作成
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$NETWORK_NAME | "cdp3-intnet-032" | ネットワーク名称(任意) |
$AZ | "jp-east-1b" | "jp-east-1a"、"jp-east-1b" 等 |
(2) 内部ネットワーク2bにサブネットを作成
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$SUBNET_NAME | "cdp3-subnet-032" | ネットワーク名称(任意) |
$NETWORK_ID | (生成されたID) | 作成したネットワークのID |
$CIDR | "192.168.32.0/24" | サブネットのアドレス(CIDR)形式 |
$DNS | "" | 空の値を設定 |
$AZ | "jp-east-1b" | "jp-east-1a"、"jp-east-1b" 等 |
$HOST_ROUTES | "{\"nexthop\":\"192.168.32.254\",\"destination\":\"192.168.0.0/24\"}, {\"nexthop\":\"192.168.32.254\",\"destination\":\"169.254.169.254/32\"}" | ルーティング情報 - ルータ - 宛先のサブネット |
(3) プロジェクト間接続用仮想ルータ作成
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$ROUTER_NAME | "router-032" | 仮想ルータ名称(任意) |
$AZ | "jp-east-1b" | "jp-east-1a"、"jp-east-1b" 等 |
(4) 仮想ルータ用のポート作成
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$PORT_NAME | "cdp3-subnet-032-192_168_32_254" | ポート名称(任意) |
$NETWORK_ID | (生成されたID) | 仮想ルータにアタッチするネットワークID |
$SUBNET_ID | (生成されたID) | 仮想ルータにアタッチするサブネットID |
$FIXED_IP_ADDRESS | "192.168.32.254" | ポートに設定するIPアドレス |
$SG_ID | (生成されたID) | ポートに設定するセキュリティグループID |
$AZ | "jp-east-1b" | "jp-east-1a"、"jp-east-1b" 等 |
(5) 仮想ルータにポートをアタッチ
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$ROUTER_ID | (生成されたID) | 作成した仮想ルータのID |
$PORT_ID | (生成されたID) | 作成したポートのID |
(6) 仮想サーバにログインして、ネットワークインタフェースを設定
仮想サーバが Linux 系の場合は、仮想サーバにログインして、ネットワークインタフェースを設定します。
なお、仮想サーバが Windows 系の場合は、仮想サーバにポートをアタッチした時点で OS 上でネットワークインタフェースが追加されるため、
以下の手順は不要です。
変更/削除 | 変更前 | 変更後 |
---|---|---|
DEVICE=eth0 | DEVICE=eth0 | |
TYPE=Ethernet | TYPE=Ethernet | |
UUID=ff971b7a-c2a0-4bc3-827a-5ea0e3e86161 | UUID=d837e0ee-0017-45dd-991d-e8409c118749 | |
ONBOOT=yes | ONBOOT=yes | |
NM_CONTROLLED=no | NM_CONTROLLED=no | |
BOOTPROTO=dhcp | BOOTPROTO=dhcp | |
変更 | DEFROUTE=yes | DEFROUTE=no |
変更 | PEERDNS=yes | PEERDNS=no |
PEERROUTES=yes | PEERROUTES=yes | |
IPV4_FAILURE_FATAL=yes | IPV4_FAILURE_FATAL=yes | |
IPV6INIT=yes | IPV6INIT=yes | |
IPV6_AUTOCONF=no | IPV6_AUTOCONF=no | |
DHCPV6C=yes | DHCPV6C=yes | |
変更 | IPV6_DEFROUTE=yes | IPV6_DEFROUTE=no |
IPV6_FAILURE_FATAL=no | IPV6_FAILURE_FATAL=no | |
NAME="System eth0" | NAME="System eth0" |
変更/削除 | 変更前 | 変更後 |
---|---|---|
変更 | DEVICE=eth0 | DEVICE=eth1 |
TYPE=Ethernet | TYPE=Ethernet | |
削除 | UUID=ff971b7a-c2a0-4bc3-827a-5ea0e3e86161 | |
ONBOOT=yes | ONBOOT=yes | |
NM_CONTROLLED=no | NM_CONTROLLED=no | |
BOOTPROTO=dhcp | BOOTPROTO=dhcp | |
DEFROUTE=yes | DEFROUTE=yes | |
PEERDNS=yes | PEERDNS=yes | |
PEERROUTES=yes | PEERROUTES=yes | |
IPV4_FAILURE_FATAL=yes | IPV4_FAILURE_FATAL=yes | |
IPV6INIT=yes | IPV6INIT=yes | |
IPV6_AUTOCONF=no | IPV6_AUTOCONF=no | |
DHCPV6C=yes | DHCPV6C=yes | |
IPV6_DEFROUTE=yes | IPV6_DEFROUTE=yes | |
IPV6_FAILURE_FATAL=no | IPV6_FAILURE_FATAL=no | |
変更 | NAME="System eth0" | NAME="System eth1" |
(7) 内部ネットワーク1bに仮想サーバ用のポートを作成
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$PORT_NAME | "PORT_VM_192_168_31_x" | ポート名称(任意) |
$NETWORK_ID | (生成されたID) | 仮想サーバにアタッチするネットワークID |
$SUBNET_ID | (生成されたID) | 仮想サーバにアタッチするサブネットID |
$FIXED_IP_ADDRESS | "192.168.31.x" | ポートに設定するIPアドレス |
$SG_ID | (生成されたID) | ポートに設定するセキュリティグループID |
$AZ | "jp-east-1b" | "jp-east-1a"、"jp-east-1b" 等 |
(8) 仮想サーバにポートをアタッチ
以下のAPIに、設定項目(json)を設定して、接続先の業務プロジェクト で実行してください。
項目 | 設定値 | 内容 |
---|---|---|
$SERVER_ID | (生成されたID) | 作成した仮想サーバのID |
$PORT_ID | (生成されたID) | 作成したポートのID |
(9) 仮想サーバの OS 上でルーティングを確認
仮想サーバの OS 上で、ネットワークインタフェースが認識された後で、/sbin/route コマンド等でルーティング情報を確認します。
その他、nslookup コマンドで DNS の確認や、yum コマンドで httpアクセスの確認等を行ってください。
コマンドの確認結果が問題なければ、仮想サーバを再起動してログインし、確認用のコマンドで再度正常に設定できたか確認してください。
[k5user@web_server ~]$ /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.169.254 192.168.32.254 255.255.255.255 UGH 0 0 0 eth0 192.168.32.0 * 255.255.255.0 U 0 0 0 eth0 192.168.0.0 192.168.32.254 255.255.255.0 UG 0 0 0 eth0 192.168.31.0 * 255.255.255.0 U 0 0 0 eth1 default 192.168.31.1 0.0.0.0 UG 0 0 0 eth1 [k5user@web_server ~]$
本パターンを利用して、外部公開用とは別のインターフェースを設けた場合のメリット・効果は以下の通りです。
以下のイメージ図は、構造 (イメージ図) と異なり、接続元の共通プロジェクトの方に仮想ルータを配備したイメージ図です。
仮想ルータをプロジェクト間接続するプロジェクトのどちらに配備するかについては、共通サービスパターンのその他 を参照してください。