クラウド4社とオンプレミスのハイブリッド環境の接続イメージを、一枚絵に描いてみた

この記事は[BBSakuraNetworksアドベントカレンダー2022](https://adventar.org/calendars/7980)の21日目の記事です。


## 目的
- 各クラウドとのプライベート接続ですが、なかなか簡単に検証できるものではないし、イメージもしづらい
- 各クラウドで仕組みとして似てるところは多い、横並びで概念のレイヤーを並べてみたい


## 対象クラウド

> だいたいこの辺抑えておけばいいのかなという個人的なチョイスです。

- AWS
- Azure
- GCP (Google Cloud Platform)
- OCI (Oracle Cloud Infrastructure)


### 前提条件
大前提として、EndUserから見て接続方式は　"L2接続"　かつ　"プロバイダ"　を経由する形としてます。（EndUser自身が直接各クラウド事業者と調整して繋ぐ場合は、demarcation(境界線)や接続サービス利用の選択肢が変わってくるためご注意ください。）

- プロバイダ一覧
    - AWS
        - https://aws.amazon.com/jp/directconnect/partners
    - Azure
        - https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-locations
    - GCP
            - https://cloud.google.com/network-connectivity/docs/interconnect/concepts/service-providers?hl=ja
    - OCI
        - https://www.oracle.com/cloud/networking/fastconnect/regions-by-partner/


## 接続イメージの絵

4クラウドで接続イメージが付きやすいよう、一枚絵にしてみました。上記の順番で上から見てもらえればと思います。
利用の想定は、VPCネットワークへそのまま繋がり、Server同士のEndtoEnd通信ができるシンプルな構成のみに絞ってます。(AWSでいうTransitGateway的な機能は使わない、という意味)


![CPEからクラウド内InstanceまでのEndtoEnd.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47441/42a778b7-7801-eea8-d1a0-3f2541cfc98b.jpeg)



絵の補足は下記の通り

- VPC内はなるだけルーティングの流れを意識して書きましたが、各クラウド毎に仕様も違うので結構雑に書きました。特にSecurity(SecurityGroup/Firewall)は一番雑、いつか気が向いたら整理します。
- attach/detachまわり（青線の片側四角）は、四角がない側のリソースを先に準備した上で、四角がついてる側リソースを作るイメージで描きました。
    - 変更はGUIベースで確認、CLIまわりの細かな動作までは確認しきれてないので、そのへんは自身で補完していただければと思います。
- IPアドレスとかVLANはイメージしやすいように振ってます、あくまで例として見てもらえればと思います。




## 構築のポイント

>　絵を元に、細かいところの注意点だけ書きました。


### クラウド全般

- BGP-ASNは以下の通り

    |クラウド名|ASN|設定対象リソース|備考|
    |---|---|---|---|
    |AWS|10124|VGW or DGW|プライベートASNの範囲で変更可能|
    |Azure|12076|ExpressRouteCircuit||
    |GCP|16550|Cloud Router||
    |OCI|31898|FastConnect||

- Securityまわりの紐付け
    - [Instance]のところは、実際はNIC（Eth0とかEth1とか）になるので、Securityまわりの紐付け時は注意が必要
    - 複数のEthernet-Interfaceを作成してる場合、このへんでよくハマる
        - AWSなんかInterfaceにSecurityGroupが紐づくので特に注意が必要
    - パケットの気持ちになって、どのInterfaceから出ていくかをイメージすることが大切
- SSHの鍵共有化
    - クラウドによってはVPCで共通のSSH鍵を仕込めるマネージドサービスを提供してくれてる場合が多いので、使うと便利
        - Instanceを増やしても共通の鍵で入れる

### AWS
- dxconとVIFの紐付けは、付け替え先のdxconが未紐付け状態であれば付け替え可能（AWSホスト型接続の場合）
- ちなみにDXの環境が東京でも、大阪のVPCと接続することは簡単にできます
    - DGWに紐付けるVGW＆VPCを大阪にすればOK

### Azure
- 他と比較し、ExpressRouteは仕様が独特
    - 必ずPri/Secの1セットでの作成が必須
    - VLANは必ずPri/Sec統一
    - サブネットは/30のネットマスク固定、かつ割当ルールも決まってる
    - QinQによるダブルタグでCPEまで転送される
        - プロバイダのサービスによってはdot1q変換して転送してくれるので、ここはプロバイダの仕様をちゃんと確認する
    - ServiceKeyを用いた連携が必要
        - 事前にExpressRouteCircuitを作成し、生成されたServiceKeyを用いてプロバイダ側と連携する仕組みが多いので、手順周りはプロバイダが提供してるドキュメントを理解しておく必要あり

### GCP
 - PairingKeyを用いた連携が必要
    - 事前にInterConnect　VLAN Attachmentを作成し、生成されたPairingKeyを用いてプロバイダ側と連携する仕組みが多いので、手順周りはプロバイダが提供してるドキュメントを理解しておく必要あり


### OCI


## その他
クラウド利用のための権限やらユーザー管理も理解しておく必要があります。
- 共通
    - IAM
- 個別
    - AWS
        - AWSアカウント全体の概念やスイッチロールなど
    - Azure
        - サブスクリプション
        - ディレクトリ
        - リソースグループ
        - 課金プロファイル
        - IAMも、AzureADロール、Azureロール、それぞれの複雑な管理が必要
    - GoogleCloud
        - プロジェクトの概念
    - OCI
        - テナンシの概念

などなど、、、

## まとめ
個人的に一枚絵はここ数年で作っておきたい資料だったので、それが作れただけで満足です。
構築のポイントは、また気づいたときに追加してこうとは思います。おわり。