2階層ネットワーク構成#

要求事項#

『FJcloud-O上で階層をもたせたネットワーク構成でネットワークを構築したい』という要求事項に対応するパターンです。

さらに、以下のような具体的な要求事項に対応します。

  • インターネットに公開するWeb/DBシステムにおいて、DBサーバ のセキュリティを高めるために、DBサーバ を内部セグメントに配置したい

  • オンプレミスの構成と同じようなネットワーク構成を FJcloud-O上で実現したい

対応するデザインパターン概要#

FJcloud-Oではネットワークを自由に構成することができるため、オンプレミス環境のような階層構造のネットワーク構成が可能です。

本パターンでは、ルータ 1つとルータ2つのケースを紹介します。
ルータ2つのケースでは、ルーティングをどの仮想リソースに設定するかにより異なる2つの構成が可能です。

FJcloud-Oのネットワーク#

FJcloud-Oのネットワークでは、FJcloud-Oであらかじめ用意された「外部ネットワーク」(インターネットに接続されたネットワーク) と、自分で作成する「内部ネットワーク」があります。

ネットワーク 内容
外部
ネットワーク
FJcloud-Oであらかじめ用意された、インターネットに接続されたネットワーク。
内部
ネットワーク
自分で作成するネットワーク。
ネットワーク構成やセキュリティの設定で、インターネットに接続可能にも接続不可能にもできる。

  • ルータ1つの構成では、セキュリティ設定により、インターネットへの接続の可/不可を設定する。
      仮想ルータで接続されたサブネット間だけの通信であれば、ルーティング設定は不要。 *1

  • ルータ2つの構成では、ネットワーク構成により、インターネットへの接続の可/不可を設定する。
     ルーティングの設定により、以下の2つの構成がある。
  •   ①サブネットのみにルーティングを設定する方式
      ②仮想ルータとサブネットの両方にルーティングを設定する方式
     これらは東日本リージョン2および東日本リージョン2相当のリージョンのみ設定可能です。
     APIリファレンスが東日本リージョン2と同じリージョンは、東日本リージョン2に相当します。
    • 内部ネットワークのルータ1つの構成では、ネットワーク構成上はすべてのネットワークでインターネットと通信可能な構成 *1 となります。
    • 内部ネットワークのルータ2つの構成では、以下の 構造 に示した「内部ネットワーク(private)」のような外部ネットワークに接続しないネットワークを設けることで、セキュリティの設定によらずに、ネットワーク構成上でインターネットからのアクセスを不可能にすることが可能です。

    *1 ルータ 1つの構成では、セキュリティの設定によりそれぞれのネットワークに対してのインターネットの接続の可/不可を設定します。
    なお、本資料はネットワーク構成について記載しており、セキュリティ設定については記載しておりません。
    セキュリティ設定については、実装サンプルでリンクしている セキュリティグループ/ファイアーウォール併用パターン 等をご覧ください。

    構造 (イメージ図)#

    本構成では、以下のA.~C.の3パターンを紹介します。

    A. ルータ1つの場合 B. ルータ2つの場合① C. ルータ2つの場合②
    ルーティング設定不要 サブネットのみにルーティング設定
    東日本リージョン3、西日本リージョン3では構築不可
    (複数の仮想ルータを1つのサブネットにアタッチする構成が取れないため)
    仮想ルータとサブネットにルーティング設定
    東日本リージョン3、西日本リージョン3では構築不可
    (複数の仮想ルータを1つのサブネットにアタッチする構成が取れないため)
    image image image
  • どのサブネットにもグローバルIPアドレス割り当て可能
  • どのサブネットからもインターネットと双方向で通信可能
      (通信制御はFWおよびSGで実施)

  •                                                                                                                                                                            
  • public層のみグローバルIPアドレス割り当て可能
  • public層のみインターネットと双方向で通信可能
      (通信制御はFWおよびSGで実施)
  • 外部とpublic層、public層とprivate層間それぞれの通信制御を各ネットワーク固有のFWにて設定可能
      (設定ミスをおこしにくい)
  • public層のみグローバルIPアドレス割り当て可能
  • public層のみ、インターネットからの通信を受信可能
  • public層/private層とも、インターネットに通信可能
    (東日本リージョン2相当のリージョンのみ設定可能)
    (通信制御はFWおよびSGで実施)
  • 外部とpublic層、public層とprivate層間それぞれの通信制御を各ネットワーク固有のFWにて設定可能
    (設定ミスをおこしにくい)
  • Note

    ネットワーク構成とセキュリティ設定

    ルータ 1つの構成では、内部ネットワーク1 も 内部ネットワーク2 も、インターネットに通信可能な構成です。用途に応じてセキュリティの設計を行い、適切にファイアーウォールやセキュリティグループを設定してください。

    セキュリティの設定により、ルータ 1つの構成は、以下のような利用形態が想定されます。
    WebサーバとDBサーバの構成で、DBサーバを内部セグメントに配置したい場合は、ルータ 1つの構成の場合はセキュリティの設定で形態②となるよう設定します。

    ネットワーク 形態① 形態② 形態③
    内部ネットワーク1 DMZ *2 DMZ *2 内部セグメント *3
    内部ネットワーク2 DMZ *2 内部セグメント *3 内部セグメント *3

    *2 DMZ    : インターネットに公開するセグメント
    *3 内部セグメント : インターネットに非公開とするセグメント

    それに対して、ルータ 2つの構成では、インターネットからは 内部ネットワーク(private) に到達することができません。
    ルータ 1つの構成では、形態②で DMZ と 内部セグメント を分けても、何らかの設定ミスが発生してしまった場合等、インターネットから内部セグメントに通信できてしまう可能性が 0 にはなりませんが、ルータ 2つの構成では、Webサーバを内部ネットワーク (public) に配備し、DBサーバを内部ネットワーク(private) に配備すれば、DBサーバ はネットワーク構成上でインターネットから接続できない状態になります。

    そのかわり、ルータ 2つの構成では、DBサーバからインターネットへの接続については考慮が必要です。DBサーバにパッチ *4 をあてる必要がある場合など、インターネットに接続したい場合は、仮想ルータとサブネットの両方にルーティング設定をする方式 *5 を採用するか、内部ネットワーク (public) にNATサーバを配備する方式 *6 等を検討するかとなります。

    *4 FJcloud-O のデータベースサービス を利用される場合であれば、データベースにはFJcloud-O基盤側でパッチをあてるため、内部ネットワーク(private) のように、外部ネットワークに接続されていない内部ネットワーク上に DB を配備しても、パッチあての観点では問題ありません。
    *5 東日本リージョン2相当のリージョンのみ可能です。APIリファレンスが東日本リージョン2と同じリージョンは、東日本リージョン2相当となります。
    *6 東日本リージョン1相当のリージョンを含む全てのリージョンで可能です。2階層インターネットアクセス(NAT)パターン をご覧ください。

    ネットワーク構成は、このようなネットワーク構成の特徴を考慮して、用途に応じて使い分けてください。
    なお、その他 の項目に、ネットワーク構成の形態を組み合わせたサンプルを記載しましたので、合わせてご覧ください。

    実装サンプル#

    シングルAZ構成で、ネットワークを構築する手順を示します。

    A. ルータ 1つの場合#

    (1) 仮想ルータの作成/外部ネットワークのアタッチ#

    • IaaSポータルにログインします。
    • 「ネットワーク」⇒「仮想ルータ」画面で、「+」ボタンをクリックします。
    • 「仮想ルータ作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
    項目 必須 設定値例 内容
    AZ 必須 "jp-east-2b" システムを設置するアベイラビリティゾーン *7
    AZ1:"jp-east-2a"
    AZ2:"jp-east-2b"
    仮想ルーター名 必須 "demo_router" 適宜設定してください。

    *7 東日本リージョン3、西日本リージョン3ではAZの設定なし

    • 「仮想ルータ一覧」画面で、作成した仮想ルータの「アクション」⇒「ゲートウェイ設定」を選択します。
      「ゲートウェイ設定画面」で仮想ルータを接続する「外部仮想ネットワーク」(インターネット側のネットワーク)を選択し、「設定」ボタンをクリックします。

    (2) 内部ネットワーク/サブネットの作成#

    • 以下の手順で、内部ネットワークを必要な階層分作成します。
      • 「ネットワーク」⇒「仮想ネットワーク」画面で、「+」ボタンをクリックします。
      • 「仮想ネットワーク作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
    タブ 項目 必須 内部ネットワーク1
    設定値例
    内部ネットワーク2
    設定値例
    内容
    仮想
    ネットワーク
    AZ 必須 "jp-east-2b" "jp-east-2b" システムを設置するアベイラビリティゾーン *8
    AZ1:"jp-east-2a"
    AZ2:"jp-east-2b"
    仮想ネットワーク名 必須 "demo_intnet1" "demo_intnet2" 適宜設定してください。
    管理状態 必須 "UP" "UP" 適宜設定してください。
    サブネット サブネット作成 必須 "あり" "あり" 適宜設定してください。
    サブネット名 必須 "demo_subnet1" "demo_subnet2" 適宜設定してください。
    仮想ネットワークアドレス 必須 "192.168.11.0/24" "192.168.12.0/24" CIDR形式で入力してください。
    ゲートウェイ 推奨 "あり" "あり"  
    ゲートウェイIP 推奨 "192.168.11.1" "192.168.12.1" 必須ではありませんが、設定してください。
    この後に設定する仮想ルータのIPアドレスとなります。
    サブネット
    詳細
    DHCP 推奨 "有効" "有効" 必須ではありませんが、設定してください。
    この項目は、インターネット接続パターンのDHCPに関する説明をご覧ください。
    IPアドレス割当プール 任意     必要に応じて設定してください。
    DNSサーバ 推奨 "133.162.106.10",
    "133.162.106.9"
    "133.162.106.10",
    "133.162.106.9"
    必須ではありませんが、設定してください。
    IaaSポータル上では、後から追加できません。
    DNSサーバは1行につき1項目設定できます。
    DNSサーバのIPアドレスはリージョン/AZごとに異なります。
    詳細は、機能説明書を参照してください。
    追加のルート設定 任意 ゲートウェイIPに設定されるデフォルトのルート以外で接続する宛先を設定します。
    csvで以下を設定します。
  • CIDR形式の宛先
  • その宛先へ接続するルータ
  • *8 東日本リージョン3、西日本リージョン3ではAZの設定なし

    (3)仮想ルータにサブネットをアタッチ#

    • 以下の手順で、作成した内部ネットワークをすべて仮想ルータにアタッチします。
      • 「ネットワーク」⇒「仮想ルータ」画面で、作成した仮想ルータをクリックします。
      • 「インターフェース」項目の「+」ボタンをクリックします。
      • 「インターフェース追加」画面で、以下の項目を入力し、「追加」ボタンをクリックします。
    項目 必須 内部ネットワーク1
    設定値例
    内部ネットワーク2
    設定値例
    内容
    サブネット 必須 "demo_subnet1" "demo_subnet2" 内部ネットワーク作成の際に設定したサブネットを選択してください。
    IPアドレス 必須 "192.168.11.1" "192.168.12.1" 内部ネットワーク作成の際に設定したゲートウェイIPを設定してください。

    (4) セキュリティ設定 (ファイアーウォール/セキュリティグループ)#

    • 仮想サーバを配備する前に、ファイアーウォールやセキュリティグループの設定を行ってください。
    • ファイアーウォールの設定は、仮想ルータに、それぞれのネットワークの通信を許可する設定を行ってください。
    • 設定に際しては、以下のデザインパターンをご覧ください。
    デザインパターン名称 説明
    セキュリティグループ活用 セキュリティグループ のみでアクセス制御するパターンです。
    セキュリティグループ/ファイアーウォール併用パターン セキュリティグループ と ファイアーウォール を組み合わせたパターンです。
    機能別セキュリティグループ 機能別にアクセス制限をかけるパターンです。

    B. ルータ 2つの場合①#

    (1) 仮想ルータの作成/外部ネットワークのアタッチ#

    • 「仮想ルータ一覧」画面にて仮想ルータを2つ(外部-public、public-private)を作成します(IaaSポータル/手順は上記参照)。
    • 外部-public用の仮想ルータと外部ネットワークをアタッチします(IaaSポータル/手順は上記参照)。

    (2) 内部ネットワーク/サブネットの作成#

    • ネットワーク画面にてpublic層/private層それぞれのネットワークを作成します。
      • 「ネットワーク」⇒「仮想ネットワーク」画面で、「+」ボタンをクリックします。
      • 「仮想ネットワーク作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
    タブ 項目 必須 内部ネットワーク
    (public層)
    設定値例
    内部ネットワーク
    (private層)
    設定値例
    内容
    仮想
    ネットワーク
    AZ 必須 "jp-east-2b" "jp-east-2b" システムを設置するアベイラビリティゾーン
    AZ1:"jp-east-2a"
    AZ2:"jp-east-2b"
    仮想ネットワーク名 必須 "demo_intnet3" "demo_intnet4" 適宜設定してください。
    管理状態 必須 "UP" "UP" 適宜設定してください。
    サブネット サブネット作成 必須 "あり" "あり"                                                            
    サブネット名 必須 "demo_subnet3" "demo_subnet4" 適宜設定してください。
    仮想ネットワークアドレス 必須 "192.168.13.0/24" "192.168.14.0/24" CIDR形式で入力してください。
    ゲートウェイ 推奨 "あり" "あり"  
    ゲートウェイIP 推奨 "192.168.13.1" "192.168.14.1" 必須ではありませんが、設定してください。
    この後に設定する仮想ルータのIPアドレスとなります。
    サブネット
    詳細
    DHCP 推奨 "有効" "有効" 必須ではありませんが、設定してください。
    この項目は、インターネット接続パターン のDHCPに関する説明をご覧ください。
    IPアドレス割当プール 任意     必要に応じて設定してください。
    DNSサーバ 推奨 "133.162.106.10",
    "133.162.106.9"
    "133.162.106.10",
    "133.162.106.9"
    必須ではありませんが、設定してください。
    IaaSポータル上では、後から追加できません。
    DNSサーバは1行につき1項目設定できます。
    DNSサーバのIPアドレスはリージョン/AZごとに異なります。
    詳細は、機能説明書を参照してください。
    追加のルート設定 任意 Destination:"192.168.14.0/24"
    Nexthop:"192.168.13.254"
      ゲートウェイIPに設定されるデフォルトのルート以外で接続する宛先を設定します。
    以下を設定します。
  • CIDR形式の宛先(Destination)
  • その宛先へ接続するルータ(Nexthop)
  • (3) 外部-public間の仮想ルータにインタフェース追加#

    • 「仮想ルーター」画面にて外部-public間の仮想ルータの詳細を開き、インタフェース追加を行います。
    項目 必須 設定値例 内容
    サブネット 必須 "demo_subnet3" 内部ネットワークpublic層を選択してください。
    IPアドレス 必須 "192.168.13.1" 内部ネットワーク作成の際に設定したゲートウェイIPアドレスを設定してください。

    (4) public-private間の仮想ルータにインタフェース追加#

    • public-private間の仮想ルータの詳細を開き、インタフェース追加を行います。
    項目 必須 内部ネットワーク
    (public層)
    設定値例
    内部ネットワーク
    (private層)
    設定値例
    内容
    サブネット 必須 "demo_subnet3" "demo_subnet4" 内部ネットワーク作成の際に設定したサブネットを選択してください。
    IPアドレス 必須 "192.168.13.254" "192.168.14.1"
  • public層側
    内部ネットワーク作成の際に「追加のルート設定」で設定したルータ用のIPアドレスを設定してください。
  • private層側
    内部ネットワーク作成の際に設定したゲートウェイIPアドレスを設定してください。
  • (5) セキュリティ設定 (ファイアーウォール/セキュリティグループ)#

    • 仮想サーバを配備する前に、ファイアーウォールやセキュリティグループの設定を行ってください。
    • ファイアーウォールの設定は、2つの仮想ルータ(外部ネットワーク-public、public-private)に、 それぞれの通信を許可する設定を行ってください。

    • 設定に際しては、以下のデザインパターンをご覧ください。

    デザインパターン名称 説明
    セキュリティグループ活用 セキュリティグループ のみでアクセス制御するパターンです。
    セキュリティグループ/ファイアーウォール併用パターン セキュリティグループ と ファイアーウォール を組み合わせたパターンです。
    機能別セキュリティグループ 機能別にアクセス制限をかけるパターンです。

    (6) 参考:サブネットに設定したルーティング情報の更新#

    • サブネットに設定したルーティング情報は、APIで更新可能です。 ルーティング情報の更新は、IaaSポータルではできません。
    • サブネットへのルーティング情報の更新後には、当該サブネット上の仮想サーバの再起動が必要です。

    • 設定項目(REST API)

    項目 設定値例 内容
    $SUBNET_ID (生成されたID) サブネットID
    • 設定項目(json)
    項目 設定値例 内容
    $HOST_ROUTES {\"nexthop\":\"192.168.13.254\",\"destination\":\"192.168.14.0/24\"},
    {\"nexthop\":\"192.168.13.1\",\"destination\":\"0.0.0.0/0\"}
    ルーティング情報
  • ルータ
  • 宛先のサブネット

  •                        
    • 実行API
    curl -i $NETWORK/v2.0/subnets/$SUBNET_ID -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"subnet": { "host_routes": ['$HOST_ROUTES'] }}'
    

    C. ルータ 2つの場合②#

    本手順は、東日本リージョン2相当のリージョンのみ可能です。
    (APIリファレンスが東日本リージョン2と同じリージョンは、東日本リージョン2相当となります。)
    また、以下の (1)から (5)までの手順は、サブネットのみにルーティング設定する方式と手順は同じです。各手順を参照してください。

    (1) 仮想ルータの作成/外部ネットワークのアタッチ
    (2) 内部ネットワーク/サブネットの作成
    (3) 外部-public間の仮想ルータにインタフェース追加
    (4) public-private間の仮想ルータにインタフェース追加
    (5) セキュリティ設定 (ファイアーウォール/セキュリティグループ)

    (6) 仮想ルータへのルーティング設定

    • 仮想ルータへのルーティング設定は、APIで行います。IaaSポータルではできません。
    • 仮想ルータへのルーティング情報の更新後は、サブネットでのルーティング更新と異なり、仮想サーバの再起動は不要です。
    • 設定項目(REST API)
    項目 設定値例 内容
    $ROUTER_ID (生成されたID) 仮想ルータID
    • 設定項目(json)
    設定先 CIDR形式の宛先
    (Destination)
    設定値例
    その宛先へ接続するルータ
    (Nexthop)
    設定値例
    設定項目(json)
    (変数 $HOST_ROUTES に設定する値)
    外部-public間の仮想ルータ "192.168.14.0/24" "192.168.13.254" {\"nexthop\":\"192.168.13.254\",
    \"destination\":\"192.168.14.0/24\"}
    public-private間の仮想ルータ "0.0.0.0/0" "192.168.13.1" {\"nexthop\":\"192.168.13.1\",
    \"destination\":\"0.0.0.0/0\"}
    • 実行API
      curl -i $NETWORK/v2.0/routers/$ROUTER_ID -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"router": { "routes": ['$HOST_ROUTES'] }}'
      

    メリット・効果#

    ルータが1つの構成と2つの構成に共通のメリット・効果は以下の通りです。

    • セグメント間の通信で、ファイアーウォールによるアクセス制御をかけることができます。

    ルータが1つの構成#

    ルータが1つの構成のメリット・効果は以下の通りです。

    • 全てのサブネット上の仮想サーバにグローバルIPを割り当てて直接インターネットと接続することが可能です。

    • セキュリティの設定により、以下のような利用形態を設定可能です。

    ネットワーク 形態① 形態② 形態③
    内部ネットワーク1 DMZ *9 DMZ *9 内部セグメント *10
    内部ネットワーク2 DMZ *9 内部セグメント *10 内部セグメント *10

    *9 DMZ    : インターネットに公開するセグメント
    *10 内部セグメント : インターネットに非公開とするセグメント

    ルータが2つの構成#

    ルータが2つの構成のメリット・効果は以下の通りです。

    • ルータ 2つの場合のイメージ図のprivate層とpublic層のように、仮想ルータを分けられる (=ファイアーウォールを分けられる) ため、構築時の操作ミスを防ぎます。

    • private層の仮想サーバにはグローバルIPアドレスを割り当てられないため、同じく構築時の操作ミスを防ぎます。

    • private層はインターネットから直接通信できないため、セキュリティを確保できます。

    • イメージ図のように、従来のオンプレミスのシステムに近い階層構造のネットワーク構成が可能です。

    注意事項#

    • 本パターンは2017年9月時点のFJcloud-O 東日本リージョン2 で動作検証しています。
      また、2018 年7月時点のFJcloud-O 西日本リージョン3 で動作検証しています。

    • ネットワーク構成は自由度が高いため、様々な構成を実現できますが、ファイアーウォール、セキュリティグループにて通信の制御は必ず行ってください。

    その他#

    1. ルーティング情報の設定先について#

    • 本パターンでは、ルーティング情報はサブネットに設定しています。
      サブネットに設定したルーティング情報は、仮想サーバ等が配備された時や起動された時等に、DHCP で取得されます。

    • ルーティング情報は、サブネットではなく、ルータに設定することも可能 (操作は API のみ) です。
      ただし、複数のルータで構成するネットワークについては、以下のような事例もあるため、仮想ルータで接続されていないセグメントへのルーティングを設定したいという必要性がない場合は、サブネットに設定することを推奨します。

    image

    2. ネットワーク構成の形態を組み合わせたサンプルについて#

    ネットワーク構成の形態を組み合わせたサンプルとして、踏み台サーバにログインするメンテナンス用のネットワークと、Webサーバを配備して一般不特定多数の利用者に Webサービス を提供するネットワークを分けたサンプルを記載します。

    以下のサンプルでは、

    • 仮想ルータへのルーティング設定は行わず、サブネットのみにルーティング設定としています。
    • 特定のアクセス元から、ルータA 経由で踏み台サーバに ssh でログインを OKとしています。
    • 踏み台サーバから、ルータC 経由で Webサーバに ssh のログインを OKとしています。
    • Webサーバは、ルータB 経由で http 接続をOKとしています。
    • DBサーバは、ルータB 経由で Webサーバから DBサーバの 5432ポートへの接続を OK としています。
      DBサーバは、FJcloud-O が提供する データベースサービス を利用する前提として、sshログインをしないようにしています。

    image