はじめに
OCIのDRG上でNATできる機能がGAになりました。
IPアドレスが重複するネットワーク同士を、専用のNATインスタンスなどを使わずとも接続できるようになりました。
今回は、同じ 10.0.0.0/16 を使用するVCN1とVCN2をDRGに接続し、両方のVCNにある 10.0.0.10 のインスタンス間で通信できるかを確認しました。

コンソール画面で追加された項目

新しくNATポリシーの欄が追加されています。また、アタッチメントには「DRG NATポリシー」という列が追加されていることが分かります。
NATポリシーはルールとアタッチメントという要素で構成されています。


検証構成
VCN1とVCN2は、どちらも 10.0.0.0/16 を使用します。それぞれのVCNに 10.0.0.10 のインスタンスを配置し、DRG経由で疎通できるか確認します。

事前準備
VCNの作成、DRGの作成、それらをアタッチ
・サブネットのルート表はNAT変換を踏まえたルート設定をしておきます。(後述)

・セキュリティリストは10.0.0.0/8内は全許可しておきます。

NAT on DRGのネットワーク構成を考える際には、各VCNの立場になって考えます。
VCN1からVCN2への通信は、宛先10.2.0.0/16へ
VCN2からVCN1への通信は、宛先10.1.0.0/16へ
通信するイメージを持ちます。
お互い自分のネットワークは10.0.0.0/16だと認識します。
| 項目 | 値 |
|---|---|
| VCN1 CIDR | 10.0.0.0/16 |
| VCN2 CIDR | 10.0.0.0/16 |
| 各VCNのインスタンスIP | 10.0.0.10 |
| VCN1からVCN2へ通信する際の宛先 | 10.2.0.0/16 |
| VCN2からVCN1へ通信する際の宛先 | 10.1.0.0/16 |
NATルール
NATルールを関連付けるアタッチメントの場所によって、NATルールが変わります。
今回はNATポリシーはVCN1アタッチメントに関連付け、次のルールを設定しました。
| 変換対象 | 変換前 | 変換後 |
|---|---|---|
| 送信元 | 10.0.0.0/16 |
10.1.0.0/16 |
| 宛先 | 10.2.0.0/16 |
10.0.0.0/16 |
ルーティング
考え方は、「NATポリシーが適用された後にDRGルールが適用される」ということを踏まえて、往復の通信のルーティングを考えます。
行きの通信
- VCN1のインスタンス
10.0.0.10は、VCN2側の別名アドレス10.2.0.10を宛先にして通信します。 - VCN1アタッチメントに関連付けたNATポリシーにより、宛先
10.2.0.10は10.0.0.10に、送信元10.0.0.10は10.1.0.10に変換されます。 - DRGルート表で
10.0.0.0/16をVCN2アタッチメントへ転送します。 - VCN2のインスタンス
10.0.0.10に到達します。
帰りの通信
- VCN2のインスタンスからの応答は、変換後の送信元アドレス
10.1.0.10を宛先にします。 - DRGルート表で
10.1.0.0/16をVCN1アタッチメントへ転送します。 - NATポリシーの逆変換により、宛先
10.1.0.10はVCN1のインスタンス10.0.0.10に戻ります。 - 応答がVCN1のインスタンスに到達します。
この経路に合わせ、DRGルート表からルートディストリビューションのインポートを削除し、静的ルートを設定しました。
疎通確認
VCN1からVCN2のNATされた後の10.2.0.10へpingを送信すると疎通できました。
パケットキャプチャ

各VCNは10.0.0.0/16をLANとして認識して、対向のVCNは違うCIDRとして扱っているのが分かります。
まとめ
同じCIDRを使用するVCN間でも、DRG NATポリシーで宛先と送信元を変換することで、DRG経由の疎通を確認できました。
NATポリシーを関連付けるアタッチメントによってルールの考え方が変わります。
また、FastConnectやIPsec VPNなどを使う場合、静的ルートが記載できないなどのDRGの制約があったり、多拠点接続でCIDRが被っている場合などもDRGの制約やNAT後のCIDR設計を検討する必要があると思います。
参考情報
動的ルーティング・ゲートウェイ (DRG) 概要
https://oracle-japan.github.io/ocidocs/services/networking/dynamic-routing-gateway/




