Aruba AP-325をInstant APに再教育して使い倒す

ご厚意により、安価にAP-325(JW186A)を入手した。スループットも良好で、内蔵RADIUSサーバでWPA2-EAP接続できるし、バッテリー持ちを意識した機能もあるし、IoTをVLAN間で利用できるしで最高すぎて、浮気してしまった。

更新履歴 見出しにジャンプ

日時 変更内容
2025-02-25
  • AP-325は144chに非対応
2025-03-03
  • DMOは相変わらず謎
  • WPA2/3 Transition Modeの対応を確認
  • TxOPは変えられない

Instant AP化 見出しにジャンプ

ご家庭にも馴染むよう、コントローラレスなIAP-325(JW324A)相当に変換する。
ArubaのAPをコントローラーレスでIAPに変換する/US版APを日本リージョンに変換する方法

Aruba AP-325にシリアルコンソールケーブルを接続し、PoE給電で起動する
  1. MACアドレスをDHCPサーバに登録し、IPアドレスを控えておく。
  2. シリアルコンソールケーブルを接続し、PoE給電を開始する。

PoE-PD: 48 V dc (Nominal) 802.3af or 802.3at PoE
Aruba 320 Series Campus Access Points - Specifications

  1. Enterキーでブートを止める
APBoot 1.5.5.9 (build 58433)
Built: 2017-02-15 at 14:48:27

Model: AP-32x
~~

Hit <Enter> to stop autoboot:  0
apboot>
  1. Country Codeとシリアルを入力
proginv system ccode CCODE-JP3-6397665ebf3bf120dd4f32efa7f8f4b036297790
echo -n 'JP3-ABC123DEF456' | shasum -a 1
# 6397665ebf3bf120dd4f32efa7f8f4b036297790
  1. invent -w Instant APに変換
  2. setenv serverip 10.0.5.14 ファームウェアアップデート用にTFTPサーバを指定
  3. upgrade os 0 ArubaInstant_Hercules_8.10.0.15_91324 ファームウェアアップデート
    HPE Networking Support Portal でアカウント作成して入手。
    320 Series Campus Access Pointsのファームウェア ArubaInstant_Hercules_8.10.0.15_91324
    共有メールアドレスは表向き受け付けていない。Firefoxでは表示が崩れて先に進めないので注意。

Note: For security of your company assets, we do not support sign-in with public domain email addresses like gmail.com, yahoo.com, outlook.com, etc. We require you to sign-in with your registered corporate email address.
HPE Networking | Enterprise

  1. upgrade os 1 ArubaInstant_Hercules_8.10.0.15_91324 AP-OSにロールバックしないように
  2. factory_reset
  3. saveenv
  4. reset

設置 見出しにジャンプ

Aruba AP-325の公式マウンタは高額であるし、かといってDIYで再現しようにもAP本体のピンがあまりに小さくて心許なく、日常的な地震や核実験の揺れに耐えられそうになかった。
Mount accessories | Aruba 320 - Product Information Reference

Aruba AP-325のあまりに小さい突起

考えあぐねていたところ、ピンは実はボルトになっているのではと思い至り、ペンチで回したところあっさりと外れた。ISO M4規格と分かったためホームセンターで長めのものを買ってきて、WLX212と同様に非侵襲的に天井設置した。

Aruba AP-325のピンを外し、木材にボルト止め Aruba AP-325をドア枠に端渡して、廊下の天井に非侵襲的に設置

ARMが優秀なのと、死角が無さそうなので向きの微調整は特に必要なかった。

WI-FI Antennas
AP-325/IAP-325: Eight integrated downtilt omni- directional antennas for 4x4 MIMO with maximum antenna gain of 3.5 dBi in 2.4 GHz and 5.0 dBi in 5 GHz. Built-in antennas are optimized for horizontal ceiling- mounted orientation of the AP. The downtilt angle for maximum gain is ~ 30 degrees.
HPE Aruba Networking 320 Series Access Points

ダッシュボード 見出しにジャンプ

https://<IPアドレス>:4343/login
ユーザ名: admin
パスワード: APのシリアルナンバー
Aruba Instant AP基本操作Guide v8.4 | HPE Aruba Networking

概要 見出しにジャンプ

IDS 見出しにジャンプ

APがサービスしてる周波数帯に限らず、既知や干渉するAPやクライアントを一覧できる。IDSの名前には違和感を覚えるが、Aruba Instant APにおけるIntrusion Detection Systemは、許可されていないAPやクライアントを見つける機能を主軸としているからだ。何ブロックも離れたフィットネスジムから筋肉由来のアピール(2.4GHz)が飛んできていて、APも鬱陶しく感じていることだろう。
YAMAHA WLXの見える化ツールのように、認証方式までは見られない。

干渉APのチャンネルや規格の一覧

ネットワーク 見出しにジャンプ

ネットワークタブでは、ESSID毎の状態を確認できる。

ESSID毎のクライアント数やスループット、ノイズの遷移

AppRF 見出しにジャンプ

Aruba Instant APのDPI機能であるAppRFの表示を有効にすると、クライアントのトラフィックを可視化できる。

AppRFの表示: アプリ, URLの表示: 無効
AppleやCloudflare、Zendeskなど一部の既知のサービスは分類されるが、大部分はhttpsとしてツリーマップで表示される AppRFの表示: すべて, URLの表示: 有効
Webレピュテーションが評価され、アクセス先がSNSや信頼できるサイトであることが分かる

アクセスポイント 見出しにジャンプ

AP毎の状態、ARMで自動調整される出力や干渉AP数を確認できる。
AP-325でラジオ2が点いてないのは正常で、スプリット5GHzモードで40MHz幅を敢えて選択しない限り使われないはず。

正規のAPや干渉AP、CPU使用率、空きメモリ、周辺のクライアント数などが表示される

スペクトル 見出しにジャンプ

APがサービスしてる周波数帯で、Wi-Fiだけでなく非Wi-Fiデバイスの干渉を確認できる。
Non Wi-Fi Interferers ちょっとしたWi-SpyやRTL-SDRである。非Wi-Fiデバイスの干渉を表示するには、バックグラウンドのスペクトルモニタリングを有効にする。
このような干渉を受けると、ARMは自動でチャンネル変更を試みる。既定ではクライアント使用中に変更されないが、クライアント認識を無効にすると、可用性を度外視して電波状況を最良に保てる。

コードレス電話機や電子レンジなどの中心周波数、帯域幅、チャンネル、信号強度、デューティ比が表示される

6chは1, 11chからの不要発射を受けてノイジーと思われ、非Wi-Fiデバイスの中心周波数もまた2.4GHz帯の中央に寄っている(周波数ホッピングや電子レンジは例外)。このためかARMは1, 11chに寄せたがる傾向にある。
2.5. 不要発射の強度の許容値 2.4GHz帯無線LAN等の技術基準等の見直しに係る報告
Hotspot deployments: Part I - Interference sources
私の通院先も医療機器への干渉を避けるために6chを開けて1, 11chで設計し、入院患者には2.4GHzを吹かないよう通達する苦肉の策が取られていた。
2.4GHz帯は貴重な資源なので、40MHzチャネルは5GHz帯だけで使おう

クライアント 見出しにジャンプ

端末情報やそれぞれの信号強度やスループットが表示される。

設定 見出しにジャンプ

WLX212のパフォーマンスチューニングを踏襲しつつ、ブロードキャストフィルタや内蔵RADIUSサーバスペクトルモニタリングAirGroupなどAruba Instant APならではの機能を活用していく。
HPE Aruba Networking Instant Operating System 8.10.0.0 Help Center ※画面をかなり大きくしないと見出しが隠れてしまう
Instant AOS-8.10.0.0 User Guide
Aruba 320 Series Campus Access Points - Specifications

ネットワーク 見出しにジャンプ

  • SetMeUp
    既定でオープンで吹き始めるので、直ちに削除

  • wired-SetMeUp

  • default_wired_port_profile
    LAGでスループットを向上させたり、PoE"給電"を行ってAPを数珠つなぎできるらしい。
    Configuring Wired Settings

  • 家庭SSID
    VLAN2, WPA3-PSK, プライバシーセパレータ, IoTへのアクセス(AirGroupクライアント)
    Configuring Wireless Network Profiles

    1. 基本
      • 名前と用途
        • 名前: SSID
        • タイプ: 無線
        • 主な用途: 従業員
          音声は常にマーキングされるためNG。ゲストはCaptive Portal向け。
      • ブロードキャスト/マルチキャスト

        ARP—When set to ARP, the Instant AP drops all broadcast and multicast frames except DHCP and ARP, IGMP group queries, and IPv6 neighbor discovery protocols; additionally, it converts ARP requests to unicast and send frames directly to the associated client. This is applied on wireless radio egress. The broadcast filtering option is set to ARP by default when an SSID profile is created.
        Configuring WLAN Settings for an SSID Profile

        • マルチキャスト送信最適化: 無効
          マルチキャスト送信レートを全端末の送信レートに基づいて決めるらしいが、最大でも後述の送信レートと同じ24Mbpsなので要らないと判断
        • ダイナミックマルチキャスト最適化: 無効
          ブロードキャストフィルタの内容をユニキャストに変換する機能とあるが、IGMP SnoopingのようなIPの機能ではないようで、実際IPでの挙動に差は見られなかった。
          SSID全体で一律のマルチキャストレートでなく、端末毎のユニキャストレートで送ることでスループット低下を低減する機能なのだろうか……。

        It overrides Broadcast filtering and sends broadcasts as unicasts
        Broadcast filtering ARP with Dynamic multicast optimization enabled | Controllerless Networks
        ArubaOSと同じなら上位ルータでIGMP/MLD Snoopingが必要?
        Optimizing Aruba WLAN for Roaming Devices - 9B71B25A-80A1-4851-8B5F-21FDC9AB083F-2-VRD_Optimizing-WLAN-for-Roaming-Devices.pdf

        • DMOチャネル使用率のしきい値
          ダイナミックマルチキャスト最適化をやめる閾値。9割もユニキャストになったらメリットがないということでしょう。
      • 送信レート
        またの名をビーコンレート。
        • 2.4GHz: 最小12Mbps
          使用端末が最低でも11nに対応していたので11bは拒否した。
        • 5Ghz: 最小24Mbps
          CiscoとAppleの推奨値に合わせた。
      • 802.11
      • WMM
        RFC 8325 DSCP-to-UP Mappingはルータ側で行うため、特に弄らなかった。
        wlan edca-parameters-profileもできないようで、IEEE 802.11revmcでのTxOPの変更に対応していない。
      $ sudo iw dev wlp1s0 scan
      BSS 00:53:00:16:93:25(on wlp1s0) -- associated
          ~~
          WMM:     * Parameter version 1
              * u-APSD
              * BE: CW 15-1023, AIFSN 3
              * BK: CW 15-1023, AIFSN 7
              * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
              * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
      
      Voice and Video
      Wi-Fi Multimedia Traffic Management
      • その他
        • 無通信のタイムアウト
          ARPテーブルみたいなもの?
          Client re-auth / timeout best practices. | Security
        • ユーザー間のバインドを拒否: 有効
          プライバシーセパレータ
        • VLAN内トラフィックを拒否: 無効
          プライバシーセパレータをより強固に、ホワイトリスト制にしたもの?IPv6が使えなくなる。

        This feature is supported only in IPv4 networks.
        Deny Intra-VLAN Traffic

    2. VLAN
      • クライアントIPの割り当て: ネットワーク割り当て
        dhcpdは上位ルータが行う
      • クライアントVLANの割り当て: スタティック
      • VLAN: 2
    3. セキュリティ
      • セキュリティレベル: パーソナル
      • キー管理: WPA3-パーソナル
        Transition Mode(Mixed Mode)に対応しているため、WPA2クライアントも接続できている。
      $ sudo iw dev wlp1s0 scan
      BSS 00:53:00:16:93:25(on wlp1s0) -- associated
          ~~
          RSN:	 * Version: 1
              * Group cipher: CCMP
              * Pairwise ciphers: CCMP
              * Authentication suites: PSK FT/PSK SAE FT/SAE
              * Capabilities: 4-PTKSA-RC 4-GTKSA-RC MFP-capable (0x00a8)
              ~~
              * Group mgmt cipher suite: AES-128-CMAC
      
      • パスフレーズの形式: 16進文字64文字
        ESSIDとPSKが同じなら、異なるAP下の端末を再設定なく接続できる(ローミング)。

      256bitバイナリ鍵の設定や管理が煩雑であったことから、文字列のパスフレーズからPSKを生成するアルゴリズムが規定され、これが辞書攻撃に対する潜在的な脆弱性となった
      WPA3のはなし|Wireless・のおと|サイレックス・テクノロジー株式会社

    4. アクセス
      • アクセスルール: 制限なし
        ネットワークベースやロールべースに変更し、IAPでファイアウォールを行ったり、上位ルータでDSCPを評価してQoSするのに便利なFacetime, Cisco JabberやSkype, Discord, LineなどのL3マーキングが行える。
        Media Classification for Voice and Video Calls
        Siri、iTunes、Discord、Apple、LINE、Windows UpdateをL3マーキング
      • ダウンロードルール: 無効
        下りトラフィックをL3マーキングし、音声や動画、バックグラウンドなどの802.11 Access Categoryに分類したい場合は有効。
        上位ルータでDSCPからUser Priorityを想定した変換を行うとき、L3トラフィックが意図しないAccess Categoryに分類されないよう気を付ける。
  • 管理SSID
    ネイティブVLAN, WPA2-EAP(EAP-TLS), IoTへのアクセス(AirGroupクライアント)

    1. VLAN
      • クライアントVLANの割り当て: デフォルト
    2. セキュリティ
  • ゲスト/IoT SSID
    VLAN3, WPA2-PSK, プライバシーセパレータ, IoTの接続(AirGroupサーバー)

    1. 基本
      • 802.11
        • 周波数帯: 2.4GHz
    2. セキュリティ
      • セキュリティレベル: パーソナル
      • キー管理: WPA2-パーソナル
    3. アクセス
      • アクセスルール: ネットワークベース すべての対APネットワークを拒否
      • ダウンロードルール: 無効

MCSとRTS/CTS閾値の設定は、GUIにもCLIにも見当たらなかった。
Configuring Modulation Rates on a WLAN SSID
Multi-User MIMO

アクセスポイント 見出しにジャンプ

システム 見出しにジャンプ

Configuring System Parameters

  • 一般
  • 管理
    • ローカル
      仮想コントローラのWeb UIのログインユーザーとパスワードの変更が行える
  • アップリンク
    • 管理
      • アップリンクの強制: イーサネット
  • モニタリング
    • サーバー
    • システムログ機能レベル
      Configuring a Syslog Server
      • システムログ: Notice
        syslogで送信する最低Facilityを決める。
        これにより下記リファレンスにある、それぞれのカテゴリで選んだNoticeまでのログと、いくつか採番されていないログが514/udp宛に送信される。
        Aruba Instant 8.10.0.0. Syslog file
        Debugで、device.arubanetworks.comにシリアル番号やファームウェアバージョンをテレメトリしているのが分かる。
      • システム: Notice
        300000番台。Wi-Fiの全検出ログ(チャンネルあり)326272、非Wi-Fiの干渉ログ341201、他所のAPを含む(!?)接続326271・切断326274・認証326278ログ・が含まれる。
        警告に設定変更内容341101を含む。
      • AP デバッグ: 警告
      • ユーザー: エラー
        500000番台。NoticeでIAPへの認証ログが含まれる。
        警告でSTAの状態541004やクライアント数541013が含まれる。
      • ネットワーク: 警告
      • ユーザーデバッグ: 警告
      • セキュリティ: 警告
        100000番台。Noticeで干渉Wi-Fiログ(チャンネルあり)127004が含まれる。
      • 無線: Notice
        400000番台。干渉Wi-Fiログ(チャンネルなし)404400非Wi-Fiの干渉ログ(中心周波数, 帯域幅あり)404402が含まれる。Promtailでログを受信し、Grafanaで可視化した。
      警告に、干渉を検知しARMによるチャンネル変更ログ`404069`が含まれる。

RF 見出しにジャンプ

IDS 見出しにジャンプ

WLAN関連のアプリケーション保護
Configuring Wireless Intrusion Protection and Detection Levels
ids
Intrusion Detection

サービス 見出しにジャンプ

Services

AirGroup 見出しにジャンプ

ダッシュボードの概要タブには、AirGroupサービスと稼働するサーバのホスト名や属するVLAN IDが表示される

AirGroupを使うと、別VLANからAirPlayやAirPrint、iTunesホームシェアリングを使える。
Bonjour プロトコルに関するセキュリティ上の暗黙の前提条件 (開発者や管理者向け) - Apple サポート (日本)
ホームシェアリングを使ってコンピュータからほかのデバイスにメディアを共有する - Apple サポート (日本) iTunes for Windowsのメニューバーから、ホームシェアリングをオンにする

CiscoはBonjourをEVPNで扱う豪勢な構成を提案している。
Solutions - Cisco Traditional Wired and Wireless Local Mode Bonjour Deployment Guide - Cisco

メンテナンス 見出しにジャンプ

証明書 見出しにジャンプ

WLX212のようにWPA3-EAPとはいかないが、WPA2-EAPであれば内蔵RADIUSサーバを使用できる。
EAP-TLS, EAP-TTLS(MSCHAPv2), EAP-PEAP (MSCHAPv2), LEAPに対応。証明書なしのLEAPは推奨されない。
Supported EAP Authentication Frameworks
Authentication Certificates

Appleデバイスの既定であり強固なEAP-TLSを設定する。Appleデバイスには、構成プロファイルでクライアント証明書バンドルをインストールする。

TLSCertificateRequired Default: false
WiFi | Apple Developer Documentation

WiFi.EAPClientConfiguration | Apple Developer Documentation
構成プロファイルをiPhoneにインストールし、AppleのWi-Fiデバッグプロファイルで確認

EAP-TLSでは、EAP-TTLSのサーバ証明書に加えクライアント認証が必要。下記記事を分かる範囲で倣った。
【注意喚起】FreeRADIUSの設定は気を付けないとEAP-TLSに大穴が開く (EAP-TLSを使っていなくても) - hgot07 Hotspot Blog
FreeRADIUSで安全・簡単にEAP-TLSを使えるようにするためのメモ - hgot07 Hotspot Blog

  • Let's EncryptはIAPでの自動更新が難しいため、プライベートCAを作成した。WLX212ではヤマハのCAを端末のルート証明書から検証できるが、今回はルートCAも構成プロファイルに含める必要があった。
    CertificateRoot | Apple Developer Documentation
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
       <dict>
            <key>PayloadCertificateFileName</key>
            <string>CertificateRoot</string>
            <key>PayloadContent</key>
            <data>
            bnlhbnNoaWJh...
            </data>
            <key>PayloadDescription</key>
            <string>Adds Certificate Root</string>
            <key>PayloadDisplayName</key>
            <string>Ore Ore Root Certificate</string>
            <key>PayloadIdentifier</key>
            <string>com.example.mycertrootpayload</string>
            <key>PayloadType</key>
            <string>com.apple.security.root</string>
            <key>PayloadUUID</key>
            <string>d955f482-412c-4d9e-a9a3-76bef17de87f</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
        </dict>
        <dict>
            <key>PayloadCertificateFileName</key>
            <string>client.p12</string>
...
  • システムログにもドメイン名の検証が行われてそうなログが出ていたので多分大丈夫だろう。
awc[5260]: [activate] awc_init_connection: 3138: cert verify: enable, domainame verify: enable
  1. プライベートCAを作成
    crypto pki-remove cert-type TrustedCA certname ca.crt
    crypto pki-remove
    • 新しい証明書のアップロード
      • アップロードする証明書ファイル: ca.crt
      • Certificate name: ca.crt
      • 証明書のタイプ: Trusted CA
      • 証明書の形式: X509
    • New Certificate Assignment
      • アプリケーション: RADIUSサーバー
      • 証明書のタイプ: Trusted CA
      • Certificate name: ca.crt
# RSAのCA鍵を作成
openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:4096

# ルートCA証明書を作成(10年間有効)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=RADIUS Private CA"

# 構成プロファイルのPayloadContent用にBase64変換
cat ca.crt | base64 -w 0
  1. 1.のプライベートCAを認証局に、サーバ証明書を発行
    Problem SSL IAP305 xConvert certificate error | Wireless Access
    Certificate Upload Error | Wireless Access
    • 新しい証明書のアップロード
      • アップロードする証明書ファイル: server-bundle.pem
      • Certificate name: server-bundle.pem
      • 証明書のタイプ: Server
      • 証明書の形式: X509
    • New Certificate Assignment
      • アプリケーション: RADIUSサーバー
      • 証明書のタイプ: Server
      • Certificate name: server-bundle.pem
# RSAのサーバ鍵を作成
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:4096

# 証明書署名要求(CSR)を作成
openssl req -new -key server.key -out server.csr -subj "/CN=radius.example.com"

# サーバ証明書をルートCAで署名(2年間有効)
openssl x509 -req -days 730 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

# 証明書バンドルを作成
cat server.key server.crt ca.crt > server-bundle.pem
  1. 1.のプライベートCAを認証局に、EAP-TLS用にクライアント証明書client.p12を発行。
    Common Nameclient1ダッシュボードに表示される端末名になる。
# クライアント鍵をECC形式で作成
openssl ecparam -genkey -name prime256v1 -out client.key

# CSR作成
openssl req -new -key client.key -out client.csr -subj "/CN=client1"

# クライアント証明書をルートCAで署名
openssl x509 -req -days 730 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt

# Wi-Fiプロファイルに埋め込めるようにPKCS#12形式に変換
openssl pkcs12 -export -out client.p12 -inkey client.key -in client.crt -certfile ca.crt -name "Wi-Fi Client Certificate"

# 構成プロファイルのPayloadContent用にBase64変換
cat client.p12 | base64 -w 0

規制 見出しにジャンプ

DRT Upgrade
1.0_772841.0_89291で144ch対応が見られるが、AP-325は対応しないようで、日本では80MHz幅で132chを使えない。

# show ap allowed-channels 

Allowed Channels for AP Type 325 Country Code JP3
-------------------------------------------------
PHY Type                  Allowed Channels
--------                  ----------------
2.4GHz (indoor)           1 2 3 4 5 6 7 8 9 10 11 12 13
5GHz (indoor)             36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140
2.4GHz (outdoor)          1 2 3 4 5 6 7 8 9 10 11 12 13
5GHz (outdoor)            100 104 108 112 116 120 124 128 132 136 140
2.4GHz 40MHz (indoor)     1-5 2-6 3-7 4-8 5-9 6-10 7-11 8-12 9-13
5GHz 40MHz (indoor)       36-40 44-48 52-56 60-64 100-104 108-112 116-120 124-128 132-136
2.4GHz 40MHz (outdoor)    1-5 2-6 3-7 4-8 5-9 6-10 7-11 8-12 9-13
5GHz 40MHz (outdoor)      100-104 108-112 116-120 124-128 132-136
5GHz 80MHz (indoor)       36-48 52-64 100-112 116-128
5GHz 80MHz (outdoor)      100-112 116-128
5GHz 160MHz (indoor)      None
5GHz 160MHz (outdoor)     None
5GHz (DFS)                52 56 60 64 100 104 108 112 116 120 124 128 132 136 140
5GHz (ZWDFS)              disable