My Home NW Lab

逸般の誤家庭のネットワーク

Catalyst 9800で無線AP名を条件にTagを割り当てる (AP Filter)

Catalyst 9800ではAP Filterの機能により、無線AP名 (ホスト名)を条件にしてTagの割り当てが可能です。

Catalyst 9800におけるAP Filterの動作イメージ

本記事ではAP Filter利用時の「設計の観点」と「実際の設定方法」に関して解説します。

検証時の情報

検証は下記の環境で行いました。

設計の観点

無線APのホスト名の命名規則

AP Filterが無線APのホスト名の情報に基づいて動作する都合上、命名規則の整備が必要になります。

一般的に本番環境の導入では命名規則を用意するので考慮漏れはないとは思いますが、ホスト名を手動 (capwap ap hostname)もしくはDHCP Option 12を用いて割り当てる運用フローの確立も忘れないようにしてください。

AP Filter設定のための情報整理の一例

ap name-regex で条件式を指定する際には「部分一致」と「完全一致」を意識して設定します。

ap name-regex の条件式の例

条件式の「部分一致」と「完全一致」が影響するシナリオ例としては、無線APの故障被疑で、既存機器を様子見のまま"残置"しつつ、予備機を"併設"する場合にホスト名を暫定設定するケースが考えられます。
具体的には、号機番号の情報を残したままにしたくて、併設する予備機に暫定的な接尾辞 (-New)をつけると運用だと、(例外的にStaticで割り当てるか、)条件式でそのケアをするかの検討が必要です。

AP Filter利用時の障害対応フローの考慮

AP Filter利用時の個別チューニング

実際に運用して見ると、特定の無線APに対して個別チューニングが必要なケースが想定されます。 デフォルトでは「Static」が「AP Filter (Filter)」より優先度が高いため、個別チューニングする際はStaticで上書きする運用方法が考えられます。

Tagの割り当ては優先度が決まられており、show ap tag sources で確認が可能です。

wlc01# show ap tag sources
Priority         Tag source
--------------------------------
0                Static
1                Location
2                Filter
3                AP
4                Default

wlc01#

AP Filter利用時の個別チューニング

設定

各種Tagの事前設定

無線APに割り当てるための各種Tagの設定を事前に行っておきます。
(AP Filterから参照される設定を事前に作っておきます。)

各種Tagの事前設定

下記は検証時に「動作確認するための設定例」です。後の設定から参照しています。

configure terminal

wireless tag policy PolTag_Custom

wireless tag rf RFTag_Custom

wireless tag site SiteTag_Custom

end

CLIからのAP Filterの設定

CLIでは
1. ap filter name <Name> で条件や割り当てるTagを定義して。
2. ap filter priority <Number> filter-name <Name> で適用します。

下記はCLIからの設定例です。

configure terminal

ap filter name APFil_Test
 ap name-regex testap.*
 tag policy PolTag_Custom
 tag rf RFTag_Custom
 tag site SiteTag_Custom

ap filter priority 10 filter-name APFil_Test

end

動作確認後は write memory での設定の保存を忘れないようにします。

Web UIからのAP Filterの設定

メニュー: Configuration > Tags & Profiles > Tags より AP > Filter がAP Filterの設定画面です。

Web UIでのWeb Filterの設定画面

要件に沿って必要な分だけ設定を投入していきます。
下記は設定の一例です。

設定項目 設定値の例
Rule Name APFil_Test
AP name regex testap.*
Active YES
Priority 10
Type Tag
Policy Tag Name PolTag_Custom
Site Tag Name SiteTag_Custom
RF Tag Name RFTag_Custom

Web UIからのAP Filterの設定例

設定後は保存を忘れないようにしてください。

確認コマンド

show ap filters all

show ap filters all では無効化されているFilterも表示されます。

下記の例では、「無効化したFilter (Filter Name: APFil_Inactive)」が表示されるのを確認しています。

wlc01#show ap filters all
Filter Name                       regex                               Policy Tag                        RF Tag                            Site Tag              
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
APFil_Test                        testap.*                            PolTag_Custom                     RFTag_Custom                      SiteTag_Custom        
APFil_Inactive                    Inactive                            default-policy-tag                default-rf-tag                    default-site-tag      

wlc01#

show ap filters all

show ap filters active

show ap filters active では有効化されているFilterに絞って表示されます。 先の例にあった Filter Name: APFil_Inactive は無効化されているため表示されていません。

wlc01# show ap filters active
Priority   Filter Name                       regex                               Policy Tag                        RF Tag                            Site Tag   
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10         APFil_Test                        testap.*                            PolTag_Custom                     RFTag_Custom                      SiteTag_Custom

wlc01#

show ap filters active

show ap tag summary

実際に適用されているかは show ap tag summary で確認します。

wlc01# show ap tag summary
Number of APs: 2

AP Name                           AP Mac           Site Tag Name                     Policy Tag Name                   RF Tag Name                       Misconfigured    Tag Source
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
testap01                          ****.****.****   SiteTag_Custom                    PolTag_Custom                     RFTag_Custom                      No               Filter
otherap01                         ****.****.****   default-site-tag                  default-policy-tag                default-rf-tag                    No               Default

wlc01#

AP Filterによって適用されていると Tag SourceFilter の表示になります。

show ap tag summary

関連ドキュメント

2025年01月頃時点で主要なVersionのドキュメントへのリンクを記載します。

v17.16.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.16.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-16/config-guide/b_wl_17_16_cg/m_config_model.html#d100276e6593a1635

v17.15.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.15.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-15/config-guide/b_wl_17_15_cg/m_config_model.html#d100374e6593a1635

v17.14.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.14.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-14/config-guide/b_wl_17_14_cg/m_config_model.html#d97827e6523a1635

v17.13.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.13.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-13/config-guide/b_wl_17_13_cg/m_config_model.html#d96823e6587a1635

v17.12.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE Dublin 17.12.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-12/config-guide/b_wl_17_12_cg/m_config_model.html#d96721e6587a1635

v17.11.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE Dublin 17.11.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-11/config-guide/b_wl_17_eleven_cg/m_config_model.html#d93401e6523a1635

v17.10.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE Dublin 17.10.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-10/config-guide/b_wl_17_10_cg/m_config_model.html#d93401e6523a1635

v17.9.x

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE Cupertino 17.9.x - New Configuration Model [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-9/config-guide/b_wl_17_9_cg/m_config_model.html#d79238e6572a1635

v16.10.x (日本語翻訳あり)

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE Gibraltar 16.10.x - System Configuration [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/config-guide/b_wl_16_10_cg/new-configuration-model.html#d102224e4944a1635

v16.10.xの日本語翻訳

Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ(Cisco IOS XE Gibraltar 16.10.x)ソフトウェア コンフィギュレーション ガイド - システム設定 [Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/wireless/controller/9800/config-guide/b_wl_16_10_cg/b_wl_16_10_cg_chapter_010.html#d251e3027a1635

Catalyst 9800で認証サーバーにSSIDなどの情報を通知する

Catalyst 9800において、RADIUSで認証サーバーにSSIDや無線APの位置設定を通知する設定方法を整理します。

通知例のサンプル

概要

Catalyst 9800ではWireless AAA Policyの設定項目で認証サーバーに通知される項目が制御されています。

デフォルトではSystem Nameで(WLCの)Hostnameのみが通知される設定となっているため、SSIDや無線APの位置設定を通知するには設定の変更が必要です。

またPolicy ProfileにWireless AAA Policyを紐付ける必要があり、デフォルトでは Wireless AAA Policy: default-aaa-policy がグローバル設定として参照されるようになっています。

検証時の環境

検証は下記の環境で行いました。

設定

Wireless AAA Policyでの定義

まずは「通知したい対象の情報」を定義します。

メニュー: Configuration > Security > Wireless AAA Policy に移動します。

メニュー: Configuration > Security > Wireless AAA Policy

グローバル設定として一律に変更したい場合は default-aaa-policy を編集します。
Policy Profileによって通知内容を変えたり、カスタマイズしているのを明示化したい場合は、新たにWireless AAA Policyを定義します。

Wireless AAA Policyの編集

Web UIとCLIともに3つまで指定が可能です。

NAS-ID Optionの選択可能項目の例 (Web UI)

本設定で指定した情報は「RADIUSNAS-Identifier」として認証サーバーに通知されます。
複数の情報を定義した場合の区切り文字はコロン (:)になります。

v17.14.1 で指定可能な項目は下記でした。

項目 説明
ap-eth-mac AP Ethernet MAC
ap-ip AP IP address
ap-location AP Location
ap-mac AP MAC address
ap-name AP Name
ap-policy-tag AP Policy Tag
ap-site-tag AP Site Tag
custom-string Custom string
ssid SSID
sys-ip System IP Address
sys-mac System MAC address
sys-name System Name

Policy Profileとの紐付け

「通知対象の定義」(Wireless AAA Policy)をPolicy Profileに紐付けます。

デフォルトではWireless AAA Policy: default-aaa-policy がグローバル設定として紐づいています。 カスタマイズした定義を利用したい場合は、個々のPolicy Profileの紐付けを変更します。

メニュー: Configuration > Tags & Profiles > Policy に移動して、設定対象のPolicy Profileを開きます。

メニュー: Configuration > Tags & Profiles > Policy

設定対象のPolicy Profileの選択

Advanced タブの AAA Policy セクションに Policy Name の設定でWireless AAA Policyを紐付けします。

Policy Nameの指定

グローバル設定であるWireless AAA Policy: default-aaa-policy を利用する場合でも、対象Policy Profileが意図したものを参照しているか確認してください。

Cisco ISEでの条件指定の例

Catalyst 9800側で情報を通知しても認証サーバー側で活用できないと意味が薄いため、Cisco ISEでの設定例を紹介します。

Cisco ISEの場合は RADIUS・NAS-Identifier で条件を指定します。

NAS-ID Optionは最大で3つまで指定できるため、
* NAS-ID Option 1Starts with で先頭にあるか
* NAS-ID Option 2Contains で含まれているか
* NAS-ID Option 3Ends With で最後にあるか
などで条件にヒットするか確認します。

Cisco ISEでの条件指定の例 (1/2)

Cisco ISEでの条件指定の例 (2/2)

参考情報: 確認方法

パケット キャプチャによる確認

下記はパケット キャプチャでNAS-Identifierを確認した例です。
データグラムのレベルでも区切り文字がコロン (:)になっているのを確認できます。

パケット キャプチャ

Cisco ISE側での確認

認証サーバーにCisco ISEを利用している場合は、Live logsよりNAS-Identifierを確認が可能です。

Cisco ISE側のLive Logs

関連ドキュメント

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.14.x - Network Access Server Identifier [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-14/config-guide/b_wl_17_14_cg/m_nas-id.html

日本語翻訳

日本語翻訳は古めのVersionとなっています。

Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ(Cisco IOS XE Gibraltar 16.10.x)ソフトウェア コンフィギュレーション ガイド - ネットワーク アクセス サーバ識別子 [Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/wireless/controller/9800/config-guide/b_wl_16_10_cg/b_wl_16_10_cg_chapter_01100101.html

Cisco ISEでPolicy SetsをXMLとしてExport

Cisco ISEはPolicy Setsの設定情報をXMLとしてExportできます。ただし、v3.4時点でWeb UIからのImportには非対応です。

Importはできないため活用範囲は限定されますが、Web UIによる設定がメインの製品のため、(検証時やサポート問い合わせ時に)テキスト情報として設定を控えたい時に便利です。

本記事の画面キャプチャはVersionは 3.3.0.430 がベースとなっています。

Export方法

  • Web UIのメニューより Administration > System > Backup & Restore に移動します。

    メニュー: Administration > System > Backup & Restore

  • Policy Export の画面に移動します。下記のパラメータを指定して Export Now を押下すると、ファイルのダウンロードが開始します。

    設定項目 設定値
    Encryption Export without encryption
    Destination Download file to local computer

    Policy Export

関連ドキュメント

下記より該当Versionの Administrator Guide を探して Export Authentication and Authorization Policy Configuration を参照します。

Cisco Identity Services Engine - Configuration Guides - Cisco
https://www.cisco.com/c/en/us/support/security/identity-services-engine/products-installation-and-configuration-guides-list.html

執筆時点で代表的なVersionを記載しておきます。

v3.4

Cisco Identity Services Engine Administrator Guide, Release 3.4 - Maintain and Monitor [Cisco Identity Services Engine] - Cisco
https://www.cisco.com/c/en/us/td/docs/security/ise/3-4/admin_guide/b_ise_admin_3_4/b_ISE_admin_maintain_monitor.html#task_D331E4929EAC4AE690B0450A467CEC49

v3.3

Cisco Identity Services Engine Administrator Guide, Release 3.3 - Maintain and Monitor [Cisco Identity Services Engine] - Cisco
https://www.cisco.com/c/en/us/td/docs/security/ise/3-3/admin_guide/b_ise_admin_3_3/b_ISE_admin_33_maintain_monitor.html#task_D331E4929EAC4AE690B0450A467CEC49

v3.2

Cisco Identity Services Engine Administrator Guide, Release 3.2 - Maintain and Monitor [Cisco Identity Services Engine] - Cisco
https://www.cisco.com/c/en/us/td/docs/security/ise/3-2/admin_guide/b_ise_admin_3_2/b_ISE_admin_33_maintain_monitor.html#task_D331E4929EAC4AE690B0450A467CEC49

v3.1

Cisco Identity Services Engine Administrator Guide, Release 3.1 - Maintain and Monitor [Cisco Identity Services Engine] - Cisco
https://www.cisco.com/c/en/us/td/docs/security/ise/3-1/admin_guide/b_ise_admin_3_1/b_ISE_admin_31_maintain_monitor.html#task_D331E4929EAC4AE690B0450A467CEC49

v3.0

Cisco Identity Services Engine Administrator Guide, Release 3.0 - Maintain and Monitor [Cisco Identity Services Engine] - Cisco
https://www.cisco.com/c/en/us/td/docs/security/ise/3-0/admin_guide/b_ISE_admin_3_0/b_ISE_admin_30_maintain_monitor.html#task_D331E4929EAC4AE690B0450A467CEC49

XMLファイル (PolicyConfig.xml)のサンプル

下記はデフォルト状態のPolicy SetsをExportした例です。

<?xml version="1.0" encoding="UTF-8"?><Root>
  <policysets>
    <radiusPolicySets>
      <radiusPolicySet>
        <condition/>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_Access</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <lhsAttribute>Name</lhsAttribute>
                <rhsAttribute>Endpoint Identity Groups:Blocked List</rhsAttribute>
                <rhsDictionary/>
                <isNot>false</isNot>
                <lhsDictionary>IdentityGroup</lhsDictionary>
                <type>SINGLE</type>
                <operator>EQUALS</operator>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Wireless Block List Default</name>
          <profiles>Block_Wireless_Access</profiles>
          <rank>0</rank>
          <id>773acc1f-2c3f-42f0-a93f-0a32499b6996</id>
          <status>ENABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <lhsAttribute>Name</lhsAttribute>
              <rhsAttribute>Endpoint Identity Groups:Profiled:Cisco-IP-Phone</rhsAttribute>
              <rhsDictionary/>
              <isNot>false</isNot>
              <lhsDictionary>IdentityGroup</lhsDictionary>
              <type>SINGLE</type>
              <operator>EQUALS</operator>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Profiled Cisco IP Phones</name>
          <profiles>Cisco_IP_Phones</profiles>
          <rank>1</rank>
          <id>e8a2a0f8-2111-4be4-8efd-fa634401a34d</id>
          <status>ENABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <refId>Non_Cisco_Profiled_Phones</refId>
              <type>REFERENCE</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Profiled Non Cisco IP Phones</name>
          <profiles>Non_Cisco_IP_Phones</profiles>
          <rank>2</rank>
          <id>b5c2e8ef-b196-4d14-a48d-1d1ff5b9fc03</id>
          <status>ENABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Network_Access_Authentication_Passed</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Compliance_Unknown_Devices</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Unknown_Compliance_Redirect</name>
          <profiles>Cisco_Temporal_Onboard</profiles>
          <rank>3</rank>
          <id>0cf4098a-f38d-4731-ad9d-a43c6fcde07b</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Network_Access_Authentication_Passed</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Non_Compliant_Devices</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>NonCompliant_Devices_Redirect</name>
          <profiles>Cisco_Temporal_Onboard</profiles>
          <rank>4</rank>
          <id>cc24a1da-7898-46c4-a7df-db4f3706574e</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Network_Access_Authentication_Passed</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Compliant_Devices</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Compliant_Devices_Access</name>
          <profiles>PermitAccess</profiles>
          <rank>5</rank>
          <id>4ec8ea41-9033-4bd1-a242-9293212333b3</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_802.1X</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>BYOD_is_Registered</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>EAP-TLS</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>MAC_in_SAN</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Employee_EAP-TLS</name>
          <profiles>PermitAccess</profiles>
          <rank>6</rank>
          <groups>BYOD</groups>
          <id>9c6bc0ba-e113-44e2-8ff1-b43848859a6c</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_802.1X</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>EAP-MSCHAPv2</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Employee_Onboarding</name>
          <profiles>NSP_Onboard</profiles>
          <rank>7</rank>
          <groups>BYOD</groups>
          <id>0ac9ef07-c9c2-4ead-ab6c-c2887d6c1fb8</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Guest_Flow</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_MAB</refId>
                <type>REFERENCE</type>
              </children>
              <type>AND_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Wi-Fi_Guest_Access</name>
          <profiles>PermitAccess</profiles>
          <rank>8</rank>
          <groups>Guests</groups>
          <id>c0b7b26a-73c9-4886-abb8-b0f9a606bb6d</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <refId>Wireless_MAB</refId>
              <type>REFERENCE</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Wi-Fi_Redirect_to_Guest_Login</name>
          <profiles>Cisco_WebAuth</profiles>
          <rank>9</rank>
          <id>416507a7-22f1-4e4a-a911-af788b9d7aee</id>
          <status>DISABLED</status>
        </authorRules>
        <authorRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <refId>Network_Access_Authentication_Passed</refId>
              <type>REFERENCE</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <name>Basic_Authenticated_Access</name>
          <profiles>PermitAccess</profiles>
          <rank>10</rank>
          <id>ba3df86d-fa67-42cd-996b-3c14c13a01a4</id>
          <status>ENABLED</status>
        </authorRules>
        <authorRules>
          <condition/>
          <name>Default</name>
          <profiles>DenyAccess</profiles>
          <rank>11</rank>
          <id>b13f6428-21a4-46b6-87fe-56d2f615b10c</id>
          <status>ENABLED</status>
        </authorRules>
        <name>Default</name>
        <description>Default policy set</description>
        <rank>0</rank>
        <id>3c7ceaca-98ea-43cc-8776-43997a13ee7f</id>
        <allowedProtocols>Default Network Access</allowedProtocols>
        <status>ENABLED</status>
        <authenRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Wired_MAB</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_MAB</refId>
                <type>REFERENCE</type>
              </children>
              <type>OR_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <storetype>IdentityStore</storetype>
          <processfailaction>DROP</processfailaction>
          <usernotfoundaction>CONTINUE</usernotfoundaction>
          <name>MAB</name>
          <rank>0</rank>
          <storename>Internal Endpoints</storename>
          <id>ab4f62fc-5092-4085-94a4-3fb1f1494916</id>
          <authenfailaction>REJECT</authenfailaction>
          <status>ENABLED</status>
        </authenRules>
        <authenRules>
          <condition>
            <isNot>false</isNot>
            <children>
              <isNot>false</isNot>
              <children>
                <isNot>false</isNot>
                <refId>Wired_802.1X</refId>
                <type>REFERENCE</type>
              </children>
              <children>
                <isNot>false</isNot>
                <refId>Wireless_802.1X</refId>
                <type>REFERENCE</type>
              </children>
              <type>OR_BLOCK</type>
            </children>
            <type>AND_BLOCK</type>
          </condition>
          <storetype>IdentityStoreSequence</storetype>
          <processfailaction>DROP</processfailaction>
          <usernotfoundaction>REJECT</usernotfoundaction>
          <name>Dot1X</name>
          <rank>1</rank>
          <storename>All_User_ID_Stores</storename>
          <id>86351382-d6d7-4469-abae-5ca55d6bf646</id>
          <authenfailaction>REJECT</authenfailaction>
          <status>ENABLED</status>
        </authenRules>
        <authenRules>
          <condition/>
          <storetype>IdentityStoreSequence</storetype>
          <processfailaction>DROP</processfailaction>
          <usernotfoundaction>REJECT</usernotfoundaction>
          <name>Default</name>
          <rank>2</rank>
          <storename>All_User_ID_Stores</storename>
          <id>50b08ec7-38c4-4adb-9fcf-67e0991cd081</id>
          <authenfailaction>REJECT</authenfailaction>
          <status>ENABLED</status>
        </authenRules>
      </radiusPolicySet>
    </radiusPolicySets>
    <tacacsPolicySets>
      <tacacsPolicySet>
        <condition/>
        <authorRules>
          <condition/>
          <name>Default</name>
          <profiles>Deny All Shell Profile</profiles>
          <rank>0</rank>
          <commandsets>DenyAllCommands</commandsets>
          <id>1bb1ea9b-636f-4cac-af03-064d25b0a104</id>
          <status>ENABLED</status>
        </authorRules>
        <name>Default</name>
        <description>Tacacs Default policy set</description>
        <rank>0</rank>
        <id>eb6136b9-a5f3-44b0-b875-075aee522cc9</id>
        <allowedProtocols>Default Device Admin</allowedProtocols>
        <status>ENABLED</status>
        <authenRules>
          <condition/>
          <storetype>IdentityStoreSequence</storetype>
          <processfailaction>DROP</processfailaction>
          <usernotfoundaction>REJECT</usernotfoundaction>
          <name>Default</name>
          <rank>0</rank>
          <storename>All_User_ID_Stores</storename>
          <id>a9c396be-5a9c-4041-9460-052bc3771324</id>
          <authenfailaction>REJECT</authenfailaction>
          <status>ENABLED</status>
        </authenRules>
      </tacacsPolicySet>
    </tacacsPolicySets>
  </policysets>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>Wireless802_1x</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Wireless_802.1X</name>
      <description>A condition to match 802.1X based authentication requests from wireless LAN controllers, according to the corresponding 802.1x attributes defined in the device profile.</description>
      <id>8033ff8b-f474-48f8-9182-f3f2800146b8</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>WiredWebAuth</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Switch_Web_Authentication</name>
      <description>A condition to match requests for web authentication from switches, according to the corresponding Web Authentication attributes defined in the device profile.</description>
      <id>7b1a7c68-55fb-49b0-be2c-9f217694aa08</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>WiredMAB</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Wired_MAB</name>
      <description>A condition to match MAC Authentication Bypass service based authentication requests from switches, according to the corresponding MAB attributes defined in the device profile.</description>
      <id>f24fad22-3b37-47ad-9e4e-be442c5dc39a</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>Wired802_1x</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Wired_802.1X</name>
      <description>A condition to match 802.1X based authentication requests from switches, according to the corresponding 802.1x attributes defined in the device profile.</description>
      <id>318cead8-f039-4db8-8d48-e903abadb695</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>WirelessMAB</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Wireless_MAB</name>
      <description>A condition to match MAC Authentication Bypass service based authentication requests from wireless LAN controllers, according to the corresponding MAB attributes defined in the device profile.</description>
      <id>97f0db59-7725-4573-8fb0-aad88dd9efec</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>RadiusFlowType</lhsAttribute>
          <rhsAttribute>WirelessWebAuth</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Normalised Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>WLC_Web_Authentication</name>
      <description>A condition to match requests for web authentication from wireless LAN controllers, according to the corresponding Web Authentication attributes defined in the device profile.</description>
      <id>f5571dec-e712-4504-a98e-a3d7860c0437</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>PostureStatus</lhsAttribute>
          <rhsAttribute>Unknown</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Session</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Compliance_Unknown_Devices</name>
      <description>Default condition for unknown compliance devices</description>
      <id>4f1abfa3-843d-4268-9b71-7e0f59d5ab98</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>PostureStatus</lhsAttribute>
          <rhsAttribute>NonCompliant</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Session</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Non_Compliant_Devices</name>
      <description>Default condition for non-compliant devices</description>
      <id>4c139e85-01e3-4f62-9ab5-2752dfd87add</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>PostureStatus</lhsAttribute>
          <rhsAttribute>Compliant</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Session</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Compliant_Devices</name>
      <description>Default condition for compliant devices</description>
      <id>473c5330-dc7b-4364-9f72-0a2390041186</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>LogicalProfile</lhsAttribute>
          <rhsAttribute>IP-Phones</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>EndPoints</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Non_Cisco_Profiled_Phones</name>
      <description>Default condition used to match Non Cisco IP Phones</description>
      <id>026fe326-c2b8-4c71-bae8-6a0d41b54f31</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>Service-Type</lhsAttribute>
          <rhsAttribute>Outbound</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <children>
          <lhsAttribute>NAS-Port-Type</lhsAttribute>
          <rhsAttribute>Ethernet</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Switch_Local_Web_Authentication</name>
      <description>A condition to match authentication requests for Local Web Authentication from Cisco Catalyst Switches</description>
      <id>0341268c-feef-4154-976b-c59ef93bc5c0</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>Cisco-5g-serving-network-name</lhsAttribute>
          <rhsAttribute>5G:</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Cisco</lhsDictionary>
          <type>SINGLE</type>
          <operator>STARTS_WITH</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>5G</name>
      <description>A condition to match 5G</description>
      <id>6dec1b16-9c8e-43e8-be4b-86f0b001bf68</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>Service-Type</lhsAttribute>
          <rhsAttribute>Outbound</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <children>
          <lhsAttribute>NAS-Port-Type</lhsAttribute>
          <rhsAttribute>Ethernet</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Catalyst_Switch_Local_Web_Authentication</name>
      <description>Default condition used to match authentication requests for Local Web Authentication from Cisco Catalyst Switches</description>
      <id>63c42696-7390-4b23-8596-0e2ccd615e93</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>NAS-Port-Type</lhsAttribute>
          <rhsAttribute>Wireless - IEEE 802.11</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Radius</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Wireless_Access</name>
      <description>Default condition used to match any authentication request from Cisco Wireless LAN Controller.</description>
      <id>f488dbd7-a207-48c5-a183-68e812598948</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>BYODRegistration</lhsAttribute>
          <rhsAttribute>Yes</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>EndPoints</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>BYOD_is_Registered</name>
      <description>Default condition for BYOD flow for any device that has passed the NSP process</description>
      <id>8aed6feb-a1f0-464c-ac5a-cccbf13f2b7b</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>EapAuthentication</lhsAttribute>
          <rhsAttribute>EAP-MSCHAPv2</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Network Access</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>EAP-MSCHAPv2</name>
      <description>Default condition for BYOD Onboarding flow</description>
      <id>c8973541-6236-404f-b6c6-e889d6ab02b8</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>EapAuthentication</lhsAttribute>
          <rhsAttribute>EAP-TLS</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Network Access</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>EAP-TLS</name>
      <description>Default condition for BYOD flow for any device that has passed the NSP process</description>
      <id>0534eab1-2aab-4a6f-84f7-065e29462e33</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>UseCase</lhsAttribute>
          <rhsAttribute>Guest Flow</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Network Access</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Guest_Flow</name>
      <description>Default condition for guest flow</description>
      <id>33015f26-3acf-4366-9241-a37ab2ca6d6b</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>Subject Alternative Name</lhsAttribute>
          <rhsAttribute>Subject Alternative Name</rhsAttribute>
          <rhsDictionary>CERTIFICATE</rhsDictionary>
          <isNot>false</isNot>
          <lhsDictionary>CERTIFICATE</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>MAC_in_SAN</name>
      <description>Default condition for BYOD flow for any device that has passed the NSP process</description>
      <id>28e1c676-c871-42ad-82b7-792ed7cd7b03</id>
    </libraryCondition>
  </libraryConditions>
  <libraryConditions>
    <libraryCondition>
      <condition>
        <isNot>false</isNot>
        <children>
          <lhsAttribute>AuthenticationStatus</lhsAttribute>
          <rhsAttribute>AuthenticationPassed</rhsAttribute>
          <rhsDictionary/>
          <isNot>false</isNot>
          <lhsDictionary>Network Access</lhsDictionary>
          <type>SINGLE</type>
          <operator>EQUALS</operator>
        </children>
        <type>AND_BLOCK</type>
      </condition>
      <name>Network_Access_Authentication_Passed</name>
      <description>Default condition used for basic Network Access requiring that authentication was successful.</description>
      <id>717538eb-c6e7-409a-9c72-29b41d12389e</id>
    </libraryCondition>
  </libraryConditions>
  <!--This section describes the Allowed Protocols configured in ISE-->
  <AllowedProtocols>
    <AllowedProtocol description="Default Allowed Protocol Service Device Admin" name="Default Device Admin">
      <Option name="Process Host Lookup" value="false"/>
      <Option name="Allow PAP/ASCII" value="true"/>
      <Option name="Allow CHAP" value="true"/>
      <Option name="Allow MS-CHAPv1" value="true"/>
      <Option name="Allow MS-CHAPv2" value="false"/>
      <Option name="Allow EAP-MD5" value="false"/>
      <Option name="Allow EAP-TLS" value="false"/>
      <Option name="Allow LEAP" value="false"/>
      <Option name="Allow PEAP" value="false"/>
      <Option name="Allow EAP-FAST" value="false"/>
    </AllowedProtocol>
    <AllowedProtocol description="Default Allowed Protocol Service" name="Default Network Access">
      <Option name="Process Host Lookup" value="true"/>
      <Option name="Allow PAP/ASCII" value="true"/>
      <Option name="Allow CHAP" value="false"/>
      <Option name="Allow MS-CHAPv1" value="false"/>
      <Option name="Allow MS-CHAPv2" value="false"/>
      <Option name="Allow EAP-MD5" value="true"/>
      <Option name="Allow EAP-TLS" value="true">
        <Option name="EAP-TLS-Allow Allow Authentication of expired certificates" value="false"/>
        <Option name="EAP-TLS-Allow Enable Stateless Session Resume" value="false"/>
      </Option>
      <Option name="Allow LEAP" value="false"/>
      <Option name="Allow PEAP" value="true">
        <Option name="PEAP-Allow EAP-MS-CHAPv2" value="true">
          <Option name="Allow Password Change" value="true"/>
          <Option name="Retries" value="1"/>
        </Option>
        <Option name="PEAP-Allow EAP-GTC" value="true">
          <Option name="Allow Password Change" value="true"/>
          <Option name="Retries" value="1"/>
        </Option>
        <Option name="PEAP-Allow EAP-TLS" value="true">
          <Option name="EAP-TLS-Allow Allow Authentication of expired certificates" value="false"/>
        </Option>
        <Option name="Allow PEAPv0 only for legacy clients" value="false"/>
      </Option>
      <Option name="Allow EAP-FAST" value="true">
        <Option name="EAP-FAST-Allow EAP-MS-CHAPv2" value="true">
          <Option name="Allow Password Change" value="true"/>
          <Option name="Retries" value="3"/>
        </Option>
        <Option name="EAP-FAST-Allow EAP-GTC" value="true">
          <Option name="Allow Password Change" value="true"/>
          <Option name="Retries" value="3"/>
        </Option>
        <Option name="EAP-FAST-Allow EAP-TLS" value="true">
          <Option name="EAP-TLS-Allow Allow Authentication of expired certificates" value="false"/>
        </Option>
        <Option name="Use PACs" value="true">
          <Option name="Tunnel PAC Time To Live in Seconds" value="7776000"/>
          <Option name="Proactive PAC update will occur after" value="90"/>
          <Option name="Allow Anonymous In-Band PAC Provisioning" value="false"/>
          <Option name="Allow Authenticated In-Band PAC Provisioning" value="true">
            <Option name="Server Returns Access Accept After Authenticated Provisioning" value="true"/>
            <Option name="Accept Client Certificate For Provisioning" value="false"/>
          </Option>
          <Option name="Use PACs-Allow Machine Authentication" value="true">
            <Option name="Machine PAC Time To Live in Seconds" value="604800"/>
          </Option>
          <Option name="Enable Stateless Session Resume" value="true">
            <Option name="Authorization PAC Time To Live in Seconds" value="3600"/>
          </Option>
        </Option>
        <Option name="Enable EAP Chaining" value="false"/>
      </Option>
    </AllowedProtocol>
  </AllowedProtocols>
  <!--This section describes the Identity Sequences configured in ISE-->
  <IdentitySequences>
    <Sequence cert="Preloaded_Certificate_Profile" description="A built-in Identity Sequence to include all User Identity Stores" name="All_User_ID_Stores">
      <Sources>
        <Source name="Internal Users"/>
        <Source name="All_AD_Join_Points"/>
        <Source name="Guest Users"/>
      </Sources>
      <option name="Select Certificate Authentication Profile" value="true"/>
      <option name="Certificate Authentication Profile" value="Preloaded_Certificate_Profile"/>
      <option name="Do not access other stores in the sequence and set the AuthenticationStatus attribute to ProcessError" value="false"/>
      <option name="Treat as if the user was not found and proceed to the next store in the sequence" value="true"/>
    </Sequence>
    <Sequence description="A built-in Identity Sequence for Certificate Request APIs" name="Certificate_Request_Sequence">
      <Sources>
        <Source name="Internal Users"/>
        <Source name="All_AD_Join_Points"/>
      </Sources>
      <option name="Select Certificate Authentication Profile" value="false"/>
      <option name="Do not access other stores in the sequence and set the AuthenticationStatus attribute to ProcessError" value="false"/>
      <option name="Treat as if the user was not found and proceed to the next store in the sequence" value="true"/>
    </Sequence>
    <Sequence description="A built-in Identity Sequence for the Guest Portal" name="Guest_Portal_Sequence">
      <Sources>
        <Source name="Internal Users"/>
        <Source name="Guest Users"/>
        <Source name="All_AD_Join_Points"/>
      </Sources>
      <option name="Select Certificate Authentication Profile" value="false"/>
      <option name="Do not access other stores in the sequence and set the AuthenticationStatus attribute to ProcessError" value="false"/>
      <option name="Treat as if the user was not found and proceed to the next store in the sequence" value="true"/>
    </Sequence>
    <Sequence description="A built-in Identity Sequence for the My Devices Portal" name="MyDevices_Portal_Sequence">
      <Sources>
        <Source name="Internal Users"/>
        <Source name="All_AD_Join_Points"/>
      </Sources>
      <option name="Select Certificate Authentication Profile" value="false"/>
      <option name="Do not access other stores in the sequence and set the AuthenticationStatus attribute to ProcessError" value="false"/>
      <option name="Treat as if the user was not found and proceed to the next store in the sequence" value="true"/>
    </Sequence>
    <Sequence description="A built-in Identity Sequence for the Sponsor Portal" name="Sponsor_Portal_Sequence">
      <Sources>
        <Source name="Internal Users"/>
        <Source name="All_AD_Join_Points"/>
      </Sources>
      <option name="Select Certificate Authentication Profile" value="false"/>
      <option name="Do not access other stores in the sequence and set the AuthenticationStatus attribute to ProcessError" value="false"/>
      <option name="Treat as if the user was not found and proceed to the next store in the sequence" value="true"/>
    </Sequence>
  </IdentitySequences>
  <!--This section describes the RADIUS Server Sequences configured in ISE-->
  <Proxies/>
  <!--This section describes the Authorization Results configured in ISE-->
  <AznResults>
    <StandardResults>
      <Profile description="Default profile used to block wireless devices. Ensure that you configure a NULL ROUTE ACL on the Wireless LAN Controller" nadProfileName="Cisco" name="Block_Wireless_Access">
        <option name="Attributes Details">cisco-av-pair = url-redirect=https://ip:port/blockedportal/gateway?portal=24adc791-7fb9-4b3f-aaf9-080680804fee, 
cisco-av-pair = url-redirect-acl=BLACKHOLE</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default profile used for Cisco Phones." nadProfileName="Cisco" name="Cisco_IP_Phones">
        <option name="Attributes Details">DACL = PERMIT_ALL_IPV4_TRAFFIC, 
cisco-av-pair = device-traffic-class=voice</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Onboard the device with Cisco temporal agent" nadProfileName="Cisco" name="Cisco_Temporal_Onboard">
        <option name="Attributes Details">DACL = PERMIT_ALL_IPV4_TRAFFIC, 
cisco-av-pair = url-redirect-acl=ACL_WEBAUTH_REDIRECT, 
cisco-av-pair = url-redirect=https://ip:port/portal/gateway?sessionId=SessionIdValue&amp;portal=ee39fd08-7180-4995-8aa2-9fb282645a8f&amp;action=cpp</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default Profile used to redirect users to the CWA portal." nadProfileName="Cisco" name="Cisco_WebAuth">
        <option name="Attributes Details">cisco-av-pair = url-redirect-acl=ACL_WEBAUTH_REDIRECT, 
cisco-av-pair = url-redirect=https://ip:port/portal/gateway?sessionId=SessionIdValue&amp;portal=97e50aa5-16f2-4c30-85c5-7191de6a5f45&amp;action=cwa</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default Profile with access type as Access-Reject" name="DenyAccess">
        <option name="Access Type" value="ACCESS_REJECT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Onboard the device with Native Supplicant Provisioning" nadProfileName="Cisco" name="NSP_Onboard">
        <option name="Attributes Details">DACL = PERMIT_ALL_IPV4_TRAFFIC, 
cisco-av-pair = url-redirect-acl=ACL_WEBAUTH_REDIRECT, 
cisco-av-pair = url-redirect=https://ip:port/portal/gateway?sessionId=SessionIdValue&amp;portal=257d1fc6-fe59-48e8-969a-4db6ac79b668&amp;action=nsp</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default Profile used for Non Cisco Phones." nadProfileName="Cisco" name="Non_Cisco_IP_Phones">
        <option name="Attributes Details">DACL = PERMIT_ALL_IPV4_TRAFFIC, 
cisco-av-pair = device-traffic-class=voice</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default Profile with access type as Access-Accept" name="PermitAccess">
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
      <Profile description="Default profile used for UDN." nadProfileName="Cisco" name="UDN">
        <option name="Attributes Details">cisco-av-pair = null, 
cisco-av-pair = null, 
cisco-av-pair = null</option>
        <option name="Access Type" value="ACCESS_ACCEPT"/>
        <option name="Service Template" value="false"/>
      </Profile>
    </StandardResults>
    <SecurityGroups>
      <SecurityGroup description="Auditor Security Group" name="Auditors">
        <option name="Security Group Tag" value="9"/>
      </SecurityGroup>
      <SecurityGroup description="BYOD Security Group" name="BYOD">
        <option name="Security Group Tag" value="15"/>
      </SecurityGroup>
      <SecurityGroup description="Contractor Security Group" name="Contractors">
        <option name="Security Group Tag" value="5"/>
      </SecurityGroup>
      <SecurityGroup description="Developer Security Group" name="Developers">
        <option name="Security Group Tag" value="8"/>
      </SecurityGroup>
      <SecurityGroup description="Development Servers Security Group" name="Development_Servers">
        <option name="Security Group Tag" value="12"/>
      </SecurityGroup>
      <SecurityGroup description="Employee Security Group" name="Employees">
        <option name="Security Group Tag" value="4"/>
      </SecurityGroup>
      <SecurityGroup description="Guest Security Group" name="Guests">
        <option name="Security Group Tag" value="6"/>
      </SecurityGroup>
      <SecurityGroup description="Network Services Security Group" name="Network_Services">
        <option name="Security Group Tag" value="3"/>
      </SecurityGroup>
      <SecurityGroup description="PCI Servers Security Group" name="PCI_Servers">
        <option name="Security Group Tag" value="14"/>
      </SecurityGroup>
      <SecurityGroup description="Point of Sale Security Group" name="Point_of_Sale_Systems">
        <option name="Security Group Tag" value="10"/>
      </SecurityGroup>
      <SecurityGroup description="Production Servers Security Group" name="Production_Servers">
        <option name="Security Group Tag" value="11"/>
      </SecurityGroup>
      <SecurityGroup description="Production User Security Group" name="Production_Users">
        <option name="Security Group Tag" value="7"/>
      </SecurityGroup>
      <SecurityGroup description="Quarantine Security Group" name="Quarantined_Systems">
        <option name="Security Group Tag" value="255"/>
      </SecurityGroup>
      <SecurityGroup description="Test Servers Security Group" name="Test_Servers">
        <option name="Security Group Tag" value="13"/>
      </SecurityGroup>
      <SecurityGroup description="TrustSec Devices Security Group" name="TrustSec_Devices">
        <option name="Security Group Tag" value="2"/>
      </SecurityGroup>
      <SecurityGroup description="Unknown Security Group" name="Unknown">
        <option name="Security Group Tag" value="0"/>
      </SecurityGroup>
    </SecurityGroups>
    <TacacsProfile>
      <TacacsProfile description="Default Shell Profile" name="Default Shell Profile">
        <option name="session Attributes" value=""/>
      </TacacsProfile>
      <TacacsProfile description="Deny All Shell Profile" name="Deny All Shell Profile">
        <option name="session Attributes" value=""/>
      </TacacsProfile>
      <TacacsProfile description="WLC ALL" name="WLC ALL">
        <option name="session Attributes" value="role1=ALL"/>
      </TacacsProfile>
      <TacacsProfile description="WLC MONITOR" name="WLC MONITOR">
        <option name="session Attributes" value="role1=MONITOR"/>
      </TacacsProfile>
    </TacacsProfile>
    <TacacsCommandset>
      <TacacsCommandset description="Default Command Set" name="DenyAllCommands">
        <option name="Commands" value=""/>
        <option name="Permit Unmatched" value="false"/>
      </TacacsCommandset>
    </TacacsCommandset>
  </AznResults>
</Root>

Catalyst 9100 (無線AP)をCatalyst 9800 (WLC)に手動設定でJoinさせる

Catalyst 9100 (無線AP)において、Catalyst 9800 (WLC)に手動でJoinさせるための設定を整理します。

検証時の情報

検証は下記の環境で行いました。

無線AP側からの設定

キッティング作業などで無線APにSerial Consoleで接続する想定での設定方法を記載します。

本記事の後半では「Join済みの無線AP」に対して、WLC側から設定変更を行う手順も併記しております。

無線AP側からの設定

無線APのホスト名の設定 (任意)

「無線APのホスト名」はWLCへJoinするための必須設定ではありません。
しかしながら、無線APのホスト名の情報を元にして「正規表現を用いてTagの割り当て」などが行えるため、運用管理をし易くする意味も含めて、実際の導入では命名規則を設けた上で設定します。

書式

capwap ap hostname <AP name>

設定例

capwap ap hostname ap01

無線APのIPアドレスや名前解決の設定

無線APからWLCへの疎通性を確保するためにIPアドレスの設定を行います。

手動でのJoinではあまり関係ないですが、名前解決の設定をすると CISCO-CAPWAP-CONTROLLER.<domain name> に問い合わせしてWLCを探せます。

無線APのIPアドレスや名前解決の設定

書式

capwap ap ip <IP address> <netmask> <default gateway> <dns1> <dns2> <domain name>

設定例

capwap ap ip  198.51.100.201  255.255.255.0  198.51.100.254  8.8.8.8  8.8.4.4  lab.test

備考: パラメーターの区切りを見やすくするためにスペースを多めに入れています。

補足ですが、下記のログのように名前解決の設定を省略できます。

ap01#capwap ap ip  198.51.100.201  255.255.255.0  198.51.100.254 ?
  WORD  dns1 ip
  <cr>
ap01#

無線APでのJoin先WLCの手動設定

無線APでのJoin先WLCの手動設定

(DNSDHCP Option 43でもWLCのIPアドレスを通知できますが、)手動で設定するコマンドを記載します。

Join先の指定には優先度があり、WLCを3台まで指定できます。

  • Primary: 第1候補
  • Secondary: 第2候補
  • Tertiary: 第3候補

WLCのController name (ホスト名)はCLIhostname コマンドで設定されている名称です。
WLCのWeb UIからはメニュー: Administration > DeviceGeneral より Host Name の項目で確認できます。

WLCのHostnameの確認

WLCのIPアドレスにはWMI (Wireless Management Interface)のものを指定します。
Web UIで管理接続するためのIPアドレスと同じとは限らないので注意してください。

筆者は(WMIが別IPアドレスであるのを忘れて、)WebブラウザのURL欄からIPアドレスをコピーして間違えた経験があります。

指定すべきWLCのIPアドレス

HA SSOにより論理的に1台に見えている場合もあるので、構成を把握した上で設定してください。

例えば物理的に3台あるものの、その内の2台が論理的に1台 (1セット扱い)のHA SSO構成となり、PrimaryとSecondaryしか設定しないケースがあります。

Catalyst 9800がHA SSO構成時のJoin先の指定

Primary, Secondary, Tertiary分の設定を併記しているので、必要な分を設定してください。

書式

capwap ap primary-base <Primary Controller name> <Primary controller IP address>

capwap ap secondary-base <Secondary Controller name> <Secondary controller IP address>

capwap ap tertiary-base <Tertiary Controller name> <Tertiary controller IP address>

設定例

capwap ap primary-base wlc01 198.51.100.241

capwap ap secondary-base wlc02 198.51.100.242

capwap ap tertiary-base wlc03 198.51.100.243

CAPWAP関連設定の初期化

CAPWAP関連の設定を初期化したい場合は下記コマンドを実行します。初期化処理の過程で再起動が行われます。

capwap ap erase all

実行すると下記のログのように本当に続けるかを確認されます。問題がなければEnterを押下します。

ap01#capwap ap erase all

WARNING :" capwap ap erase all" is altered to perform DATA WIPE on COS AP.
The following files will be cleared as part of this process
1) Config ,Bak config files
2) Crashfiles
3) syslogs
4) Boot variables
5) Pktlogs
6) Manually created files
 Are you sure you want continue? [confirm]

capwap ap erase all

CAPWAP関連設定の初期化は、検証環境で色々と試しているうちに現状の設定が分からなくなった場合などに活用します。

状態の確認

無線APでJoin先候補のWLCの確認

無線APでJoin先候補のWLCの確認

無線APが認識している「Join先の候補のWLC」は下記コマンドで確認できます。

show running-config

無線APが現在JoinしているWLCの確認

無線APが現在JoinしているWLCの確認

実際に現在Join済みのWLCは下記コマンドの MwarApMgrIpMwarName の情報で確認できます。

show capwap client rcb

RCBはRadio Control Blockの略です。

WLC側からの設定

Join済み無線APに対するWLC側からの設定を補足します。

WLC側からの設定

WLC側からの無線APの設定変更メニュー

無線APがWLCにJoin中であれば、WLC側から設定変更が行えます。

WLC (Catalyst 9800)のWeb UIでは、メニュー: Configuration > Wireless > Access PointsAll Access Points セクションから対象の無線AP (Catalyst 9100)を選択して設定変更を行えます。

WLC側のWeb UIからの無線APの設定

WLC側のWeb UIからの無線APのIP関連設定

無線APのIPアドレスや名前解決の設定は、General タブの IP Config セクションから行えます。

WLC側からの無線APのIPアドレス関連設定

WLC側のWeb UIからの無線APのJoin先指定

無線APの「Join先のWLC」の設定は High Availability タブから行えます。
Join先の情報は無線APに記憶されるため、WLC側にはコンフィグとしては残りません。

WLC側からの無線APのJoin先の設定

混同注意: Backup Primary/Secondary Controllerの設定

Catalyst 9800側のAP Join Profile内の設定に Backup Primary Controller と Backup Secondary Controller がありますが、Catalyst 9100側の capwap ap primary-base/secondary-base の設定とは異なるものです。

Backup Primary/Secondary Controllerの設定

公式ドキュメントではBest Practicesに違いが整理されています。

Cisco Catalyst 9800 Series Configuration Best Practices - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/technical-reference/c9800-best-practices.html#Primarysecondarytertiaryversusbackupprimarybackupsecondary

Primary/secondary/tertiary versus backup primary/backup secondary のセクションを参照してください。

端的に解説すると
* Primary/Secondary/Tertiary WLCの指定は無線APレベル
* Backup Primary/Secondary ControllerはWLCレベル
であり、設定の観点が異なります。

そして無線APレベルのPrimary/Secondary/Tertiary WLCの方が優先度が高いため、明示的に無線APレベルで手動指定する設計になっていれば、WLCレベルでBackup Primary/Secondary Controllerを利用する必要性が薄れます。

補足: キッティング作業から本番導入までのフローの考慮

本番環境でDHCP Option 43やDNSによってWLCにJoinした後に、WLC側で設定し直す運用も考えられます。 しかしながら、WLC側からの設定変更をミスすると、無線APとのIP到達性 (IP Reachability)が失われて復旧対応に追われる羽目になるかもしれません。

具体例を挙げると、本番環境では無線APを天井のような高所に設置した状態で、WLC側での設定ミスによりIP到達性がなくなり、物理的にSerial Consoleケーブルの接続性も確保できなくなるケースが想定されます。 そのためキッティング作業から本番導入までのフローは慎重に検討してください。

キッティング作業から本番導入までのフローの考慮

関連ドキュメント

Command Reference

Cisco Catalyst 9100 Series Wi-Fi6/6E Access Point Command Reference, IOS-XE Releases - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/access_point/ios-xe/command-reference/b-cisco-cat-ap-iosxe-cr.html

Command Referenceより関連するChapterを下記に抜粋します。

Chapter: capwap Commands

設定系コマンドが載っています。

Cisco Catalyst 9100 Series Wi-Fi6/6E Access Point Command Reference, IOS-XE Releases - capwap Commands [Cisco Catalyst 9100 Access Points] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/access_point/ios-xe/command-reference/b-cisco-cat-ap-iosxe-cr/capwap_commands.html

Chapter: show Commands

状態の確認系コマンドが載っています。

Cisco Catalyst 9100 Series Wi-Fi6/6E Access Point Command Reference, IOS-XE Releases - show Commands [Cisco Catalyst 9100 Access Points] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/access_point/ios-xe/command-reference/b-cisco-cat-ap-iosxe-cr/show_commands.html

関連情報: Join先WLC指定の効率化

Join先のWLCの指定に関しては、AP Priming Profileと呼ばれる機能があり効率化が可能です。

CLIとWeb UIからの設定方法を下記に整理しております。

Catalyst 9800のCLIからのAP Primingの設定方法と動作の整理 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2024/05/12/164138

Catalyst 9800のWeb UIからのAP Primingの設定 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2024/11/28/224113

ただし、必ず検証して動作を把握した上でAP Primingの利用を検討してください。

関連記事

Catalyst 9100 (Lightweight CAPWAP Mode)のログイン情報 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2024/03/11/001000

Catalyst 9100 (無線AP)のBaud Rateの変更 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2023/12/25/175518

Cisco無線LAN製品におけるDHCP Option 43のIP Addressの16進数表記への変換 (CyberChefを利用) - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2024/03/10/144138

ISC DHCPでのCisco Catalyst AP向けDHCP Option 43設定 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/2024/11/21/204617

Catalyst 9800のWeb UIからのAP Primingの設定

Catalyst 9800には「WLC側にて無線APのJoin先を明示的に制御する」ためのAP Primingと呼ばれる機能があります。
本記事ではAP PrimingのWeb UI (GUI)からの設定方法を扱います。

以前のAP PrimingはCLIからしか設定できませんでしたが、v17.15.1からWeb UI (GUI)にて設定できるようになりました。

本記事ではWeb UIからの設定方法に焦点を当てるため、動作に関しては下記の記事を参照してください。

myhomenwlab.hatenablog.com

概要

CLIからの設定をそのままWeb UI化したイメージです。設定もCLIと同様に「定義」と「適用」の2段階に分かれます。

  1. AP Priming Profile自体の定義

  2. 適用方法が2パターン
    2-a. AP Filterでの無線AP名を条件指定しての適用

    2-b. 無線APに対するAP Priming Profileの直接割り当て

概要: AP PrimingのWeb UIからの設定

設定方法

イメージ図ではCLIでの設定方法と対比して解説しております。

1. AP Priming Profile自体の定義

無線APのJoin先となるWLCを定義するAP Priming Profileの設定です。本設定は定義のみで適用は行いません。

メニュー: Configuration > Tags & Profiles > AP Priming から設定を行います。
備考: v17.15.1より追加された新規メニューです。

AP Priming Profileの新規メニュー

下記はAP Priming Profileの設定イメージです。

AP Priming Profile自体の定義

AP Priming Profileで定義するパラメーターの要点は下記の通りです。

  • AP Priming Profileを複数作るようなケースでは、Profile Name に設定意図を組み込むと分かりやすくなります。
    例えば、全ての無線APに適用するならば PRIMING_ALL_AP や、東京と大阪のWLCに分散収容してAct-Act構成にするのであれば、 PRIMING_TOKYO , PRIMING_OSAKA にするなど。

  • Primary/Secondary/Tertiary の各ControllerのHostnameやIPアドレスを入力します。IPアドレスはWMI (Wireless Management Interface)を指定します。

  • 無線APに設定をPushするには Priming Override を有効化します。

2-a. AP Filterでの無線AP名を条件指定しての適用

無線APの名称に基いてAP Primingを適用する設定です。

メニュー: Configuration > Tags & Profiles > Tags より AP > Filter から設定を行います。

AP Filterの設定メニュー

下記はAP Priming Profileの設定イメージです。

AP Filterでの無線AP名を条件しての適用

  • 以前だと、無線AP名の条件指定に合致したものに対する「Tagの割り当て」の機能のみでした。v17.15.1にて「Priming Profileの割り当て」が可能になりました。

  • Priority の順に無線AP名が AP name regex にマッチしているか評価されます。AP Filterを複数設定する場合は順番を意識して設定してください。

  • Priming Profile には事前に定義しておいた設定を紐づけます。

2-b. 無線APに対するAP Priming Profileの直接割り当て

無線AP単位でAP Priming Profileを適用する設定です。

メニュー: Configuration > Tags & Profiles > Tags より AP > Static から設定を行います。

無線APのTagとProfile割り当てのメニュー

下記は無線APに対してAP Priming Profileを直接割り当てる際の設定イメージです。

無線APに対するAP Priming Profileの直接割り当て

Priming Profile には事前に定義しておいた設定を紐づけます。

関連ドキュメント

筆者が確認した2024年11月時点では、Release NoteとConfiguration GuideにはWeb UIからの設定に関する記述はされていなかったです。

Release Note

Release Notes for Cisco Catalyst 9800 Series Wireless Controller, Cisco IOS XE 17.15.x - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-15/release-notes/rn-17-15-9800.html

Configuration Guide

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.15.x - AP Joining [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-15/config-guide/b_wl_17_15_cg/m_set_ap_priority.html#fht-ap-fb-wlcs

関連記事

myhomenwlab.hatenablog.com

vSphere版C9800-CLでのSerial Port (Telnet経由)の利用

vSphere版のCatalyst 9800-CL (C9800-CL)にて、Serial PortをTelnet経由で利用する設定方法を整理しました。

注意点: C9800-CLでSerial Portを利用するために platform console serial コマンドを設定すると、vSphereの仮想コンソールからの操作は利用できなくなります。すなわち、「Serial Port」と「仮想コンソール」の利用は排他的になります。

platform console serial コマンド設定時の影響

検証時の環境情報

検証は下記の環境で行いました。

設定

vSphere ESXiのFirewall rulesの設定

CLIGUIからの設定方法を記載します。どちらか一方を実施してください。

CLI (esxcli)からのFirewall rulesの設定

remoteSerialPortFirewall Rulesetを有効化します。
設定変更の前後で状態も確認してください。

esxcli network firewall ruleset list | egrep '(^Name |remoteSerialPort)'

esxcli network firewall ruleset set --enabled=true --ruleset-id=remoteSerialPort

esxcli network firewall ruleset list | egrep '(^Name |remoteSerialPort)'

CLI (esxcli)からSerial Port用のFirewall Rulesetの有効化

GUI (ESXi Host Client)からのFirewall rulesの設定

  • ESXi Host Clientより、メニュー: Networking > Firewall rules に移動し、VM serial port connected over network を選択して Enabled の状態を確認します。EnabledYes になっている必要があります。

    Firewall rulesの設定状態の確認

  • No になっている場合は VM serial port connected over network を選択した状態で Actions ボタンより Enabled を押下します。

    Firewall rulesよりSerial Port用Rulesetの有効化

vSphere ESXiの未使用ポートの確認

  • 仮想マシンへのSerial Portの接続は、vSphere ESXi Hostのポートで待ち受けます。そのため、利用予定のポート番号が既にBindされていないかをESXi Shellから適宜事前確認してください。
esxcli network ip connection list

esxcli network ip connection list

  • egrep コマンドに出力をパイプで渡して絞り込みすると分かりやすくなります。対象ポートが LISTEN していると既にBindされていて使用不可です。下記は 2001 番のポートを利用できるか確認する例です。
esxcli network ip connection list | egrep '(^Proto|:2001)'

利用予定のポート番号の確認

vSphere ESXIでの仮想マシンとしての設定

  • C9800-CLの仮想マシンEdit ボタンを押下します。備考: C9800-CLは事前に停止している必要があります。

    C9800-CLの仮想マシン設定の編集

  • Virtual Hardware タブで Add other device より Serial port を押下します。

    Serial Portの追加

    • Serial Portの各種設定を調整します。

      Serial Portの各種設定

      • Use network を選択します。

      • DirectionServer (デフォルト値)を選択します。

      • Port URItelnet://<ESXi-IP-Address>:<Port> の書式で入力します。ESXiのIPアドレスと、Bindされていない未使用のポートを指定します。
        一例: telnet://10.128.11.111:2001

C9800-CLのIOS-XEとしてのSerial Portの設定

vSphere版C9800-CLでSerial Portを利用するための設定

  • platform console コマンドのパラメーターに serial を指定して、設定を保存します。
configure terminal

platform console serial

end

write memory
  • 設定を反映するためには再起動が必要です。
reload
  • 補足: 元に戻したい場合は platform console virtual に設定し直して再起動します。

C9800-CLのSerial Portへの接続

接続プロトコルTelnetになります。
デフォルトでSSHが選択されているターミナルの場合は、Telnetへの切り替えとポート指定を忘れないでください。

C9800-CLのSerial Portへの接続

関連ドキュメント

各観点で関連するドキュメントを控えておきます。

vSphere ESXi

vSphere ESXiのポート情報の確認

Troubleshooting network and TCP/UDP port connectivity issues on ESXi
https://knowledge.broadcom.com/external/article/341078/troubleshooting-network-and-tcpudp-port.html

vSphere ESXiのFirewallの設定

Configuring the ESXi Firewall
https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-8912DD42-C6EA-4299-9B10-5F3AEA52C605.html

vSphere ESXiのSerial Portの設定

Virtual Machine Parallel and Serial Port Configuration
https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-ACADB450-85A6-4F6E-9269-F11DC71D2564.html

C9800-CLのSerial Portの設定

Configure Console Port on C9800-CL hosted on ESXi - Cisco
https://www.cisco.com/c/en/us/support/docs/wireless/catalyst-9800-wireless-controllers-cloud/217431-configure-console-port-on-c9800-cl-hoste.html

ISC DHCPでのCisco Catalyst AP向けDHCP Option 43設定

Cisco社の無線APであるCatalyst 9100シリーズには、DHCP Option 43を利用するとWireless LAN Controller (WLC)のIPアドレスを通知できます。 本記事ではISC DHCPでの設定例を紹介します。

注意事項

ISC DHCPは既にメンテナスが終了しています。

ISC DHCP - ISC
https://www.isc.org/dhcp/

ISC has announced the end of maintenance for ISC DHCP as of the end of 2022.

メンテナスは終了していても、ISC DHCPには歴史があって技術的には枯れているため、一時的な検証用途であれば手軽に構築できるメリットが大きいかもしれません。

しかしながら、特定プロジェクト専用に用意された検証環境などで長期に渡って常用するケースでは、トラブルが起きた場合に自分たちで対処できる必要があるため、事前にプロジェクト関係者に利用可否の認識合わせをしておくのが無難です。

メンテナンス切れソフトウェア利用時の考慮の必要性

情報源

該当Versionのドキュメントは下記からだと辿りやすかったです。

Where to find ISC DHCP documentation
https://kb.isc.org/docs/aa-00333

すでにメンテナスが終了していて、利用者も少なくなっている可能性があるので、ドキュメントで判別が出来ない情報があれば、最悪の場合でソース コードからロジックを追う必要性が出てきます。
そのソース コードは下記で公開されています。

ISC Open Source Projects / dhcp · GitLab
https://gitlab.isc.org/isc-projects/dhcp

検証時の情報

検証は下記の環境で行いました。

Cisco社の無線AP向けのDHCP Option 43の書式

まず大前提として、Cisco社の無線AP向けのDHCP Option 43のデータの書式は下記のドキュメントに記載があります。

Configure DHCP OPTION 43 for Lightweight Access Points - Cisco
https://www.cisco.com/c/en/us/support/docs/wireless-mobility/wireless-lan-wlan/97066-dhcp-option-43-00.html

When DHCP servers are programmed to offer WLAN Controller IP addresses as Option 43 for Cisco Aironet LAPs, the sub-option TLV block is defined in this way:
Type - 0xf1 (decimal 241).
Length - Number of controller IP addresses * 4.
Value - List of the WLC management interfaces, typically translated to hexadecimal values.

ISC DHCPの設定として意識するのは
* Typeの0xf1の固定値 (ISC DHCPの設定としては code 241)
* ValueでのWLCのIPアドレスの指定
になります。
ISC DHCPではLengthのByte数は自動算出されていて明示的な設定は不要でした。

下記の画像は書式のサンプルです。

Cisco社の無線AP向けのDHCP Option 43の書式

dhcpd.confの設定例

Linuxディストリビューションによって差異が出てくるので、本記事では dhcpd.conf の設定例に限定して解説します。

設定ファイルの編集後は、ISC DHCPのサービスの再起動を行って設定を反映させるのを忘れないようにしてください。

Global LevelとClass Levelの2つの例を紹介するため、ユースケースに合わせて使い分けてください。

例示用の設定値

例示用に下記の設定値を用いているため、環境に合わせて読み替えてください。

設定項目 設定値の例
option domain-name lab.test
option domain-name-servers 8.8.8.8, 8.8.4.4
subnet 198.51.100.0
netmask 255.255.255.0
range 198.51.100.12 198.51.100.34
option routers 198.51.100.254

Cisco社の無線APは(DHCP Option 43だけでなく)DNSを用いてもWLCのIPアドレスを探そうとするため、意図しないWLCにJoinしないようにDNS関連設定も明示的に設定します。
なお、DNSでは CISCO-CAPWAP-CONTROLLER.<domain-name> のレコードが参照されます。

指定対象のWLCのIPアドレス

Catalyst 9800のWLCで管理している場合は、Wireless Management Interface (WMI)のIPアドレスが指定対象になります。
WMIはメニュー: Configuration > Interface > Wireless より確認できます。 (Modelや構成にも依存しますが、)Webブラウザで接続している管理系のIPアドレスがWMIとは限らないので注意してください。

Catalyst 9800のWMIのIPアドレスの確認方法

Pattern A: Global LevelでのDHCP Option 43によるWLCの指定

Global LevelでのDHCP Option 43によるWLCの指定

全体 (Global Level)に対して適用するため、Cisco社の無線APに限らずDHCP Option 43でWLCのIPアドレスが通知される設定例です。

Cisco社の無線APに絞るための「条件指定がない」ため、設定が比較的にシンプルです。

option domain-name "lab.test";
option domain-name-servers 8.8.8.8, 8.8.4.4;  # Google Public DNS

default-lease-time 600;  # 600 sec = 10 min  (Default: 43200 sec = 12 h)
max-lease-time 7200;     # 7200 sec = 2 h    (Default: 86400 sec = 24 h)

option space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address code 241 = array of ip-address;
option Cisco_LWAPP_AP.server-address 192.0.2.241, 192.0.2.242;
vendor-option-space Cisco_LWAPP_AP;

# TEST-NET-2
subnet 198.51.100.0 netmask 255.255.255.0 {
    range 198.51.100.12 198.51.100.34;  # 4th octet range: .12 - .34
    option routers 198.51.100.254;
}

設定例の Cisco_LWAPP_APserver-address (Cisco_LWAPP_AP.server-address) は任意の名称に置き換えが可能です。 本記事ではCiscoのドキュメントなどで利用されている名称を指定しています。 必要に応じて、分かりやすい名称に書き換えてください。

Pattern B: Class LevelでのDHCP Option 43によるWLCの指定

Class LevelでのDHCP Option 43によるWLCの指定

Cisco社の無線APに限定してDHCP Option 43でWLCのIPアドレスを通知する設定例です。 先のGlobal Levelとの大きな設定の違いは class の構文を用いている点です。

option domain-name "lab.test";
option domain-name-servers 8.8.8.8, 8.8.4.4;  # Google Public DNS

default-lease-time 600;  # 600 sec = 10 min  (Default: 43200 sec = 12 h)
max-lease-time 7200;     # 7200 sec = 2 h    (Default: 86400 sec = 24 h)

option space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address code 241 = array of ip-address;

# TEST-NET-2
subnet 198.51.100.0 netmask 255.255.255.0 {
    range 198.51.100.12 198.51.100.34;  # 4th octet range: .12 - .34
    option routers 198.51.100.254;
}

class "Cisco AP" {
    match if substring (option vendor-class-identifier, 0, 8) = "Cisco AP";
    vendor-option-space Cisco_LWAPP_AP;
    option Cisco_LWAPP_AP.server-address 192.0.2.241, 192.0.2.242;
}

Vendor Class Identifier (VCI)の情報を見てCisco社の無線APを識別しています。

Cisco社の無線APのVendor Class Identifierは、Aironet時代も含めて Cisco AP の文字列から始まるものが多いです。
そのため、substring で先頭から8 Byte (8文字)を抜き出して Cisco AP と一致するか確認しています。

Vendor Class Identifierの情報は下記のドキュメントに掲載されているため、利用しているモデルの情報を確認して適宜修正してください。

Configure DHCP OPTION 43 for Lightweight Access Points - Cisco
https://www.cisco.com/c/en/us/support/docs/wireless-mobility/wireless-lan-wlan/97066-dhcp-option-43-00.html#toc-hId-1692519292

DHCPパケットからは「DHCP Option 60」の情報を見ると、Vendor Class Identifierを確認できます。

DHCPパケット内のVendor Class Identifier (VCI)の一例

補足: codeの値について

本設定例では option Cisco_LWAPP_AP.server-address code 241 = array of ip-address; のように code 241 を指定しています。

「10進数の241」は「16進数の0xf1」で、Cisco社の無線APでWLCのIPアドレスを通知するために利用されています。

DHCP Option 43を利用するからと言って code 43 を指定してしまうと、「16進数の 0x2b」になってしまい、0xf1 から始まらなくなってしまうので留意してください。

ISC DHCP設定とDHCPパケットの対比

関連記事

myhomenwlab.hatenablog.com