AWS で Catalyst Center を動かしてみた話

この記事はシスコの有志による [Cisco Systems Japan Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cisco) シリーズ 2 の 9 日目として投稿しております。

# はじめに
この記事は Catalyst Center を Amazon Web Services (AWS) で動かしてみた時の体験談を中心にお送りいたします。ちなみに私、Cisco 歴はそこそこ長いのですが Qiita と AWS は初心者です。どうぞよろしくお願いいたします。

:::note info
Cisco DNA Center は Catalyst Center にブランド変更されております。しばらくはあちこちに両方の名前が出てくるかと思いますが、同じ製品を指しておりますので、何卒よろしくお願いいたします。
:::

# 展開方法の選択
AWS 上に Catalyst Center を展開し、それ以外の管理対象機器はオンプレ側に設置します。

[AWS に Catalyst Center を展開する方法](https://www.cisco.com/c/ja_jp/td/docs/cloud-systems-management/network-automation-and-management/dna-center/dna-center-va/aws/deploy/b_cisco_dna_center_on_aws_deployment_guide/m_getting_started_with_cisco_dna_center_on_aws.html)としては、大きく分けて以下の3つがあります。
* Global Launchpad を使った自動展開
* AWS CloudFormation での手動展開
* AWS Marketplace での手動展開

Global Launchpad を使うと VPC や IPsec VPN なども自動で作ってくれるのですが、今回はその辺を手動でやりたかったので、二番目の AWS CloudFormation を使ってみました。

[AWS とオンプレ側の接続](https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)は、AWS 側に複数の VPC があるなどの場合は Transit Gateway (TGW) を使う方法が有効ですが、今回はシンプルに TGW を使わない単純な 1:1 の Site-to-Site VPN 接続を作成します。

# リージョンの選択
AWS はリージョンによって利用料金が変わってきます。Catalyst Center は r5a.8xlarge (32 vCPU、256GB RAM) というかなり大きいインスタンスを使うので、リージョンの選択はコスト面でも重要です。

結論から言えば **Catalyst Center はムンバイ (ap-south-1) リージョンが割安** のようです。どうやら特定の種類 (AMD系?) のインスタンスはムンバイが安めに設定されているようで、ご参考までに[リージョン別の Catalyst Center 概算費用へのリンクを提供しているページ](https://www.cisco.com/c/en/us/td/docs/cloud-systems-management/network-automation-and-management/catalyst-center/catalyst-center-va/aws/cost-calculator/b_cc-aws-cost-calculator.html)から確認したものがこちらです。短期間の検証であればサーバを調達するより割安になることもあるかもしれません。 （2024年12月現在、筆者調べ、オンデマンド価格）

* オレゴン (us-west-2)　 $1,805.80 / 月
* 東京 (ap-northeast-1)　 $2,179.48 / 月
* ムンバイ (ap-south-1)　 $1,389.73 / 月

実際にムンバイに Catalyst Center を構築して日本からしばらく使いましたが、そこまでネットワーク遅延が気になることもなく、ごく小規模な検証環境ではありましたが、実用上の問題はありませんでした。

# インフラの準備

![202412-AWS-Catalyst-Center-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/5b50c05e-cfe7-3a26-8b10-cb64b811cb84.png)

#### オンプレ側
自宅ラボ側（オンプレ側）のインフラとしては、Catalyst Center の管理対象としての Catalyst 9800-CL ワイヤレス コントローラとその配下のアクセスポイント、AWS への Site-to-Site VPN 接続用には、今回は仮想版の ASAv を使います。

（図には示していませんが、自宅のインターネット接続ルータでは外部から UDP の 4500 番ポート宛の通信を ASAv へポートフォワーディングする設定をしました。また C9800-CL、AP、インターネット接続ルータもしくはローカルな DNS サーバで、AWS 宛の通信が ASAv へ向くようにルーティングの設定をしました）

#### AWS 側

###### VPC、サブネット、仮想プライベートゲートウェイ
AWS 側の設定は、まず VPC を一つ作成して、その VPC の中にサブネットと仮想プライベートゲートウェイを一つずつ作成します。作成した VPC の VPC ID を控えておくと良いです。

:::note info
IPアドレスはオンプレ側とかぶらないように設計します。私はオンプレ側を 10.0.0.0/17、VPC を 10.0.237.0/24、サブネットを 10.0.237.0/27 としました。
:::

###### ルートテーブル
作成した VPC のページを開き下の方を見るとルートテーブルが一つできていると思いますので、そのルートテーブルを開いて、ルート伝播タブを選択し、「ルート伝播の編集」ボタンから、先ほど作成した仮想プライベートゲートウェイの伝播を有効化します。

###### セキュリティグループ
次に、セキュリティグループを編集します。左のメニューからセキュリティグループをクリックして一覧を出し、作成した VPC の VPC ID に紐づいたデフォルトのセキュリティグループを探して開きます。「インバウンドのルールを編集」ボタンから、「ルールを追加」ボタンを押し、オンプレ側から AWS 側へのアクセスを許可するためのルールを追加します。 **一番雑で早いやり方** は、タイプ「すべてのトラフィック」に対してソースで「カスタム」を選び、その横のボックスでオンプレ側のネットワークを CIDR で指定して入力することです。これでオンプレ側から AWS の VPC へ通信できるようになります。

![inbound-rules.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/b05002c9-226d-5403-996a-39200141f4a4.png)

###### Site-to-Site VPN
次に、Site-to-Site VPN を作成します。同時にカスタマーゲートウェイも自宅ラボのグローバルアドレスを指定して新規で作成します。

| ![vpn1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/9e7394df-178f-dfaa-7b31-a34416b884bb.png) | ![vpn2-fixed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/42fb17b6-9904-7a26-ad57-424703a9d6be.png) |
|:-:|:-:|

この設定で大事なところ、 **赤い四角で囲っています** が、 **ローカル IPv4 ネットワーク CIDR** と **リモート IPv4 ネットワーク CIDR** のところ、 **必ず 0.0.0.0/0 にしてください。** （[理由はこちら](https://repost.aws/ja/questions/QUE3zFxRSHR2CkjNXT-T2Y3w/unable-to-ping-remote-side-of-cisco-vti-tunnel-or-establish-bgp-session)） **お約束です。** どうしてもという方は他の設定をお試しいただければと思いますが、 **私のようにドハマりしても知りません（涙）**

その後、作成した VPN を開き、ページ右上の「設定をダウンロードする」ボタンから ASA のサンプルコンフィグをダウンロードします。ikev1 と ikev2 が選択できます。ちなみに Cisco 機器は ASA の他に ASR 1000, CSRv, ISR (いずれも IOS コンフィグ) に対応していました。

ASA の ikev2 のサンプルコンフィグファイルをダウンロードしてから、マニュアルで若干の編集が必要になります。

* `<outside_interface>` を実際のインターフェイス名（例えば `outside` ）に全て置き換える必要があります。
* BGP を使う場合、BGP 設定の `network` コマンドはオンプレ側の環境に合わせてアドレスを書き換える必要があります。私の場合は `network 192.168.100.0 mask 255.255.255.0` を `network 10.0.0.0 mask 255.255.128.0` に変更しました。
* IKEv2 を使う場合、`Tunnel 100` と `Tunnel 200` の 2 つのインターフェイス設定が含まれますが、なぜかどちらも同じ `nameif vti-interface` という名前になってしまっていてエラーになるので、`Tunnel 2` のほうを `nameif vti-interface-2` に変更しました。
* コンフィグファイルでは DH group 2 の設定が入っていますが、最近の ASA では DH group 2 は廃止されておりコマンド自体が入りません。そのままでも勝手に DH group 14 になりますが、気持ち悪いので変えておきましょう。`crypto ikev2 policy [200|201]` の下の `group 2` および `crypto ipsec profile PROFILE1` の下の `group 2` が該当します。

編集後に、初期設定の済んだ ASAv にコンフィグを上書きペーストします。これで VPN が上がった！ となれば OK ですが、 **下のスクショは VPN が上がっていません…** 　いや、`IPSEC IS UP` と出ているので IPsec 自体は上がっているのですが、AWS の表示上でステータスが「ダウン」になっています。これは BGP が上がっていないからです。 **私との約束を破るとこうなります。**

![aws-vpn-is-down-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/bd6ef86d-69b0-3e14-5822-0b685708b925.png)

正しく設定されている場合は ↓↓↓ こうなります。 ↓↓↓

![tunnel-connected.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/36b76286-061c-e4ef-b52f-2db63a1214e9.png)

# AWS CloudFormation によるセットアップ

さて、AWS CloudFormation による Catalyst Center のセットアップに進みましょう。一つバージョンが古いですが DNA Center 2.3.5 を AWS にセットアップするための[日本語のマニュアルはこちら](https://www.cisco.com/c/ja_jp/td/docs/cloud-systems-management/network-automation-and-management/dna-center/dna-center-va/aws/deploy/b_cisco_dna_center_on_aws_deployment_guide/m_getting_started_with_cisco_dna_center_on_aws.html)にあるので大いに参考にしつつ、[最新の英語版マニュアル](https://www.cisco.com/c/en/us/td/docs/cloud-systems-management/network-automation-and-management/catalyst-center/catalyst-center-va/aws/deploy/2-3-7/b_cisco-catalyst-center-237-on-aws-deployment-guide/m_deploy-cc-237-using-aws-cf.html)を参照します。

CloudFormation の良い点は、一度パラメータを仕込むとそれを基に長いリンクが作成されて、後日そのリンクを使って同じ環境に何度もデプロイすることが便利にできるところです。

事前準備・前提条件として以下のようなものがあります。詳細はマニュアルをご確認ください。

* オンプレ側の DNS サーバの IP アドレス（プロキシがある場合はそれも）を控えておく。
* AWS の管理者アカウントがあること（AWS MarketPlace で Catalyst Center - BYOL のサブスクライブがされます
* VPC やサブネットが適切に設定されていること
* ルートテーブルが設定されていて、VPN 経由でオンプレ側にアクセスできること
* AWS 側のセキュリティグループが設定されていて TCP 22, 80, 443, 9991, 25103, 32626 および UDP 123, 162, 514, 6007, 21730、UDP のポートへオンプレ側からのアクセスを許可すること
* オンプレ側から Site-to-Site VPN でつながっていること
* 使えるリージョンが決まっております。詳細はマニュアル参照
* r5a.8xlarge インスタンスをサポートすること（場合によっては AWS サポートに連絡して quota の拡張が必要かもしれません）
* AWS の各パラメータを控えておく (Subnet ID, Security Group ID, Keypair ID, Environment name, CIDR reservation)
* 自分の PC から Catalyst Center GUI にアクセスできるネットワーク設計であること
* Catalyst Center のデフォルトゲートウェイアドレス, CLI password, Catalyst Center の IPアドレスと FQDN が必要

事前準備が済んだら、 [Cisco Software Download](https://software.cisco.com/download/home/286316341/type/286318832/release/VA%20Launchpad%202.0.0) から `Catalyst_Center_2.3.7.6_VA_InstanceLaunch_CFT-2.0.0.tar.gz` というファイル（2024年12月現在）をダウンロードします。

:::note warn
たいへん恐縮なお知らせになってしまうのですが、このファイルのダウンロードには、Catalyst Center に有効なサービス契約など、ダウンロード権限の付与されたシスコアカウントが必要となっています。
:::

このファイルを展開すると `Catalyst_Center_2.3.7.6_VA_InstanceLaunch_CFT-2.0.0.yaml` という名前の YAML ファイルが入っているのでこれを後で使います。

AWS コンソールで CloudFormation を検索して開きます。「スタックの作成」ボタンを押します。ボタンがドロップダウンになっていて選択できる場合は、「新しいリソースを使用 (標準)」を選択します。「テンプレートの指定」からテンプレートソースとして「テンプレートファイルのアップロード」を選択し、先ほどの YAML ファイルをアップロードします。

後は出てくる画面にパラメータを入力していってデプロイするだけです。入力するパラメータは「スタック名」に加えて以下のものです。

###### EC2 インスタンスの設定
* [Environment Name]：一意の環境名を割り当てます。
環境名は、展開を区別するために使用され、AWS リソース名の前に追加されます。以前の展開と同じ環境名を使用すると、現在の展開でエラーが発生します。
* [Private Subnet ID]：Cisco DNA Center で使用する VPC サブネットを入力します。
* [Security Group]：展開する Cisco DNA Center VA に割り当てるセキュリティグループを入力します。
* [Keypair]：展開する Cisco DNA Center VA の CLI へのアクセスに使用する SSH キーペアを入力します。

###### Cisco DNA Center の設定
* [CatalystCenterInstanceIP]：Cisco DNA Center の IP アドレス。
* [CatalystCenterNetmask]：Cisco DNA Center のネットマスク。
* [CatalystCenterGateway]：Cisco DNA Center のゲートウェイアドレス。
* [CatalystCenterDnsServer]：エンタープライズ DNS サーバー。
* [CatalystCenterPassword]：Cisco DNA Center のパスワード。
（注）  
Cisco DNA Center のパスワードを使用して、AWS EC2 シリアルコンソール から Cisco DNA Center VA CLI にアクセスできます。パスワードは、以下のルールに従う必要があります。
タブまたは改行を省略する
8 文字以上にする
次のうち少なくとも 3 つのカテゴリの文字を含める
小文字（a ～ z）
大文字（A ～ Z）
数字（0 ～ 9）
特殊文字（! や # など）
* [CatalystCenterFQDN]：Cisco DNA Center の FQDN。
* [CatalystCenterHttpsProxy]：（オプション）エンタープライズ HTTPS プロキシ。
* [CatalystCenterHttpsProxyUsername]：（オプション）HTTPS プロキシのユーザー名。
* [CatalystCenterHttpsProxyPassword]：（オプション）HTTPS プロキシのパスワード。

あとは待つだけです。使える状態になるまで、1時間くらいはかかるかと思います。

使える状態になったら、あとは通常の Catalyst Center と同様にお楽しみください！

# 実際にいくらかかったか

こちらがムンバイで Catalyst Center を動かしたときの実際の一日あたりのコストです。

![aws-cost-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927971/b6befc1a-f66e-520b-89d4-addb2b3cd6e2.png)

* EC2 (8xlarge): $27.46 / 日
* EBS 4TB: $12.97 / 日
* VPN: $1.20 / 日
* Public IP: $0.24 / 日　（インターネットから見られるように IGW を追加していました）
* EC2 (t4g.nano): $0.07 / 日　（疎通確認用の Amazon Linux。不要ですがあると便利)

合計で一日あたり $41.04 という結果でした。

それでは、皆様どうぞよい年末をお迎えください。



# 免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。