Konfiguracja i troubleshooting klienta Wi-Fi z wiersza poleceń

Niezależnie od jakości zarządzanej sieci bezprzewodowej, poprawności jej struktury, godzin spędzonych nad dopieszczaniem konfiguracji, przychodzi moment, w którym coś przestaje działać i trzeba szybko zebrać informacje o urządzeniu klienckim. W przypadku systemu Windows pomocne okazuje się narzędzie netsh – nie tylko do zbierania informacji, lecz także do konfiguracji samego urządzenia!

O narzędziu słów kilka

Netsh jest wbudowanym narzędziem dostępnym w systemie Windows począwszy od wersji Windows 2000. Umożliwia ono wyświetlanie i modyfikowanie ustawień sieciowych urządzenia z odpowiednim systemem operacyjnym, korzystając z dedykowanych komend w CLI. Jest to zatem alternatywa dla graficznego podejścia, mająca swoje plusy (o czym w dalszej części).

Korzystanie z netsh możliwe jest pośrednio poprzez Wiersz Poleceń (cmd.exe) lub Windows PowerShell (powershell.exe) wywołując komendę netsh, a także bezpośrednio poprzez aplikację netsh (netsh.exe) dostępną w katalogu */Windows/System32/. Uruchomienie netsh i wyświetlenie dostępnych komend przy użyciu ’?’ wygląda tak:

C:UsersNSS> netsh
netsh>
netsh>?

The following commands are available:

Commands in this context:
..             - Goes up one context level.
?              - Displays a list of commands.
abort          - Discards changes made while in offline mode.
add            - Adds a configuration entry to a list of entries.
advfirewall    - Changes to the `netsh advfirewall' context.
alias          - Adds an alias.
bridge         - Changes to the `netsh bridge' context.
bye            - Exits the program.
commit         - Commits changes made while in offline mode.
delete         - Deletes a configuration entry from a list of entries.
dhcpclient     - Changes to the `netsh dhcpclient' context.
dnsclient      - Changes to the `netsh dnsclient' context.
dump           - Displays a configuration script.
exec           - Runs a script file.
exit           - Exits the program.
firewall       - Changes to the `netsh firewall' context.
help           - Displays a list of commands.
http           - Changes to the `netsh http' context.
interface      - Changes to the `netsh interface' context.
ipsec          - Changes to the `netsh ipsec' context.
lan            - Changes to the `netsh lan' context.
mbn            - Changes to the `netsh mbn' context.
namespace      - Changes to the `netsh namespace' context.
netio          - Changes to the `netsh netio' context.
offline        - Sets the current mode to offline.
online         - Sets the current mode to online.
p2p            - Changes to the `netsh p2p' context.
popd           - Pops a context from the stack.
pushd          - Pushes current context on stack.
quit           - Exits the program.
ras            - Changes to the `netsh ras' context.
rpc            - Changes to the `netsh rpc' context.
set            - Updates configuration settings.
show           - Displays information.
trace          - Changes to the `netsh trace' context.
unalias        - Deletes an alias.
wcn            - Changes to the `netsh wcn' context.
wfp            - Changes to the `netsh wfp' context.
winhttp        - Changes to the `netsh winhttp' context.
winsock        - Changes to the `netsh winsock' context.
wlan           - Changes to the `netsh wlan' context.

The following sub-contexts are available:
 advfirewall bridge dhcpclient dnsclient firewall http interface ipsec lan mbn namespace netio p2p ras rpc trace wcn wfp winhttp winsock wlan

To view help for a command, type the command, followed by a space, and then
 type ?.

netsh>

Z czego korzystać? Osobiście polecam używać Windows PowerShell gdy:

  • jest dostępny na danej wersji Windows OS – PowerShell powstał w roku 2006
  • sprawdzasz lub konfigurujesz coś manualnie – PowerShell ma wiele wspaniałych cech, które poprawiają użytkowanie w porównaniu do CMD, np. dużo dłuższa historia outputu komend, dynamiczne zawijanie/rozwijanie outputu podczas skalowania okna, łatwiejsze kopiowanie i wklejanie tekstu

Używaj natomiast CMD zamiast PowerShella, gdy planujesz użycie netsh w formie automatycznie uruchamianego skryptu. Dzięki temu skrypt uruchomi się zawsze, niezależnie od wersji systemu Windows.

Jak już wspomniałem netsh związany jest z ustawieniami sieciowymi urządzenia – nie tylko karty LAN czy WLAN, lecz także stosu TCP/IP, wbudowanej funkcjonalności serwera DHCP, firewalla itp. W poniższych przykładach skupiam się na konfiguracji i troubleshootingu klienta bezprzewodowego, ale nic nie stoi na przeszkodzie aby przynajmniej część tych komend lub samą zasadę działania netsh przełożyć na klienta kablowego.

„Czy wiesz że…?”

W celu poprawnego działania komend (zwłaszcza konfiguracyjnych) zaleca się uruchomienie netsh jako administrator (prawoklik -> Uruchom jako Administrator).

Konfiguracja i wyświetlanie ustawień

Zaczynamy od wyświetlenia dostępnych interfejsów:

netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Disconnected   Dedicated        Ethernet
Enabled        Connected      Dedicated        VMware Network Adapter VMnet1
Enabled        Connected      Dedicated        VMware Network Adapter VMnet8
Enabled        Connected      Dedicated        Wi-Fi

Na liście znajdują się cztery interfejsy – Ethernet, Wi-Fi oraz dwa z VMware. Sprawdźmy aktualną konfigurację interfejsu Wi-Fi:

netsh interface ip show config name=Wi-Fi

Configuration for interface "Wi-Fi"
    DHCP enabled:                         Yes
    IP Address:                           192.168.5.10
    Subnet Prefix:                        192.168.5.0/24 (mask 255.255.255.0)
    Default Gateway:                      192.168.5.1
    Gateway Metric:                       0
    InterfaceMetric:                      55
    DNS servers configured through DHCP:  192.168.5.1
    Register with which suffix:           Primary only
    WINS servers configured through DHCP: None

Jak widzisz korzystam z DHCP w celu uzyskania adresu IP i ustawień DNS/WINS. Osiągnięcie takiej konfiguracji możliwe jest poprzez podanie komend:

netsh interface ip set address name=Wi-Fi source=dhcp
netsh interface ip set dnsservers name=Wi-Fi source=dhcp
netsh interface ip set winsservers name=Wi-Fi source=dhcp

Odpowiada to poniżej konfiguracji w trybie graficznym:

Konfiguracja na automatyczne uzyskanie adresów.
Konfiguracja na automatyczne uzyskanie adresów.

Oczywiście możliwe jest także statyczne przypisanie przytoczonych parametrów. Osiągniemy to wpisując poniższe komendy:

netsh interface ip set address name=Wi-Fi source=static addr=10.10.0.5 mask=255.255.255.0 gateway=10.10.0.1 gwmetric=0
netsh interface ip set dnsservers name=Wi-Fi source=static addr=10.10.0.1
netsh interface ip set winsservers name=Wi-Fi source=static addr=10.10.0.1

Dzięki temu uzyskamy poniższą konfigurację:

netsh interface ip show config name=Wi-Fi

Configuration for interface "Wi-Fi"
    DHCP enabled:                         No
    IP Address:                           10.10.0.5
    Subnet Prefix:                        10.10.0.0/24 (mask 255.255.255.0)
    Default Gateway:                      10.10.0.1
    Gateway Metric:                       0
    InterfaceMetric:                      55
    Statically Configured DNS Servers:    10.10.0.1
    Register with which suffix:           Primary only
    Statically Configured WINS Servers:   10.10.0.1

Odpowiada to poniżej konfiguracji w trybie graficznym:

Konfiguracja statyczna adresów karty sieciowej.
Konfiguracja statyczna adresów karty sieciowej.

Tak przygotowaną konfigurację można zapisać do pliku w celu późniejszego wczytania. Poniższa komenda zapisze konfigurację z kontekstu interface do pliku o nazwie config.dat:

netsh interface dump > config.dat

Można także zawęzić interesujący nas zakres konfiguracji. Poniższa komenda zapisze tylko konfigurację dotyczącą ipv4 z kontekstu interface:

netsh interface ipv4 dump > config.dat

Konfigurację można wczytać wykonując poniższą komendę:

netsh exec config.dat

Troubleshooting Wi-Fi

W netsh mamy dostęp do kontekstu wlan, a w nim mnóstwo przydatnych informacji dotyczących karty bezprzewodowej, parametrów aktualnego połączenia, sieci Wi-Fi „słyszanych” przez to urządzenie oraz wiele innych. To wszystko może nam pomóc w znalezieniu problemu w sieci WLAN.

Na początek warto sprawdzić z jaką kartą bezprzewodową mamy do czynienia:

netsh wlan show drivers

Interface name: Wi-Fi

    Driver                    : Karta bezprzewodowej sieci LAN 802.11n
    Vendor                    : Ralink Technology, Corp.
    Provider                  : Microsoft
    Date                      : 2015-05-18
    Version                   : 5.0.57.0
    INF file                  : netr28x.inf
    Type                      : Native Wi-Fi Driver
    Radio types supported     : 802.11b 802.11g 802.11n
    FIPS 140-2 mode supported : Yes
    802.11w Management Frame Protection supported : Yes
    Hosted network supported  : Yes
    Authentication and cipher supported in infrastructure mode:
                                Open            None
                                Open            WEP-40bit
                                Open            WEP-104bit
                                Open            WEP
                                WPA-Enterprise  TKIP
                                WPA-Enterprise  CCMP
                                WPA-Personal    TKIP
                                WPA-Personal    CCMP
                                WPA2-Enterprise TKIP
                                WPA2-Enterprise CCMP
                                WPA2-Personal   TKIP
                                WPA2-Personal   CCMP
                                Vendor defined  TKIP
                                Vendor defined  CCMP
                                WPA2-Enterprise Vendor defined
                                WPA2-Enterprise Vendor defined
                                Vendor defined  Vendor defined
                                Vendor defined  Vendor defined
                                Vendor defined  Vendor defined
    Authentication and cipher supported in ad-hoc mode:
                                Open            None
                                Open            WEP-40bit
                                Open            WEP-104bit
                                Open            WEP
                                WPA2-Personal   CCMP
                                Vendor defined  Vendor defined
    Wireless Display Supported: Yes (Graphics Driver: Yes, Wi-Fi Driver: Yes)

W powyższym outpucie możemy znaleźć między innymi takie informacje:

  • producent/model karty bezprzewodowej
  • wersja sterownika i jego data
  • obsługiwane standardy IEEE 802.11
  • wspierane metody uwierzytelniania i szyfrowania

Taka wiedza pozwoli nam określić możliwości karty bezprzewodowej, zakres obsługiwanych częstotliwości oraz podjąć decyzję o ewentualnym zaktualizowaniu sterownika.

Kolejna komenda da nam trochę dodatkowych informacji o karcie bezprzewodowej. Tak to może wyglądać gdy urządzenie nie jest podłączone do sieci Wi-Fi:

netsh wlan show interfaces

There is 1 interface on the system:

    Name                   : Wi-Fi
    Description            : Karta bezprzewodowej sieci LAN 802.11n
    GUID                   : da111d5e-d551-4aae-5t28-216556df565b
    Physical address       : 48:5a:b6:a2:16:11
    State                  : disconnected
    Radio status           : Hardware On
                             Software On

    Hosted network status  : Not available

Dzięki temu dowiadujemy się o adresie MAC karty bezprzewodowej i statusie radia. Ta sama komenda daje bardziej rozbudowany output gdy jesteśmy podłączeni do sieci Wi-Fi:

netsh wlan show interfaces

There is 1 interface on the system:

    Name                   : Wi-Fi
    Description            : Karta bezprzewodowej sieci LAN 802.11n
    GUID                   : da111d5e-d551-4aae-5t28-216556df565b
    Physical address       : 48:5a:b6:a2:16:11
    State                  : connected
    SSID                   : TEST_SSID
    BSSID                  : 70:0b:01:1c:24:34
    Network type           : Infrastructure
    Radio type             : 802.11n
    Authentication         : WPA2-Personal
    Cipher                 : CCMP
    Connection mode        : Profile
    Channel                : 6
    Receive rate (Mbps)    : 72
    Transmit rate (Mbps)   : 72
    Signal                 : 100%
    Profile                : TEST_SSID

    Hosted network status  : Not available

Pojawiła się informacja o sieci do której jesteśmy podłączeni – SSID, BSSID, użyte metody uwierzytelniania i szyfrowania, a także siła sygnału oraz data rates. Dzięki tym informacjom możemy sprawdzić do jakiego Access Pointa łączy się to urządzenie (sprawdzając BSSID) i ocenić czy odległość od niego nie jest zbyt duża.

Poniżej ostatnia komenda pokazująca możliwości urządzenia pod względem połączenia bezprzewodowego. Output został przycięty do najciekawszych informacji:

netsh wlan show wirelesscapabilities

Wireless System Capabilities
----------------------------
    Number of antennas connected to the 802.11 radio (value not available)

    Max number of channels the device can operate on, simultaneously (value not available)

    Co-existence Support                        : Unknown


Wireless Device Capabilities
----------------------------

Interface name: Wi-Fi

    (...)

    Station                                     : Supported

    Soft AP                                     : Supported

    Network monitor mode                        : Supported

    Wi-Fi Direct Device                         : Supported

    Wi-Fi Direct GO                             : Supported

    Wi-Fi Direct Client                         : Supported

    Protected Management Frames                 : Supported

    DOT11k neighbor report                      : Unknown

    ANQP Service Information Discovery          : Not Supported

    Action Frame                                : Not Supported

    Diversity Antenna                           : Unknown

    IBSS                                        : Supported

    Promiscuous Mode                            : Supported

    (...)

    MAC Randomization                           : Not Supported

    Fast Transition                             : Not Supported

    MU-MIMO                                     : Unknown

    Miracast Sink                               : Unknown

    BSS Transition (802.11v)                    : Unknown

    IHV Extensibility Module Configured         : Not Supported

    Number of Tx Spatial Streams                : 0

    Number of Rx Spatial Streams                : 0

    Number of Concurrent Channels Supported     : 2

    (...)

Pora na rozejrzenie się dookoła 🙂 Poniższa komenda wylistuje sieci „słyszane” przez nasze urządzenie oraz dodatkowe informacje na ich temat:

netsh wlan show networks mode=bssid

Interface name : Wi-Fi
There are 10 networks currently visible.

SSID 1 : TEST_SSID
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP
    BSSID 1                 : 70:0b:01:1c:24:34
         Signal             : 100%
         Radio type         : 802.11n
         Channel            : 6
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54

SSID 2 : UPC1064xxx
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP
    BSSID 1                 : 44:32:c8:32:90:11
         Signal             : 22%
         Radio type         : 802.11n
         Channel            : 1
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54

SSID 3 : UPC4496xxx
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP
    BSSID 1                 : 58:23:8c:7f:b8:56
         Signal             : 30%
         Radio type         : 802.11n
         Channel            : 1
         Basic rates (Mbps) : 1 2 5.5 11
         Other rates (Mbps) : 6 9 12 18 24 36 48 54

SSID 4 : UPC Wi-Free
    Network type            : Infrastructure
    Authentication          : WPA2-Enterprise
    Encryption              : CCMP
    BSSID 1