Schlagwort-Archive: CLI

Troubleshooting Cisco Aironet Client Disconnectes

Gestern hatte ich Gelegenheit ein WLAN-Problem zu entstören, bei dem ca. 50% der angebundenen Clients sofort nach der erfolgreichen Assoziierung sich wieder getrennt haben.

Auf dem Access Point wurde z. B. folgendes gelogged (man achte auf dem Timecode!):

Jan 28 13:30:57.230: %DOT11-6-ASSOC: Interface Dot11Radio0, Station   aaaa.bbbb.cccc Associated KEY_MGMT[WPAv2 PSK]
Jan 28 13:30:57.294: %DOT11-6-DISASSOC: Interface Dot11Radio0, Deauthenticating Station aaaa.bbbb.cccc Reason: Sending station has left the BSS
Jan 28 13:30:57.294: Dot11Radio0: Going to delete client aaaa.bbbb.cccc Reason: request

Um sich dem Thema zu nähern habe ich erstmal geprüft, ob ggf. ein Störer existiert:

AP# debug dot11 dot11Radio 0 carrier busy
Jan 28 12:53:28.577: **disc_send_reset_event, event=1
Jan 28 12:53:28.581: %LINK-6-UPDOWN: Interface Dot11Radio0, changed state to down
Jan 28 12:53:28.589: %LINK-5-CHANGED: Interface Dot11Radio0, changed state to reset
Jan 28 12:53:29.581: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to down
Jan 28 12:53:29.585: DOT11 EVENT:disc_config: root set device to 9E
Frequency  Carrier Busy %
———  ————–
2412         18
2417         18
2422          4
2427          7
2432         16
2437          7
2442          9
2447          7
2452         13
2457          7
2462         58
2467         11
2472         43
dot11_build_allowed_power_levels 8764 8000 0
Jan 28 12:53:44.673: DOT11 EVENT: dot11_build_allowed_power_levels 8764 8000 0
Jan 28 12:53:49.461: %LINK-6-UPDOWN: Interface Dot11Radio0, changed state to up
Jan 28 12:53:50.461: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to up

Zu beachten ist hier, dass das Radio-Interface für den Zeitraum in einen Reset-Status geht. Auch der aktuell ausgewählte Kanal kann abgerufen werden:

AP# show controllers do 0
!
interface Dot11Radio0
Radio Ibiza 2.4, Base Address cccc.dddd.ffff, BBlock version 0.00, Software version 4.18.1
Serial number: FOCxxxxxxxx
Unused dynamic SQRAM memory: 0x0000C8F0 (50 KB)
Unused dynamic SDRAM memory: 0x00089264 (548 KB)
Spectrum FW version: 1.15.0
Number of supported simultaneous BSSID on Dot11Radio0: 16
Carrier Set: EMEA (EU) (-E)
Uniform Spreading Required: No
Configured Frequency: 2447 MHz  Channel 8 

Notfalls, kann man bei Bedarf den automatisch gewählten Kanal auch nochmals automatisch suchen lassen oder den Access-Point in einen Kanal zwingen:

AP(config)# interface Do0
AP(config-if)# channel least-congested
Jan 28 12:51:14.680: %LINK-6-UPDOWN: Interface Dot11Radio0, changed state to down
Jan 28 12:51:14.688: %LINK-5-CHANGED: Interface Dot11Radio0, changed state to reset
Jan 28 12:51:15.680: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to down
Jan 28 12:51:15.684: DOT11 EVENT:disc_config: root set device to 9E
Jan 28 12:51:15.688: %DOT11-6-FREQ_SCAN: Interface Dot11Radio0, Scanning frequencies for 13 seconds
Jan 28 12:51:28.955: DOT11 EVENT: dot11_build_allowed_power_levels 8764 8000 0
Jan 28 12:51:33.147: %DOT11-6-FREQ_USED: Interface Dot11Radio0, frequency 2447 selected
Jan 28 12:51:33.147: DOT11 EVENT: dot11_build_allowed_power_levels 8764 8000 0
Jan 28 12:51:38.039: %LINK-6-UPDOWN: Interface Dot11Radio0, changed state to up
Jan 28 12:51:39.039: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to up

Nun zurück zum Problem, dem sofortigen Trennen der Verbindung. Das Standardlog impliziert, dass der PC die Trennung forciert hat. Mit ein paar Debug-Befehlen kann man dies untermauern:

AP#deb dot11 mgmt interface
AP#deb dot11 mgmt msg
AP#deb dot11 mgmt ssid
AP#deb dot11 mgmt state-machine
AP#deb dot11 mgmt station
Jan 28 13:30:57.214: Dot11Radio0: Tx AssocResp client aaaa.bbbb.cccc
Jan 28 13:30:57.214: dot11_mgmt: dot11_mgmt_sta_deref (ref=3, sta_ptr=0x734648C, mac=aaaa.bbbb.cccc)
Jan 28 13:30:57.230: dot11_mgmt: recv AAA Auth resp for aaaa.bbbb.cccc, vlan name , id 10 and wnid 0
Jan 28 13:30:57.230: dot11_mgmt: same VLAN return from AAA
Jan 28 13:30:57.230: dot11_mgmt: dot11_mgmt_sta_ref (ref=2, sta_ptr=0x734648C, mac=aaaa.bbbb.cccc)
Jan 28 13:30:57.230: SM: —Open Authentication 0x734648C: AAA Auth OK (5)
Jan 28 13:30:57.230: SM:    AAA_Auth (6) –> Assoc (2)
Jan 28 13:30:57.230: %DOT11-6-ASSOC: Interface Dot11Radio0, Station   aaaa.bbbb.cccc Associated KEY_MGMT[WPAv2 PSK]
Jan 28 13:30:57.230: dot11_mgmt:aaaa.bbbb.cccc bss client assoc/reassoc updated stats curr_assoc 2 cur_bss_assoc 2 cur_rptrs 0 cur_bss_rptrs 0lwapp_session_timeout not starting for aaaa.bbbb.cccc
Jan 28 13:30:57.230: dot11_mgmt: dot11_mgmt_sta_deref (ref=3, sta_ptr=0x734648C, mac=aaaa.bbbb.cccc)
Jan 28 13:30:57.294: Dot11Radio0: Rx DisAssoc client aaaa.bbbb.cccc
Jan 28 13:30:57.294: dot11_mgmt:receive disassoc from aaaa.bbbb.cccc
Jan 28 13:30:57.294: Dot11Radio0: Tx Deauth client aaaa.bbbb.cccc
Jan 28 13:30:57.294:  dot11_mgmt: de-auth msg sent with reason = 2

Hier ist klar erkennbar, dass nach der erfolgreichen Assoziation zum WLAN sofort ein DisAssoc vom Client zum Access Point gesendet wird. Ab diesem Punkt habe ich dann gemeinsam mit dem x86-Plattformkollegen den Client „zerlegt“. Letztendlich konnte es auf ein fehlerhaftes verhalten des Virenscanners zurückgeführt werden bei dem eine Policy die Nutzung des WLANs versehentlicherweise geblockt hat.

Cisco CLI mit Befehls-Alias

Wer häufig bestimmte komplexere Befehle auf Cisco Routern nutzt dem werden Aliase sehr gefallen.

Wer Linux kennt wird ab und zu auch mal den Befehl „top“ verwenden welcher die Top CPU Prozesse auflistet. Auf Cisco Routern und Switchen kann man sich mit dem befehl

router1#show processes cpu

Die CPU Prozesse incl. deren Last ausgeben lassen. Aufgelistet werden hier jedoch alle unabhängig ob sie Last verursachen oder nicht. So könnte man mit
einem gepipeden Exclude von „0.00% 0.00% 0.00%“ sich die ausgabe etwas zurecht filtern.

router1#show processes cpu | e 0.00% 0.00% 0.00%
CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 1%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
5 3953752 496538 7962 0.00% 0.11% 0.11% 0 Check heaps
12 3719304 48936 76003 0.00% 0.07% 0.10% 0 Licensing Auto U
13 2449332 2936043 834 0.00% 0.06% 0.05% 0 Environmental mo

Auf Dauer geht es einfacher gehts mit dem Befehls-Alias:

router1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
router1(config)#alias exec top show processes cpu | e 0.00% 0.00% 0.00%
router1(config)#exit
router1#top
CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 1%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
2 352 587977 0 0.00% 0.01% 0.00% 0 Load Meter
5 3953912 496558 7962 0.00% 0.13% 0.11% 0 Check heaps
12 3719380 48937 76003 0.00% 0.07% 0.10% 0 Licensing Auto U
13 2449408 2936157 834 0.00% 0.07% 0.05% 0 Environmental mo
58 836 1138 734 0.23% 0.11% 0.03% 132 SSH Process
84 1268 587995 2 0.00% 0.01% 0.00% 0 Compute load avg

Hyper-V Requirements via Systeminfo

Bei der systeminfo in der CMD wurde bei Windows 8 und Windows Server 2012 ein ziemlich cooles Feature nachgeschoben. Die letzten vier Zeilen des systeminfo Outputs in der CMD geben bei noch nicht aktivierter Hyper-V Rolle an, wie der Support ist aktuell konfiguriert ist.

Vor der Aktivierung der Hyper-V Rolle:

C:\Users\stefan>systeminfo
[…]
Anforderungen für Hyper-V:
Erweiterungen für den VM-Überwachungsmodus: Ja
Virtualisierung in Firmware aktiviert: Ja
Adressübersetzung der zweiten Ebene: Ja
Datenausführungsverhinderung verfügbar: Ja

C:\Users\stefan>systeminfo
[…]
Hyper-V Requirements:
VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes

Nach der Aktivierung der Hyper-V Rolle:

C:\Users\stefan>systeminfo
[…]
Hyper-V Requirements: A hypervisor has been detected. Features required for  Hyper-V will not be displayed.

C:\Users\stefan>systeminfo
[…]
Anforderungen für Hyper-V: Es wurde ein Hypervisor erkannt.
Features, die für Hyper-V erforderlich sind, werden nicht angezeigt.

via CMD schnell prüfen ob ein KB installiert ist.

Oft fragt man sich doch „ist der KB installiert“? Wer schnell mal prüfen muss, ob ein bestimmter KB auf einem System installiert ist geht wie folgt vor.

  1. CMD im Adminmodus (cmd – rechtsklick – Als Admin ausführen)
  2. Dann den Befehl, das Pipe-Symbol „|“ filtert die Ausgabe

wmic qfe list | find „KB2750841“

Ist der KB installiert gibt es dann z.B. folgende Ausgabe (KB, wer hat installiert, wann wurde installiert).

C:\Users\stefan>wmic qfe list | find „KB2750841“
http://support.microsoft.com/?kbid=2750841     CONROE  Update
KB2750841               NT-AUTORITÄT\SYSTEM  11/16/2012
C:\Users\stefan>

WMIC steht für Windows Management Instrumentation Commandline, QFE für Quick Fix Engineering.

Das Ganze ist beispielsweise unwahrscheinlich nützlich wenn man sich eigene Inventarskripte baut oder nur mal schnell eine Info brauch ob der KB drauf ist oder nicht.

WMIC kann natürlich noch weit mehr. Aber dazu ggf. später.