皆さま、メリークリスマス!y.takanashiです。
本記事はOracle Cloud Infrastructure Advent Calendar 2024 カレンダー1のラストを飾るDay25として執筆しています。
OCIのアドベントカレンダーには、これで3年連続の参戦となります!🎉
過去記事は以下からご覧いただけます。
Cloudii ブログ - 「GitHub リポジトリをOCI DevOpsと連携」(2023年)
Cloudiiブログ - 「【Oracle Cloud】オブジェクト・ストレージ対応のストレージ管理サービスについて」(2022年)
ちなみに今年(2024年)はこの記事も含めて4本投稿することができました!👇
Cloudiiブログ - 「OCI ロギングでカスタム・ログを収集する」
Cloudiiブログ - 「OCI アイデンティティ・ドメインを使用してAWSにログインする」
Cloudiiブログ - 「OCI セキュリティ・ゾーン + クラウド・ガードで可用性を高める」
昨年(2023年)は 16本の記事を投稿していましたが、今年は忙しさに追われ、投稿数が減ってしまいました…。
来年(2025年)は 10本を目標に、より充実した内容を皆様お届けしたいと思います💪✨
さて今回は 動的ルーティング・ゲートウェイ(以下DRG) の構成する要素と役割について、簡単にですが紹介していきたいと思います。
※注意
本記事はあくまで個人の検証に基づく内容です。
詳細情報については、以下のドキュメントをご参照ください。
OCI公式ドキュメント - 「動的ルーティング・ゲートウェイ」
Speaker Deck - 「外部接続詳細 - 動的ルーティング・ゲートウェイ(DRG)」
特にSpeaker Deckの記事は、ポイントを押さえたわかりやすい構成で、私自身も日頃から参考にさせていただいています。
この場を借りて、執筆者の皆さまに感謝を申し上げます!🙇
目次
DRGとは?
DRGは、OCIネットワークの中核を担う仮想ネットワーキング用ルータ機能を提供するサービスです。
DRGは、以下のような場面で使用されます。
- 同一テナンシ内や異なるテナンシ間でVCNを接続する場合
- サイト間VPNやFastConnectを利用した専用線接続時
- オンプレミス環境や他クラウドとの接続時
DRGはOCIネットワークの中核的役割を果たし、多様なネットワーキング要件に対応可能な柔軟性と高い機能性を提供します。
ちなみに名前に「ゲートウェイ」と付いていますが、DRGはOCIの他のゲートウェイ系サービス(例:インターネット・ゲートウェイなど)とは異なり、VCNと同じカテゴリに属する独立したネットワークサービスです。
実際、OCIのネットワーク・ビジュアライザ※を使用してトポロジを確認すると、DRGがVCNと同じ階層で構成されていることが確認できます(画面の丸部分のサービス)。
一方、他のゲートウェイサービスはVCN内に含まれる形で表示されます。
※ネットワーク・ビジュアライザ:OCI内のネットワーク構成を視覚的に表示するツール。
構成要素
DRGは以下のリソースから構成されます。
- VCNアタッチメント
- 仮想回線アタッチメント
- IPSecトンネル・アタッチメント
- リモート・ピアリング接続アタッチメント
- ループバック・アタッチメント
- クロステナンシ・アタッチメント
- DRGルート表
- ルートディストリビューションのインポート
- ルートディストリビューションのエクスポート
以降はそれぞれのリソースについて説明します。
アタッチメント
アタッチメントは、DRGが他のネットワークリソースと接続するための構成要素であり、具体的な接続リソースを指します。
アタッチメントを作成することで、DRGを中心に構築されたハブ型のカスタムネットワークを実現できます。
これにより、オンプレミス環境や他クラウド、異なるテナンシやリージョンにまたがる多様なネットワークを効率的に統合・管理することが可能です。
以下は、アタッチメントの種類とユースケースの対応表です。
アタッチメント | ユースケース |
---|---|
VCNアタッチメント | 同一テナンシ内でのVCN接続 |
仮想回線アタッチメント | FastConnectによるオンプレミスや他クラウドとの接続 |
IPSec トンネル・アタッチメント | サイト間VPNでオンプレミスや他クラウドと接続 |
リモート・ピアリング接続アタッチメント | 別リージョンのVCNと接続 |
ループバック・アタッチメント | DRG内で、仮想回線アタッチメントからIPSecトンネル・アタッチメントへのトラフィック転送 |
クロステナンシ・アタッチメント | 異なるテナンシ間でのVCN接続 |
アタッチメントの作成方法はリソースごとに異なります。
以下のアタッチメントは、「xxアタッチメントの作成」から手動で作成可能です。
- VCNアタッチメント
- リモート・ピアリング接続アタッチメント
- クロステナンシ・アタッチメント
以下のアタッチメントは、関連リソースをDRGとアタッチした時に自動作成されます。
そのため、DRGの詳細画面からの手動で作成することはできません。
- 仮想回線アタッチメント
- IPSecトンネル・アタッチメント
- ループバック・アタッチメント
ルート・ディストリビューション
ルート・ディストリビューションは、各アタッチメントからルートを動的にインポートまたはエクスポートする機能を提供します。
ルート・ディストリビューションでは、以下の要素をステートメントとして定義します。
- 一致条件:アタッチメントの種類や特定のアタッチメントを指定
- 優先度:ステートメントの適用順序
- アクション:現時点ではルーティングを許可する"ACCEPT"のみサポート
DRGを作成すると、以下の2つのディストリビューションが自動的に作成されます。
- Autogenerated Import Route Distribution for VCN Routes:VCNアタッチメント用ルート・ディストリビューション
- Autogenerated Import Route Distribution for ALL Routes:その他のルート・ディストリビューション
ルート・ディストリビューションには「インポート」と「エクスポート」 の2種類があります。
インポート
インポートは、DRGに関連付けられたアタッチメントのうち、ステートメント条件に一致するルートを動的に関連付けられたDRGルート表に割り当てる機能です。
例えば以下のようなネットワーク構成を考えます。
- AWSとOCI間:動的にルートを管理
- OCI内:静的にルート・ルールを設定
デフォルトでは、インポートの設定は「Match All(すべてのアタッチメントからのルートを許可)」となっており、全てのアタッチメントのルートが動的にインポートされます。
動的管理を特定の範囲(この例ではAWS-OCI間)に絞る場合、以下の手順でステートメントを定義します。
- 「ルート・ディストリビューション文の追加」を選択
- 以下の内容でステートメントを作成
- 一致タイプ:アタッチメント
- アタッチメント・タイプ・フィルタ:IPSecトンネル
- アタッチメント:任意のアタッチメントを選択(ここでは「」)
- アクション:ACCEPT(変更不可)
上記はVCNアタッチメントのみにルールを適用するため、Autogenerated Import Route Distribution for VCN Routesにステートメントを定義します。
さらに、DRGルート表の「インポートの有効化」を無効化することで、関連アタッチメントのルート・ルールを静的に管理することも可能です。
エクスポート
エクスポートでは、各アタッチメントに割り当てられたDRGルート表のルートを該当アタッチメントに提供する機能です。
DRGの作成時に「Default Export Route Distribution for DRG: DRG」という名前で作成されます。
すべてのルートを許可する「Match All」のみがサポートされており、新規ルールの作成はできません。
エクスポートの設定は特段のカスタマイズが不要なため、通常あまり気にする必要はありません。
DRGルート表
DRGルート表は、各アタッチメントからDRGに入ってくるパケットのルーティングを制御するためのルート表です。
DRGの作成時に以下のルート表が自動生成され、それぞれ特定のリソースにアタッチされます。
- Autogenerated Drg Route Table for RPC, VC, and IPSec attachments...サイト間VPNやFastConnect、リモート・ピアリング接続を作成時に自動でアタッチされるルート表
- Autogenerated Drg Route Table for VCN attachments...VCNアタッチメントを作成した時に自動的にアタッチされるルート表
DRGルート表に記載するルート・ルールはルート・ディストリビューションの定義に従い自動生成される「動的ルート・ルール」とユーザーが手動で作成する「静的ルート・ルール」の2種類が存在します。
動的ルート・ルールは「すべてのルート・ルールの取得」から確認可能です。
静的ルート・ルールは「静的ルート・ルールの追加」から以下の内容を設定して作成します。
- 宛先CIDRブロック
- 次のホップ・アタッチメント・タイプ(仮想クラウド・ネットワーク、リモート・ピアリング接続、クロステナンシ)
- 次のホップ・アタッチメント(選択したアタッチメント・タイプの具体的なアタッチメントを指定)
補足でルート・ルールの宛先CIDRが競合した時、静的ルート・ルール > 動的ルート・ルールの順で評価され、動的ルート・ルールは「競合」の状態となり、パケットはドロップされます。
ちなみに、DRGルート表は「DRGルート表の作成」から手動で作成することも可能です。
- DRGルート表名
- 静的ルート・ルール
※最大15個まで静的ルート・ルールを追加可能です。- 宛先CIDRブロック
- 次のホップ・アタッチメント・タイプ
- 次のホップ・アタッチメント
- ルート・ディストリビューションのインポートの有効化
- ECMP(等コスト・マルチパス・ルーティング)の有効化
※ECMPが有効の場合:複数の仮想回線やIPSecトンネルから同一ルートがインポートされると、DRGルート表に追加され、ECMPルーティングが適用されます。
ECMPが無効の場合:競合は静的優先度に従って解決されます。
作成後、対象のアタッチメントで「編集」を選択、作成したDRGルート表を割り当てて「変更の保存」を実施します。
変更後、作成したルート表がアタッチされていることがわかります。
このように、DRGルート表は各アタッチメントからDRGに向かうパケットのルーティングを制御します。
一方でDRGからVCNに向かうパケットのルーティングを制御するVCNルート表で制御されます。
これら2つのルート表の関係を示した図は以下の通りです。
VCNルート表については本内容の範囲外となり、詳細は以下のドキュメントをご覧ください。
ネットワーキング・シナリオ
ここでは以下の構成を例に、DRGを経由したルーティングの設定方法を解説します。
以下が要件です。
- AWSとOCI間:既にサイト間VPNは設定済
- 通信経路:AWSからの通信はNetwork Firewall(10.0.0.2)を経由
- サーバ到達:Network Firewall(以下NFW)を経由後、DRGアタッチメントを使用してサーバ(192.168.32.2)に到達
- VCN1とVCN2:ローカル・ピアリングは未設定
通常、ルート・ディストリビューションのインポートのステートメントを用いれば動的ルート・ルールで制御可能です。
しかし、このシナリオではサイト間VPN用の接続ルールでネクスト・ホップがVCN1を経由せずVCN2にパケットが直接到達してしまい、NFWを通過しない問題が発生します。
実際、IPSecトンネル・アタッチメントに関連付けられたルート表(「Autogenerated Drg Route Table for RPC, VC, and IPSec attachments」)はデフォルト設定で以下の動的ルート・ルールをインポートしています。
要件を満たすため、以下のような設定を行います。
- AWSとOCI間:動的にルートを管理
- OCI内:静的にルート・ルールを設定
これにより、AWSからの通信はすべてNFWを経由してサーバに到達する構成を実現できます。
最初にAWS-OCI間のみを動的にルート・ルールを生成するよう、ルート・ディストリビューションの変更を実施します。
「2.2.1 インポート」で説明した内容と一部重複しますが、以下の手順でルート・ディストリビューションを変更します。
- 対象:Autogenerated Import Route Distribution for ALL routes(IPSecトンネル・アタッチメント用)
- 変更内容:
- 一致タイプ:アタッチメント・タイプ
- アタッチメント・タイプ:IPSecトンネル
この設定により、IPSecトンネルのみが動的にルート・ルールを広報するようになり、AWSとOCI間のみが動的に管理されます。
続いてAWS→OCIに通る通信を全てNFWに向けるよう、IPSecトンネル・アタッチメント用ルート表(ここでは「Autogenerated Drg Route Table for RPC, VC, and IPSec attachments」)の設定を行います。
DRGルート表の詳細画面から「静的ルート・ルールの追加」を選択、以下の手順でルート・ルールを追加します。
- 宛先:10.0.0.0/16
- 次のホップアタッチメント・タイプ:仮想クラウド・ネットワーク
- 次のホップアタッチメント:Hub
- 宛先:192.168.0.0/16
- 次のホップアタッチメント・タイプ:仮想クラウド・ネットワーク
- 次のホップアタッチメント:Hub
次にOCI内を静的にルート・ルールを管理する設定を実施します。
最初にVCN1のVCNアタッチメント(「Hub」)の設定を実施します。
「転送ルーティング」という方式を使用して、DRGからVCN1に入るすべての通信をNFWに送る設定を行います。
転送ルーティングについての詳細は以下のドキュメントをご覧ください。
OCI公式ドキュメント - 「ハブVCN内の転送ルーティング」
転送ルーティングを実現するために、VCNルート表の作成し、VCNアタッチメントへの関連付けを行います。
NFW用のVCN(「ここでは「VCN1」)のルート表作成画面から「ルート表の作成」を選択、以下のルート・ルールを設定します。
- ターゲット・タイプ:プライベートIP
- 宛先タイプ:CIDRブロック
- 宛先CIDRブロック:192.168.0.0/16
- ターゲット選択:10.0.0.2(NFWのプライベートIP)
設定後、VCNアタッチメントに関連付けます。
対象アタッチメントの「編集」からVCNルート表の関連付けを「なし」→「既存の選択」に変更、作成したVCNルート表を選択、「変更の保存」を行います。
※ルート表関連付け後にリージョン名(例: Japan East(Tokyo))が表示されることがありますが、これはOCI側の仕様であり、設定は正常に反映されています。
NFWを通過後、仮想マシンがあるVCN2に通信を送るために、NFW用サブネットのルート表(ここでは「RT-Sub1」を設定します。
NFW用サブネットに関連付けられているルート表に以下の設定を追加します。
- ターゲット・タイプ:動的ルーティング・ゲートウェイ
- 宛先タイプ:CIDRブロック
- 宛先CIDRブロック:192.168.0.0/16
ターゲット動的ルーティング・ゲートウェイ:DRG
これで、VCN2への通信がすべてDRG経由で送信されるようになります。
VCN2のアタッチメント(ここでは「Spoke」)に通信を転送するために、DRGルート表を作成し、Hubに関連付けます。
ここではDRGルート表を新規作成する方法で設定します。
DRGルート表の詳細画面から「DRGルート表の作成」を選択、以下のルート・ルールを追加します。
- 名前:任意(ここでは「RT-VCN1-to-DRG」)
- 宛先CIDRブロック:192.168.0.0/16
- 次のホップ・アタッチメント・タイプ:仮想クラウド・ネットワーク
- 次のホップ・アタッチメント:Spoke
ルート・ディストリビューションのインポートの有効化:無効 - ECMPの有効化:無効
作成後、VCNアタッチメントの詳細画面の「編集」からDRGルート表を変更、「変更の保存」を選択して関連付けます。
最後にVCN2用サブネット・ルート表とDRGルート表を以下のルート・ルールで設定します。
- サブネット・ルート表
- ターゲット・タイプ:動的ルーティング・ゲートウェイ
- 宛先タイプ:CIDRブロック
- 宛先CIDRブロック:10.0.0.0/16,172.16.0.0/16
- ターゲット動的ルーティング・ゲートウェイ:DRG
- DRGルート表
- 宛先CIDRブロック:0.0.0.0/0
- 次のホップ・アタッチメント・タイプ:仮想クラウド・ネットワーク
- 次のホップ・アタッチメント:Hub
これで、すべてのルート・ルールの設定が完了しました。
今回のシナリオを一枚にまとめると、以下のようになります。
まとめ
DRGは、OCIネットワークの中核を担う仮想ネットワーキング用ルータ機能を提供するサービスです。
以下のような場面で活用されます。
- 同一テナンシ内や異なるテナンシ間でVCNを接続する場合
- サイト間VPNやFastConnectを利用した専用線接続時
- オンプレミス環境や他クラウドとの接続時
DRGは主に以下の要素から構成されます。
- アタッチメント:
- DRGが他のネットワークリソースと接続するための構成要素。アタッチメントを作成することで、DRGを中心に構築されたハブ型のカスタムネットワークを実現
- アタッチメントは以下の2種類がある
- 手動で作成するリソースと
- DRGと関連付けた時に自動作成されるリソース
- ルート・ディストリビューション:
- 各アタッチメントからルートを動的にインポートまたはエクスポートする機能を提供
- インポート:ルート・ルールの管理範囲を制限可能
- エクスポート:DRGルート表のルートを該当アタッチメントに提供(デフォルトは「Match All」でカスタマイズ不可)
- 各アタッチメントからルートを動的にインポートまたはエクスポートする機能を提供
- DRGルート表:
- DRGに入ってくるパケットのルーティングを制御
- 最大15個まで静的ルート・ルールを追加可能
- ルート・ルールの宛先が競合した場合、静的 > 動的の順で評価され、動的ルート・ルールは無効化される
以上となります。
この記事を通じて読者の皆様の問題解決の一助となれば幸いです。
どうぞ良い年末年始をお過ごしください~!