WiFi VLAN fixes, CAP bridge filtering, AdGuard IP conflicts, channel optimization
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- Enable bridge VLAN filtering on CAP for proper per-client VLAN assignment - Fix AdGuard container IP conflicts (.2→.10, .3→.11) with static IPs - Fix 2.4GHz co-channel interference (both APs were on ch 1, CAP now ch 6) - Fix 5GHz overlap (HAP ch 36/5180, CAP moved to ch 52/5260) - Update WiFi access-list: VLAN assignment now active with per-device VLAN IDs - Add Xiaomi Air Purifier MC1 to VLAN 30 access-list Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# WiFi and CAPsMAN Configuration
|
||||
|
||||
**Last Updated:** 2026-02-14
|
||||
**Last Updated:** 2026-02-26
|
||||
**Purpose:** Document WiFi network settings, CAPsMAN configuration, and device compatibility requirements
|
||||
|
||||
---
|
||||
@@ -23,8 +23,8 @@
|
||||
| SSID | XTRM |
|
||||
| Band | 5GHz |
|
||||
| Mode | 802.11ax (WiFi 6) |
|
||||
| Channel | Auto (DFS enabled) |
|
||||
| Width | 80MHz |
|
||||
| Channel | 5180 MHz (ch 36) |
|
||||
| Width | 40MHz |
|
||||
| Security | WPA2-PSK + WPA3-PSK |
|
||||
| Cipher | CCMP (AES) |
|
||||
| 802.11r (FT) | Enabled |
|
||||
@@ -98,44 +98,73 @@ If devices still can't connect, use WPA-only with TKIP-only:
|
||||
| Interfaces | bridge, vlan10-mgmt |
|
||||
| Certificate | Auto-generated |
|
||||
|
||||
### CAP Device (CAP XL ac - 192.168.10.2)
|
||||
### CAP Device (cAP XL ac - 192.168.10.2)
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| caps-man-addresses | 192.168.10.1 |
|
||||
| discovery-interfaces | bridgeLocal |
|
||||
| slaves-datapath | capdp (bridge=bridgeLocal, vlan-id=40) |
|
||||
| certificate | request |
|
||||
| RouterOS | 7.21.1 |
|
||||
| SSH Port | 2222 |
|
||||
| SSH | `ssh -i ~/.ssh/mikrotik_key -p 2222 xtrm@192.168.10.2` |
|
||||
| SSH (via proxy) | See ProxyJump command below |
|
||||
|
||||
**Note:** CAP was factory reset on 2026-02-13. CAPsMAN certificate was regenerated and CAP re-enrolled with `certificate=request`.
|
||||
**SSH Access:** Direct SSH to CAP is unreliable. Use ProxyJump through Unraid:
|
||||
```bash
|
||||
ssh -o ProxyCommand="ssh -i ~/.ssh/id_ed25519_unraid -p 422 -W %h:%p root@192.168.10.20" -i ~/.ssh/mikrotik_key -p 2222 xtrm@192.168.10.2
|
||||
```
|
||||
|
||||
### CAP Bridge VLAN Filtering
|
||||
|
||||
The CAP runs bridge VLAN filtering to properly tag/untag WiFi client traffic before sending it to the HAP over the trunk link (ether1):
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| bridgeLocal | vlan-filtering=yes, pvid=10 |
|
||||
| ether1 (trunk) | bridge port, PVID=10 |
|
||||
| wifi1, wifi2 | dynamic bridge ports, PVID=40 (set by datapath vlan-id) |
|
||||
|
||||
**Bridge VLAN Table:**
|
||||
|
||||
| VLAN | ether1 | wifi1 | wifi2 | bridgeLocal | Purpose |
|
||||
|------|--------|-------|-------|-------------|---------|
|
||||
| 10 | untagged | - | - | untagged | Management |
|
||||
| 20 | tagged | tagged | tagged | - | Trusted |
|
||||
| 25 | tagged | tagged | tagged | - | Kids |
|
||||
| 30 | tagged | tagged | tagged | - | IoT |
|
||||
| 35 | tagged | tagged | tagged | - | Cameras |
|
||||
| 40 | tagged | untagged | untagged | - | CatchAll (default) |
|
||||
|
||||
### CAP Interfaces
|
||||
|
||||
| Interface | Radio | Band | SSID | Security | Status |
|
||||
|-----------|-------|------|------|----------|--------|
|
||||
| cap-wifi1 | wifi1 | 2.4GHz | XTRM2 | WPA2-PSK, CCMP | Working |
|
||||
| cap-wifi2 | wifi2 | 5GHz | XTRM | WPA2/WPA3-PSK | Working (Ch 5220, 20/40MHz) |
|
||||
| cap-wifi1 | wifi2 | 5GHz | XTRM | WPA2/WPA3-PSK, CCMP | Working (Ch 52/5260, 40MHz, DFS) |
|
||||
| cap-wifi2 | wifi1 | 2.4GHz | XTRM2 | WPA2-PSK, CCMP | Working (Ch 6/2437, 20MHz) |
|
||||
|
||||
**Note:** cap-wifi1 uses cfg-xtrm2 but with WPA2+CCMP only (not WPA+TKIP like the local wifi2). Legacy IoT devices requiring TKIP will only work on HAP1's local wifi2.
|
||||
**Note:** cap-wifi2 uses WPA2+CCMP only (not WPA+TKIP like HAP's local wifi2). Legacy IoT devices requiring TKIP will only work on HAP1's local wifi2.
|
||||
|
||||
---
|
||||
|
||||
## WiFi Access List
|
||||
|
||||
**Status:** VLAN assignment via access list is **not active** (rolled back 2026-01-27). All entries use `action=accept` without VLAN ID. Devices get their VLAN via DHCP static leases on the bridge.
|
||||
**Status:** VLAN assignment via access list is **active**. Each entry has a `vlan-id` that assigns the device to the correct VLAN upon WiFi association. This works on both HAP (local) and CAP (remote, via bridge VLAN filtering).
|
||||
|
||||
**29 entries** configured (MAC-based accept rules + 1 default catch-all):
|
||||
**30+ entries** configured (MAC-based accept rules with VLAN IDs + 1 default catch-all):
|
||||
|
||||
| # | MAC | Device | Notes |
|
||||
|---|-----|--------|-------|
|
||||
| 0 | AA:ED:8B:2A:40:F1 | Samsung S25 Ultra - Kaloyan | |
|
||||
| 1 | 82:6D:FB:D9:E0:47 | MacBook Air - Nora | |
|
||||
| 12 | CE:B8:11:EA:8D:55 | MacBook - Kaloyan | |
|
||||
| 13 | BE:A7:95:87:19:4A | MacBook 5GHz - Kaloyan | |
|
||||
| 27 | B8:27:EB:32:B2:13 | RecalBox RPi3 | VLAN 25 (Kids) |
|
||||
| 28 | CC:5E:F8:D3:37:D3 | ASUS ROG Ally - Kaloyan | |
|
||||
| 29 | (any) | Default - VLAN40 | Catch-all |
|
||||
| # | MAC | Device | VLAN |
|
||||
|---|-----|--------|------|
|
||||
| 0 | AA:ED:8B:2A:40:F1 | Samsung S25 Ultra - Kaloyan | 20 |
|
||||
| 1 | 82:6D:FB:D9:E0:47 | MacBook Air - Nora | 20 |
|
||||
| 12 | CE:B8:11:EA:8D:55 | MacBook - Kaloyan | 20 |
|
||||
| 13 | BE:A7:95:87:19:4A | MacBook 5GHz - Kaloyan | 20 |
|
||||
| 27 | B8:27:EB:32:B2:13 | RecalBox RPi3 | 25 |
|
||||
| 28 | CC:5E:F8:D3:37:D3 | ASUS ROG Ally - Kaloyan | 20 |
|
||||
| 31 | C8:5C:CC:40:B4:AA | Xiaomi Air Purifier 2 | 30 |
|
||||
| 32 | (any) | Default - VLAN40 | 40 (catch-all) |
|
||||
|
||||
**Default behavior:** Devices not in the access list get VLAN 40 (CatchAll) via the default rule and the datapath `vlan-id=40`.
|
||||
|
||||
### Show Full Access List
|
||||
|
||||
|
||||
Reference in New Issue
Block a user