Więcej

    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                 : 92:5c:14:ab:9b:f2
             Signal             : 20%
             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
        BSSID 2                 : fe:94:e3:3f:18:1c
             Signal             : 16%
             Radio type         : 802.11n
             Channel            : 7
             Basic rates (Mbps) : 1 2 5.5 11
             Other rates (Mbps) : 6 9 12 18 24 36 48 54

    Ciekawy przypadek dotyczy SSID 4 : UPC Wi-Free. Jak widzisz są tam widoczne 2 BSSID. Oznacza to tyle, że nasze urządzenie „słyszy” dwa różne radia (w domyśle dwa różne Access Pointy) rozgłaszające to samo SSID.

    Poniższa komenda wylistuje wszystkie profile sieci bezprzewodowych zapisane na tym urządzeniu:

    netsh wlan show profiles
    
    Profiles on interface Wi-Fi:
    
    Group policy profiles (read only)
    
    User profiles
    
    All User Profile: TEST_SSID
    All User Profile: Siec_domowa
    All User Profile: Kolejna_Zwyczajna_Siec

    Poniższa komenda pokaże szczegóły wybranego profilu razem z odszyfrowanym hasłem dostępu w parametrze Key Content (w przypadku sieci zabezpieczonej PSK):

    netsh wlan show profiles name=TEST_SSID key=clear
    
    Profile TEST_SSID on interface Wi-Fi:
    =======================================================================
    
    Applied: All User Profile
    
    Profile information
    -------------------
        Version                : 1
        Type                   : Wireless LAN
        Name                   : TEST_SSID
        Control options        :
            Connection mode    : Connect manually
            Network broadcast  : Connect only if this network is broadcasting
            AutoSwitch         : Do not switch to other networks
            MAC Randomization  : Disabled
    
    Connectivity settings
    ---------------------
        Number of SSIDs        : 1
        SSID name              : "TEST_SSID"
        Network type           : Infrastructure
        Radio type             : [ Any Radio Type ]
        Vendor extension          : Not present
    
    Security settings
    -----------------
        Authentication         : WPA2-Personal
        Cipher                 : CCMP
        Authentication         : WPA2-Personal
        Cipher                 : GCMP
        Security key           : Present
        Key Content            : hasloDOsieci123!
    
    Cost settings
    -------------
        Cost                   : Unrestricted
        Congested              : No
        Approaching Data Limit : No
        Over Data Limit        : No
        Roaming                : No
        Cost Source            : Default

    W celu wyświetlenia wszystkich powyższych komend typu show oraz wielu innych wystarczy wykonać poniższą komendę. Output będzie bardzo długi więc warto całość przekierować do pliku tekstowego:

    netsh wlan show all > plik.txt

    Netsh pozwala również na manipulowanie połączeniem. W celu podłączenia urządzenia do sieci berzprzewodowej należy wykonać poniższą komendę:

    netsh wlan connect name=TEST_SSID ssid=TEST_SSID interface=Wi-Fi
    Connection request was completed successfully.

    Parametr name w powyższej komendzie oznacza nazwę profilu sieci. Odłączenie od aktualnej sieci bezprzewodowej to:

    netsh wlan disconnect interface=Wi-Fi
    Disconnection request was completed successfully for interface "Wi-Fi".

    Natomiast wyłączenie/włączenie karty sieciowej to odpowiednio:

    netsh interface set interface name=Wi-Fi admin=disabled
    netsh interface set interface name=Wi-Fi admin=enabled

    Na koniec zostawiłem coś, czego niewiele osób spodziewałoby się tu zobaczyć. Poniższa komenda tworzy specjalny raport dostępny do przejrzenia w formie pliku HTML, a w nim między innymi:

    • outputy komend ipconfig i netsh
    • informacja o certyfikatach zainstalowanych na urządzeniu
    • informacja o urządzeniu, systemie, BIOSie
    • mnóstwo grafik i bardzo ciekawych raportów
    netsh wlan show wlanreport
    
    Generating report ...
    Querying WLAN Events ...
    Querying NCSI Events ...
    Querying NDIS Events ...
    Querying EAP Events ...
    Querying WCM Events ...
    Querying Kernel Events ...
    Querying System Events ...
    Running ipconfig ...
    Running netsh wlan show all ...
    Querying Wireless Profiles ...
    Querying System and User Certificates ...
    Querying User Info ...
    Querying Network Devices ...
    
    Report written to: C:ProgramDataMicrosoftWindowsWlanReportwlan-report-latest.html
    done.

    Poniżej przedstawiam kilka przykładowych danych:

    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN
    Output wygenerowanego raportu WLAN

    Automatyzacja

    Narzędzie netsh posiada interfejs CLI więc warto zainteresować się automatyzacją korzystania z wymienionych komend. Możliwe przypadki użycia to między innymi:

    • skrypt wyłączający/resetujący/włączający kartę sieciową
    • skrypt łączący urządzenie z podanym SSID w podanym przypadku
    • generowanie raportów zawierających informacje o wersji sterowników urządzeń w sieci
    • skrypt automatycznie zbierający wszystkie informacje potrzebne do troubleshootingu

    Sposobów na automatyzację jest co najmniej kilka, na pewno można zrobić skrypty dla CMD (*.bat / *.cmd) lub Windows PowerShell (*.ps1). Jednak najciekawiej zapowiada się wykorzystanie do tego Pythona – o pierwszych krokach z Pythonem pisał niedawno Damian.

    Korzystanie z netsh jest bardzo przyjemne. Składnia jest zrozumiała, komendy przejrzyste i przede wszystkim działają tak jak jest to opisane. Na duży plus można zaliczyć możliwość zautomatyzowania tego procesu, a zwłaszcza uczynienie tego kroku przezroczystym dla użytkownika końcowego, który niekoniecznie musi wiedzieć o istnieniu Wiersza Poleceń.

    Jakie inne ciekawe komendy znalazłeś w netsh, o których ja nie wspomniałem?

    🗳 Jak przydatna była ta publikacja?

    Średnia ocena 4.9 / 5. Ilość głosów: 19

    Brak ocen. Bądź pierwszy!

    Dziękujemy za ocenę! Zapraszamy Cię do obserwowania NSS w mediach społecznościowych!

    Przykro nam, że ta publikacja okazała się być dla Ciebie nieprzydatna!

    Uwaga: Twój głos będzie liczony tylko jeśli udzielisz feedbacku używając formularza poniżej.

    Jak możemy poprawić tę publikację?

    Łukasz Kowalski
    Network Architect, Współtwórca Na Styku Sieci

    8 KOMENTARZE

    guest
    8 - Ilość komentarzy
    Sortuj wg najstarszych
    Sortuj wg najnowszych Sortuj wg najlepszych
    Inline Feedbacks
    View all comments
    artur5236

    Ciekawe przykłady zastosowawnia netsh. Do dzisiaj używałem tylko skryptów do turn on/off karty sieciowej a tutaj widzę szerokie zastosowanie. Przy okazji zauważyłem, że jeden z AP mi nie działa 🙁

    Czekam na więcej

    Michał

    Bardzo ciekawy artykuł przydatny do troubleshooting\’u z perspektywy obsługi klienta. Czy planujesz rozszerzenie artykułu o troubleshooting od strony infrastruktury czyli WLC i APka?

    Patryk

    świetny artykuł, dzięki temu artykułowi widzę że wiele problemów mogę rozwiązać bez konieczności wykonywania wizji lokalnej 🙂 więcej takich artykułów!!!

    Krzysiek

    Przydatne. Dzięki. 🙂

    Przygotowujesz się do certyfikacji CCNA?

    Zapisz się na nasz NSSletter, a co tydzień we wtorek rano otrzymasz porcję sieciowej wiedzy oraz porady dotyczące certyfikacji.

    Uzupełniając powyższe pole wyrażasz zgodę na otrzymywanie od GetGoodNet Damian Michalak z siedzibą we Wrocławiu newslettera zawierającego treści edukacyjne. Zgodę możesz wycofać w każdym czasie.

    NSS na Social Media

    1,611FaniLubię
    72ObserwującyObserwuj
    133ObserwującyObserwuj
    1,220SubskrybującySubskrybuj

    Najnowsze artykuły

    spot_img

    Może Cię też zainteresować...

    8
    0
    Co sądzisz na temat tej publikacji? Zostaw proszę komentarzx
    ()
    x