インターネット接続パターン#

本構成は東日本/西日本リージョン1・2向けとなります。

要求事項#

『FJcloud-Oを用いてインターネット向けのサービスを構築したい』という要求事項に対応するパターンです。

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

  • FJcloud-Oで仮想サーバを作成する基本的な方法を把握したい
  • インターネットから安全に仮想サーバを操作し、サービスを構築/保守したい
  • 仮想サーバ上のサービスを安全にインターネットに公開したい

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

FJcloud-OにはセキュリティグループというIPv4のパケットフィルタリングによるアクセス制御機能が存在し、セキュリティを考慮した仮想サーバを作成することができます。
本機能を用いた一例として、仮想サーバへのインターネットからのアクセスを必要なポートのみに制限し、安全な状態で仮想サーバを作成することが可能です。

本パターンでは、sshを例として仮想サーバで安全にサービス提供するための基本的な流れを記載します。

構造(イメージ図)#

image

実装サンプル#

実装サンプルでは、作成した仮想サーバに、安全に sshでログインできるまでを例として記載します。

1. ネットワークの作成#

(1) 仮想ルータの作成#

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

(2) 仮想ルータにゲートウェイ設定#

  • 「仮想ルータ」画面で、作成した仮想ルータの「Action」⇒「ゲートウェイ設定」メニューで、 仮想ルータを接続させる「外部仮想ネットワーク」(インターネット側のネットワーク)を選択し、 「設定」ボタンをクリックします。
項目 必須 設定値例 内容
外部仮想ネットワーク 必須 例:"inf_az2_ext-net01" 複数の外部仮想ネットワークから1つ選択

Note

  • 外部仮想ネットワーク は、FJcloud-Oであらかじめ用意されています。
  • 外部仮想ネットワーク は、外部ネットワークとも呼称されます。
  • (3) 内部ネットワーク作成#

    • 「ネットワーク」⇒「仮想ネットワーク」画面で、画面右上の「+」ボタンをクリックします。
    • 「仮想ネットワーク作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
    種別 項目 必須 設定値例 内容
    仮想ネットワーク AZ 必須 "jp-east-1b AZ" システムを設置するアベイラビリティゾーンを設定してください。
    AZ1:"jp-east-1a AZ"
    AZ2:"jp-east-1b AZ"
    仮想ネットワーク名 必須 "demo_intnet" 仮想ネットワーク名を入力してください。
    管理状態 必須 "UP" ここでは "UP" で設定してください。
    サブネット サブネット作成 必須 "あり" ここでは "あり" で設定してください。
    サブネット名 必須 "demo_subnet" サブネット名を入力してください。
    仮想ネットワークアドレス 必須 "192.168.0.0/24" CIDR形式で入力してください。
    ゲートウェイ 推奨 "あり" ここでは "あり" で設定してください。
    ゲートウェイIP 推奨 "192.168.0.1" 必須ではありませんが、設定してください。
    この後の設定で使用します。
    サブネット詳細 DHCP有効 推奨 "有効" 必須ではありませんが、設定してください。
    IPアドレス割当プール 任意   必要に応じて設定してください。
    DNSサーバ 推奨   必須ではありませんが、設定してください。
    IaaSポータル上では、後から追加できません。
    DNSサーバは1行につき1項目設定できます。
    DNSサーバは以下のとおりです。
    AZ1:133.162.193.10、133.162.193.9
    AZ2:133.162.201.10、133.162.201.9
    追加のルート設定 任意   CIDR形式の宛先(Destination)と、その宛先へ接続するルータのIPアドレス(Nexthop)を設定します。*1

    *1 この項目は、2階層ネットワーク構成 の ルータ2つ の例で使用します。

    Note

    DHCP と IPアドレス割当プール

    FJcloud-Oでは、仮想サーバにIPアドレスを設定する手段としてDHCPを使用しています。
    仮想サーバに割り当てるIPアドレスを指定しない場合、まず、FJcloud-Oの管理機能でアドレスを自動的に決定し、それをDHCPを使って対象仮想サーバに伝達します。
    仮想サーバやポートに対して固定のIPアドレスを指定した場合も、伝達手段としてDHCPが使用されます。
    いずれの場合も、同一の仮想サーバに対しては常に同じIPアドレスを設定します。
    その他、DHCPでは、IPアドレスの他にルーティング情報の配布も行っています。
    上記仕様のため、特別な理由がない限り、DHCP は有効に設定してください。

    FJcloud-O が自動的にIPアドレスを割り当てる例としては、以下のようなものがあります。

  • DHCPサーバ自体
  • ルータ (作成時にIPアドレスを指定しない場合)
  • ポート (作成時にIPアドレスを指定しない場合)
  • オートスケール (仮想サーバ、ロードバランサー)
  • ロードバランサー (オートスケールではなく手動で作成する場合もIPアドレスは自動的に割り当てられる)
  • FJcloud-Oが自動的に割り当てるIPアドレスは、IPアドレス割当プールの範囲内から払い出されます。
    IPアドレス割当プールを指定しない場合、ルータのゲートウェイIPアドレスを除く全てのIPアドレスが、IPアドレス割当プールとして設定されます。
    IPアドレス割当プール 内に ゲートウェイIPアドレス を設定した場合は、ゲートウェイIPアドレス は IPアドレス割当プール から除外されます。

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

    • 「ネットワーク」⇒「仮想ルータ」画面で、作成した仮想ルータをクリックします。
    • 「仮想ルータ詳細」画面で、「インターフェース」の項の右上にある「+」ボタンをクリックします。
    • 「インタフェース設定」画面で、以下の項目を入力し、「追加」ボタンをクリックします。
    項目 必須 設定値例 内容
    サブネット 必須 "demo_subnet" 内部ネットワーク作成の際に設定したサブネットを選択してください。
    IPアドレス 必須 "192.168.0.1" 内部ネットワーク作成の際に設定したゲートウェイIPを設定してください。

    (5) グローバルIPアドレス確保#

    • 「ネットワーク」⇒「グローバルIP」と選択した画面で、画面右上の「+」ボタンをクリックします。
    • グローバルIPプールの選択を行う画面が表示されます。
      グローバルIPアドレスの割当対象(仮想サーバまたは仮想ルータ)が接続するグローバルIPプール(外部ネットワーク)を選択します。
      今回は、(2) 仮想ルータにゲートウェイ設定 で仮想ルータのゲートウェイに設定した外部ネットワークを選択し、「次へ」をクリックします。
    • グローバルIPアドレスのポート割当を行う画面が表示されます。
      グローバルIPアドレスの割当対象(仮想サーバまたは仮想ルータ)のポートを選択可能ですが、選択せずにグローバルIPアドレスの確保だけを行うことも可能です。今回は仮想サーバ作成後にグローバルIPアドレスの割当を行うため、「グローバルIPアドレス割当ポート」には何も選択せずに、「次へ」をクリックします。
    • 確認画面で内容を確認し、「設定」ボタンをクリックすると、グローバルIPアドレスが確保されます。

    Note

    作成された仮想ルータにより、

  • 内部ネットワークから外部ネットワークに向けての通信はSNAT機能が働きます。
  • 外部ネットワークから、内部ネットワークのグローバルIPアドレスを割り当てた仮想サーバ等への通信は、DNAT機能が働きます。
  • 仮想サーバにグローバルIPアドレスを割り当てた場合は、そのグローバルIPアドレスと、仮想サーバ作成時に割り当てられるプライベートIPアドレスが相互にアドレス変換されます。
  • 2. セキュリティグループの設定#

    (1) セキュリティグループ作成#

    • 「ネットワーク」⇒「セキュリティグループ」画面で、画面右上の「+」ボタンをクリックします。
    • 「セキュリティグループ作成」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。
    項目 必須 設定値例 内容
    セキュリティグループ名 必須 "SG_external" セキュリティグループ名を入力してください。
    説明 必須 "SG_external" セキュリティグループに対する説明事項を入力してください。

    (2) ルールの編集#

    • 「ネットワーク」⇒「セキュリティグループ」画面で、作成したセキュリティグループ「SG_external」の「アクション」から「ルール管理」をクリックします。

    • 「ルール管理」画面で、以下の2つのルールを削除します。
      各ルールの「アクション」にある「削除」ボタンで削除してください。

    No 方向 Ethernetタイプ IPプロトコル ポート範囲 接続先
    1 egress IPv6 - - -
    2 egress IPv4 - - -

    上記の No.1,2 のルールは、セキュリティグループの新規作成時にデフォルトで設定されるルールです。
    インターネットに接続する仮想サーバ用等、セキュリティを高めたい場合は削除します。

    • 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
    • 「ルールの追加」ポップアップが表示されるので、以下のルールを追加します。
    No ルール 方向 オープ
    ンポート
    ポート 接続先 セキュリティグループ
    またはCIDR
    1 カスタムTCPルール 送信 ポート 80 CIDR 169.254.169.254/32
    2 カスタムTCPルール 受信 ポート 22 CIDR xxx.xxx.xxx.xxx/32

    上記の No.1 のルールは、仮想サーバが起動中に、仮想サーバの起動時などに利用する特別なIPアドレス "169.254.169.254/32" から必要な情報を取得する際に必要なルールです。
    このサーバについての詳細は、機能説明書の "プロビジョニングスクリプト機能" のページをご覧ください。

    上記の No.2 のルールには、構造図中のsshアクセス元サーバ (特定のメンテナンス用サーバ等) のように、仮想サーバに ssh接続する際のアクセス元となるサーバを設定します。

    特定のサーバを指定する場合は、上記のルールのように、"xxx.xxx.xxx.xxx/32" というCIDR形式で入力します。
    特定のサーバが、NATを使用して接続している場合は、NAT のアドレスを入力してください。

    Note

    上記のセキュリティグループの設定に加え、仮想ルータのファイアーウォール機能を併用すれば、さらにセキュリティを強化できます。

    (3) セキュリティグループ利用時の注意事項#

    • Red Hat Enterprise Linux では、OSの標準設定で iptables/ip6tables が有効になっています。
      Red Hat Enterprise Linux を導入する仮想サーバでは、仮想サーバに作成後に iptables/ip6tables を無効化する等、 セキュリティグループとあわせて設定を実施してください。

    3. キーペアの作成#

    • 「コンピュート」⇒「キーペア」画面で、画面右上の「+」ボタンをクリックします。
    • 「キーペア」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。
    項目 必須 設定値例 内容
    キーペア名 必須 "demo_keypair" キーペア名を入力してください。
    AZ 必須 "jp-east-1b" システムを設置するアベイラビリティゾーンを設定してください。
    AZ1:"jp-east-1a"
    AZ2:"jp-east-1b"
    • 「demo_keypair.pem」を保存しますかというメッセージが表示されますので、保存します。
      このファイルは、仮想サーバにログインする際の ssh鍵になります。
      取り扱いには厳重に注意してください。
    • キーペアは、なくした場合に再発行できません。
      キーペアをなくすと仮想サーバに sshでログインできなくなります。

    4. 仮想サーバの作成#

    (1) 仮想サーバの作成#

    • 「コンピュート」⇒「仮想サーバ」画面で、画面右上の「+」ボタンをクリックします。
    • 「仮想サーバ作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
    種別 項目 必須 設定値例 内容
    仮想サーバ AZ 必須 "jp-east-1b AZ" システムを設置するアベイラビリティゾーンを設定してください。
    AZ1:"jp-east-1a AZ"
    AZ2:"jp-east-1b AZ"
    仮想サーバ名 必須 "demo_vm01" 仮想サーバ名を入力してください。
    仮想サーバタイプ 必須 例:"P-1" 仮想サーバタイプ(フレーバー)を入力してください。
    仮想サーバのブートソース 必須 "イメージから起動" 仮想サーバを何から作成するかを示す作成元を設定してください。
    "イメージから起動" の場合、OSイメージから仮想サーバを作成します。
    イメージ 必須 例:"CentOS 6.864bit (English) 01" OSイメージを選択してください。
    デバイスサイズ(GB) 必須 "30" イメージサイズと同じサイズを指定してください。
    FJcloud-O標準では、Windows:80GB、Redhat Enterprise Linux:40GB、CentOS:30GB となります。
    最新のイメージサイズは、機能説明書をご確認ください。
    デバイス名 必須 "a" システムストレージの場合、"a"を入力してください。
    "a" と入力の場合、"/dev/vd"+"a" で "/dev/vda" と扱われます。
    仮想ネットワーク 利用可能なネットワーク 推奨 "demo_intnet" 作成した内部ネットワークの "demo_intnet" をクリックして、「選択」ボタンをクリックしてください。
    アクセスとセキュリティ キーペア 推奨 "demo_keypair" 作成したキーペア を選択してください。
    セキュリティグループ 推奨 "SG_external" 作成したセキュリティグループ を選択してください。
    オプション プロビジョニングスクリプト 任意 下記Note参照 仮想サーバ作成時に実行するスクリプトを記載することが可能です。
    • 「仮想サーバ」画面で、作成した "demo_vm01" が作成開始され、"BUILD" の状態になります。
      状態が "ACTIVE" になれば、仮想サーバの作成完了です。

    Note

    プロビジョニングスクリプト

    以下のように、仮想サーバ作成時にスクリプトを実行させることが可能です。

  • Linux系で、仮想サーバ作成時に全パッケージをアップデートする例
  •     #!/bin/sh  
       yum -y update
    

    (2) グローバルIPアドレスの割り当て#

    • 「ネットワーク」⇒「グローバルIP」と選択した画面で、グローバルIPアドレスを割当ていないIPアドレスの「アクション」⇒「割当」と選択します。
    • 「グローバルIPアドレス割当ポート」に、グローバルIPアドレス割当対象(仮想サーバまたは仮想ルータ)のポートを選択し、「グローバルIP割当」ボタンをクリックします。
    • 割当後、しばらく待つと、sshを利用してログインできるようになります。

    (3) 仮想サーバにログイン#

    • 作成した仮想サーバに、ユーザ名を "k5user" として、仮想サーバ作成時に使用した登録済みキーペアを使用してログインできることを確認します。

    Note

  • ここまでの流れで、特定のサーバから sshでログインできる仮想サーバが作成できます。
  • この後に、Webサービス等必要なサービスを導入してください。
  • サービスの導入後、セキュリティグループのルールを設定して、サービスを公開することが可能です。
    セキュリティグループの設定は、実装サンプルの 2.セキュリティグループの設定 を参照してください。
  • セキュリティグループに加えて、仮想ルータに設定できる ファイアーウォールの利用もあわせてご検討ください。
  • メリット・効果#

    インターネット接続パターンを利用した場合のメリット・効果は以下の通りです。

    • インターネットから安全に仮想サーバを構築、運用、保守可能
    • インターネット上に安全にサービスを公開することが可能

    注意事項#

    • 本パターンは2017年5月時点のFJcloud-O 東日本/西日本リージョン1・2で動作検証しています。

    • より安全性を高めるため、固定のアクセス元からの ssh接続ではなく、以下の接続方法も検討してください。

    • 開発や保守中に、仮想サーバがインターネットから自由にアクセスされないように、セキュリティグループの設定に注意してください。

    • セキュリティグループに加えて、仮想ルータに設定できる ファイアーウォールの利用もあわせてご検討ください。

    • ネットワークアドレスとIPアドレス割当プールは、作成後に変更できません。

    • 内部ネットワークに作成できるサブネットは1つです。

    • 仮想サーバの作成時に、同一セグメントのポートを2つ以上設定しないでください。
      仮想サーバの作成後に、その仮想サーバに同一セグメントのポートを追加することは問題ありません。

    • キーペアは、なくした場合に再発行できません。キーペアをなくすと仮想サーバに sshでログインできなくなります。

    • Red Hat Enterprise Linux では、OSの標準設定で iptables/ip6tables が有効になっています。
      Red Hat Enterprise Linux を導入する仮想サーバでは、仮想サーバに作成後に iptables/ip6tables を無効化する等、セキュリティグループとあわせて設定を実施してください。

      • service iptables stop
      • chkconfig –list iptables
      • chkconfig iptables off
      • chkconfig –list iptables
      • service ip6tables stop
      • chkconfig –list ip6tables
      • chkconfig ip6tables off
      • chkconfig –list ip6tables

    Warning

    仮想サーバに Windows 2012系を選択している場合、初回起動時に画面右側に以下のメッセージが出た場合は、必ず「はい」をクリックしてください。
    「いいえ」をクリックすると、仮想サーバにファイアーウォールが設定されて、リモート接続できなくなります。

    image

    その他#

    • 仮想サーバを作成した後のホスト名が、Linux系(CentOS/RHEL)の場合、デフォルトで以下のように設定されます。
      <仮想サーバ作成時に入力した仮想サーバ名>.fcxlocal