以前の記事でひとつのNetwork Firewallで複数のVCNを監視するHub&Spokeの構成例を紹介しました。それぞれのVCNにNetwork Firewallを配置するのではなく、ひとつのNetwork Firewallで全VCNのトラフィックを監視するコスト・メリットの大きい構成です。※ただし、Network Firewallの帯域に注意(最大25Gbps)
今回は、クロステナンシー・ピアリングを使用してテナンシー間を跨ったVCNのトラフィックをNetwork FirewallのHub VCNを経由する構成を紹介します。以下のスライドでは、ABCテナンシーからのトラフィックは、一旦XYZテナンシーのNetwork FirewallのHub VCNを経由してそれぞれのSpoke VCNに到達します。逆の場合も同様です。
ここでは左側に別テナンシーを配置したクロステナンシー・ピアリングの設定例ですが、その部分をFast ConnectやVPNで接続するオンプレミスのデータセンターに置き換えた場合の設定方法もほぼ近いですので参考になるかと思います。
設定手順の大きな流れとしては、まず右側テナンシー内のHub&Spokeの構成を完成させます。テナンシー内の動作が確認できたら、次にクロステナンシー・ピアリングの設定を行い、左側のテナンシーのVCNをHub VCNに接続させる設定を追加しています。
※接続するVCNは同一リージョンにある必要があります。異なるリージョンの場合は、追記にあるリモートピアリングを使用します。
Hub&Spoke用のVCN作成とDRGの設定
VCNウィザードを使用して下記アドレスのVCNを3つ作成する
VCN名 | CIDR | パブリック・サブネット | プライベート・サブネット |
---|---|---|---|
Hub_VCN | 172.16.0.0/21 | 172.16.0.0/24 | 172.16.1.0/24 |
Spoke1_VCN | 172.16.8.0/21 | 172.16.8.0/24 | 172.16.9.0/24 |
Spoke2_VCN | 172.16.16.0/21 | 172.16.16.0/24 | 172.16.17.0/24 |
DRGを作成し、作成した3つのVCNをDRGにアタッチする。仮想クラウド・ネットワーク・アタッチメントの作成をクリック
Hub及びSpoke用のDRGルート表を作成する。DRGルート表の作成をクリック
Spoke用のDRGルート表。名前はRT-Spokeとして、下記のようにすべての宛先はHub_VCNへ
Hub用のルート表作成。まず、ルート・ディストリビューションの作成。DRG -> ルート・ディストリビューションのインポートから作成をクリック
以下のように作成。以下のようにそれぞれのSpoke VCNを指定する
再度、DRGのルート表作成をクリックし、名前をRT-Hubとして、拡張オプション -> ルート・ディストリビューションの有効化をチェックし、上記で作成したディストリビューションを選択し作成
作成したDRGルート表を下記のようにそれぞれのVCNアタッチメントに割り当てる。
Network Firewallの作成
ここでは導通テストのために無条件でNetwork Firewallを通過するポリシーを準備する。
まず最初にNetwork Firewallのポリシーをひとつ作成。作成後、ポリシーの詳細設定画面からセキュリティルールの作成をクリックし、すべてデフォルトのままで、最後のアクションだけをトラフィックの許可を指定する。
Network FirewallをHub_VCNのプライベート・サブネットに作成する。ポリシーは上記で作成したものを指定、NATは有効化せずに作成
サブネットのルート表設定
Spoke_VCN間のアクセスがHub_VCNを経由するようにサブネットのルート表を指定する。後で導通テストするコンピュートはパブリック・サブネットに作成するので、パブリック・サブネットのルート表を変更する
Spoke1_VCNのパブリック・サブネット・ルート表に以下を追加。ターゲットはDRG
Spoke2_VCNのパブリック・サブネット・ルート表に以下を追加。ターゲットはDRG
Hub_VCNは、Hub_VCNに入って来るすべてのトラフィックはNetwork Firewallを経由させるためにVCNルート表を新たに作成する。名前をVCN_Routeとして、Hub_VCNのルート表に以下を新規作成する。ターゲットIPは、Network FirewallのプライベートIP。
また、Network FirewallがあるHub_VCNのプライベート・サブネット・ルート表を以下のように編集。ターゲットはDRG
上記で作成したVCNルート表をHub_VCNアタッチメントのルート表に割り当てる
次の導通テストのために、Spoke_VCNのパブリック・サブネットのセキュリティ・リストのICMPはすべて許可に、Hub_VCNのプライベート・サブネットのセキュリティ・リストは、すべてのプロトコルを許可しておくと後々テスト等で便利。※Hub_VCNのプライベート・サブネットのポートを絞れば、Network Firewallに届く前にトラフィックは遮断される
テナンシー内のHub&Spokeの動作テスト
Spoke1_VCNとSpoke2_VCNのパブリック・サブネットにコンピュート・インスタンスを作成する。
Spoke1 VM > Network Firewall経由 -> Spoke2 VMの通信確認
$ ping 172.16.16.15
PING 172.16.16.15 (172.16.16.15) 56(84) bytes of data.
64 bytes from 172.16.16.15: icmp_seq=1 ttl=61 time=6.83 ms
64 bytes from 172.16.16.15: icmp_seq=2 ttl=61 time=3.25 ms
Spoke2 VM -> Network Firewall経由 -> Spoke1 VMの通信確認
$ ping 172.16.8.250
PING 172.16.8.250 (172.16.8.250) 56(84) bytes of data.
64 bytes from 172.16.8.250: icmp_seq=1 ttl=61 time=7.22 ms
64 bytes from 172.16.8.250: icmp_seq=2 ttl=61 time=3.30 ms
Network Firewallの送信・受信パケットのメトリックがカウントされていればNetwork Firewallを経由している
まずここまでで、テナンシー内のHub&Spokeの設定は完成です。次は、クロステナンシー・ピアリング経由でのVCNをSpokeのひとつとして追加していきます
クロステナンシー・ピアリングの設定
それぞれのテナンシーにアクセスできるユーザーを用意し、グループに割り当てる。ここでは、便宜上Administratorを使用している
ソース・テナンシ (DRGにアタッチする側) | ターゲット・テナンシ (DRGを持つ側) | |
---|---|---|
テナンシ名 | ABC | XYZ |
テナンシOCID | ocid1.tenancy.oc1..aaaaaaaajtnwr5efmqzvovgxufzj6ezwpjglt6ofp2mkmzpeqro5ic6hhx5q | ocid1.tenancy.oc1..aaaaaaaaf7srpqhw4gczc3p5eqwa76xced3dwm7fppw5f6regxxumqcsrmoq |
グループ名 | Administrators | Administrators |
グループOCID | ocid1.group.oc1..aaaaaaaalvjpgvndq7ezukr4gbrwpgaofs333hymbpzyepulrusqxs6ez55a | ocid1.group.oc1..aaaaaaaagwpfilfdiqb2l4hxwa3jzzavtqztcpfqll5m7q7kerybo6sibewa |
必要なポリシーをそれぞれのテナンシーに割り当てる
□ソース・テナンシ用・ポリシー
define tenancy ターゲット・テナンシ名 as ターゲット・テナンシOCID
define group ターゲット・グループ名 as ターゲット・グループOCID
endorse group ソース・グループ名 to manage drg in tenancy ターゲット・テナンシ名
admit group ターゲット・グループ名 tenancy ターゲット・テナンシ名 to manage drg-attachment in tenancy
例)
define tenancy XYZ as ocid1.tenancy.oc1..aaaaaaaaf7srpqhw4gczc3p5eqwa76xced3dwm7fppw5f6regxxumqcsrmoq
define group Administrators as ocid1.group.oc1..aaaaaaaagwpfilfdiqb2l4hxwa3jzzavtqztcpfqll5m7q7kerybo6sibewa
endorse group Administrators to manage drg in tenancy XYZ
admit group Administrators of tenancy XYZ to manage drg-attachment in tenancy
□ターゲット・テナンシ用・ポリシー
define tenancy ソース・テナンシ名 as ソース・テナンシOCID
define group ソース・グループ名 as ソース・グループOCID
endorse group ターゲット・グループ名 to manage drg in tenancy ソース・テナンシ名
admit group ソース・グループ名 tenancy ソース・テナンシ名 to manage drg in tenancy
例)
define tenancy ABC as ocid1.tenancy.oc1..aaaaaaaajtnwr5efmqzvovgxufzj6ezwpjglt6ofp2mkmzpeqro5ic6hhx5q
define group Administrators as ocid1.group.oc1..aaaaaaaalvjpgvndq7ezukr4gbrwpgaofs333hymbpzyepulrusqxs6ez55a
endorse group Administrators to manage drg-attachment in tenancy ABC
admit group Administrators of tenancy ABC to manage drg in tenancy
ソース・テナンシー側で、VCNウィザードを使用して下記アドレスのVCNを作成する
VCN名 | CIDR | パブリック・サブネット | プライベート・サブネット |
---|---|---|---|
任意 | 192.168.0/21 | 192.168.0.0/24 | 192.168.1.0/24 |
ターゲット・テナンシ側のDRGのOCIDを指定して作成する。エラーになる場合は、上記のIAM設定が間違っている
下記のように、パブリック・サブネットのルート表に追加。ターゲットはDRG。また、セキュリティ・リストでICMPを許可しておく
Hub用のDRGルート表にクロステナンシー経由のVCNを宛先に追加する。作成済みのRT-Hubのルート・ディストリビューションに以下を追加する
それぞれのSpoke_VCNのパブリックサブネットのルート表に追加。ターゲットはDRG
クロステナンシー経由での動作テスト
ソース・テナンシー側のVCNのパブリック・サブネットにコンピュート・インスタンスを作成する
ソース・テナンシー側 VM > Network Firewall経由 -> Spoke1 VMの通信確認
$ ping 172.16.8.250
PING 172.16.8.250 (172.16.8.250) 56(84) bytes of data.
64 bytes from 172.16.8.250: icmp_seq=1 ttl=61 time=2.53 ms
64 bytes from 172.16.8.250: icmp_seq=2 ttl=61 time=1.67 ms
ソース・テナンシー側 VM > Network Firewall経由 -> Spoke2 VMの通信確認
$ ping 172.16.16.15
PING 172.16.16.15 (172.16.16.15) 56(84) bytes of data.
64 bytes from 172.16.16.15: icmp_seq=1 ttl=61 time=2.84 ms
64 bytes from 172.16.16.15: icmp_seq=2 ttl=61 time=1.69 ms
設定は以上です。あっちこっちと色々とやることの多い設定なので、混乱しがちでうまくいかない場合も多いかと思います。うまくいかない場合は、ルート表やセキュリティ・リストの記述漏れ・間違いの確認、プライベート/パブリック・サブネットで間違っていないか、Network Firewallまで通信が届いているのか等、落ち着いてチェックをすると良いかと思います。
Network Firewall自体の設定をしたことがない方は、シンプルなネットワーク設定で動作を体験してみることをお勧めします。また、ここではポリシーの設定やIDS/IPSの動作は触れていませんが、以下の記事にはNetwork Firewallでの不正アクセスの検出やブロックなどの動作検証の方法なども紹介しています。
OCI Network Firewallによるトラフィック監視 (Intra-VCNルーティング)
OCI Network Firewallでサイバー攻撃を防ぐ
OCI Network Firewallを使用したハブ&スポーク構成
OCIチュートリアル
追記
上記の構成は、同一リージョンの場合の設定です。異なるリージョンの場合は、以下のようにリモートピアリングを使用する必要があります。
この設定方法ですが、ソース・テナンシー側でVCNを作成するまでは同じです。以降のVCNからDRGアタッチメントの作成でなく、ソース・テナンシー側でDRGを新規に作成します。
※テナンシー間でのリモートピアリングの場合は、以下のIAMポリシーがそれぞれのテナンシーに追加で必要
□ソース・テナンシ用・ポリシー
Endorse group ソース・グループ名 to manage remote-peering-to in tenancy ターゲット・テナンシ名
Endorse group Administrators to manage remote-peering-to in tenancy XYZ
□ターゲット・テナンシ用・ポリシー
Admit group ソース・グループ名 of ソース・テナンシ名 to manage remote-peering-to in tenancy
Admit group Administrators of tenancy ABC to manage remote-peering-to in tenancy
ソース・テナンシー側のリモートピアリングの接続の確立をクリック
ターゲット・テナンシー側のリモート・ピアリングのリージョンとOCIDを指定する。接続が失敗する場合は、IAMポリシーの設定が間違っている。
ソース・テナンシー側のVCNからソース・テナンシーのDRGにアタッチする
接続作成後、下記のようにパブリック・サブネットのルート表に追加。ターゲットはDRG。また、セキュリティ・リストでICMPを許可しておく
Hub用のDRGルート表にリモート・ピアリング経由のVCNを宛先に追加する。作成済みのRT-Hubのルート・ディストリビューションに以下を追加する
それぞれのSpoke_VCNのパブリックサブネットのルート表に追加。ターゲットはDRG
以降は、導通テストで動作を確認する