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数は自動算出されていて明示的な設定は不要でした。
下記の画像は書式のサンプルです。
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とは限らないので注意してください。
Pattern A: 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_AP
や server-address
(Cisco_LWAPP_AP.server-address
) は任意の名称に置き換えが可能です。
本記事ではCiscoのドキュメントなどで利用されている名称を指定しています。
必要に応じて、分かりやすい名称に書き換えてください。
Pattern B: 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を確認できます。
補足: 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
から始まらなくなってしまうので留意してください。