==== Paczki narzędzi do WLAN pod Linuksem ==== * wireless-tools [[https://en.wikipedia.org/wiki/Wireless_tools_for_Linux]] * ''iw'' – komenda mająca na celu zastąpienie wireless-tools * https://wireless.wiki.kernel.org/en/users/documentation/iw * https://wireless.wiki.kernel.org/en/users/documentation/iw/replace-iwconfig * https://wireless.wiki.kernel.org/en/users/documentation/iw/vif * ''iw phy'' – fizyczne bezprzewodowe urządzenie sieciowe * ''iw dev'' – interfejs sieciowy (powiązany z jakimś ''phy'') ==== Network Manager i rfkill ==== W wielu dystrybucjach Linuksa domyślnie karty sieciowe obsługuje NetworkManager (NM).\\ Komenda ''nmcli radio all off'' nakaże NM wyłączenie kart i nie konfigurowanie ich. NM poza wyłączeniem interfejsu, próbuje wyłączyć kartę (dla lepszego zarządzania energią możliwe jest często odłączenie karty).\\ Do włączenia tak wyłączonej karty służy program ''rfkill'' [[https://wireless.wiki.kernel.org/en/users/documentation/rfkill|[1]]]), dokładniej komenda ''rfkill unblock wifi''\\ Karty bezprzewodowe i/lub moduły bluetooth mogą być też domyślnie wyłączone w tej sposób. ==== Podstawowe komendy ==== Wyświetlanie informacji i skanowanie:
|   ^ ''iw'' ^ ''iwconfig'' ^ |pomoc dla komendy | ''iw help'' | ''iwconfig --help'' | |lista i stan wszystkich interfejsów | ''iw dev'' | ''iwconfig'' | |stan wybranego interfejsu | ''iw [dev] info'' \\ np. ''iw //wlan0// info'' | ''iwconfig '' \\ np. ''iwconfig //wlan0//'' | |stan połączenia na podanym interfejsie| ''iw [dev] link'' \\ np. ''iw //wlan0// link'' | ::: | |informacje o możliwościach karty | ''iw phy'' |       —    ((Narzędzia z paczki wireless-tools nie mają sensownego wsparcia dla wyświetlania informacji o możliwościach karty sieciowej – przestały być rozwijane zanim sieci bezporzewodowe zostały rozwinięte na tyle że stało się to potrzebne.)) | |skanowania dostępnych sieci | ''iw [dev] scan [-u]'' \\ np. ''iw //wlan0// scan -u'' \\ (flaga ''-u'' pokazuje też opcje nieznane przez iw) | ''iwlist scan'' \\ np. ''iwlist //wlan0// scan'' | Zarządzanie pasmem / kanałem / częstotliwością pracy:
|   ^ ''iw'' ^ ''iwconfig'' ^ |lista wspieranych przez kartę kanałów/częstotliwości | ''iw [phy] [channels]'' | ''iwlist channel'' | |informacje o częstotliwościach \\ dostępnych w kraju/regionie| ''iw reg get'' | — | |zmiana bieżącego kraju/regionu | ''iw reg set '' \\ np. ''iw reg set //PL//'' | — | |zmiana kanału/częstotliwości \\ podając kanał | ''iw [dev/phy] set channel [//width//]'' \\ np. ''iw //wlan0// set channel //13//'' \\ np. ''iw //wlan0// set channel //1// //HT40+//'' \\ np. ''iw //wlan0// set channel //128// //160MHz//'' | ''iwconfig  channel ''((Uwaga: ''iwconfig'' potrafi ustawić tylko kanał 20MHz)) \\ np: ''iwconfig //wlan0// channel //128//'' | |zmiana kanału/częstotliwości \\ podając częstotliwość | ''iw [dev/phy]  set freq  [//width//] […]'' \\ np. ''iw //wlan0// set freq //2412// //HT40+//'' \\ np. ''iw //wlan0// set freq //5640// //160MHz//'' \\ np. ''iw //wlan0// set freq //5200// //80+80// //5210// //5775//'' | ''iwconfig freq ''\\ np: ''iwconfig //wlan0// freq //5640//'' | Wybrane tryby pracy karty bezprzewodowej:
|   ^ ''iw'' ^ ''iwconfig'' ^ | monitor (nasłuchiwanie) | ''monitor'' | ''monitor'' | | urządzenie w sieci IBSS | ''ibss'' | ''ad-hoc'' | | klient łączący się do BSS | ''managed'' | ''managed'' | | access point \\ w nowszych jądrach Linuksa AP uruchamia się z trybu managed[[https://wireless.wiki.kernel.org/en/users/Documentation/hostapd|[1]]] | ''ap'' | ''master'' | Zmiana trybu pracy:
|   ^ ''iw'' ^ ''iwconfig'' ^ | Zmiana trybu pracy((Większość sterowników pozwala zmieniać tryb tylko dla wyłączonych interfejsów.)) | ''iw [dev] set type '' \\ np. ''iw //wlan0// set type ibss'' | ''iwconfig mode '' \\ np. ''iwconfig //wlan0// mode ad-hoc'' | |Dodanie drugiego interfejsu do karty [[https://wireless.wiki.kernel.org/en/users/documentation/iw/vif|[2]]]| ''iw interface add type '' \\ ''iw interface add type '' \\ np. ''iw //phy0// interface add //mon0// type //monitor//'' | — | Wybór sieci (zmiana SSID / BSSID) dla **''iwconfig''**: * ''iwconfig essid '' – ustawienie nazwy sieci / odłączenie się od sieci * ''iwconfig ap '' – wybór AP (BSSID) do którego ma się łączyć Wybór sieci (zmiana SSID / BSSID) dla **''iw''**:
|ibss | połączenie |''iw [dev] ibss join […]'' | | ::: | rozłączenie |''iw [dev] ibss leave'' | |mesh | połączenie |''iw [dev] mesh join [freq ] […]''| | ::: | rozłączenie |''iw [dev] mesh leave'' | |bss | połączenie |''iw [dev] connect [//BSSID//]'' | | ::: | rozłączenie |''iw [dev] disconnect'' | Wypisanie podłączonych urządzeń dla **''iw''** (sensowne w trybach ibss, mesh i ap):\\ ''iw [dev] station dump'' \\ np: ''iw //wlan0// station dump'' === Tworzenie / dołączanie się do sieci ad-hoc - gotowe komendy === ++++ Tworzenie / dołączanie się do sieci ad-hoc - gotowe komendy | * wyłączyć interface (''ip l set dev down'' / ''ifconfig down'') * ustawić pracę karty sieciowej jako ''ad-hoc'' / ''ibss'': \\ ''iwconfig mode ad-hoc'' \\ lub \\ ''iw set type ibss'' * wybrać nazwę sieci i kanał: \\ ''iwconfig essid '' + ''iwconfig freq '' \\ lub \\ ''iw ibss join '' ''iw'' wspiera tworzenie sieci IBSS z wykorzystaniem 802.11n/ac/ax, np: \\ ''iw ibss join HT40-'' używa kanału 40MHz zajmującego częstotliwości //freq// i //freq-20// \\ ''iw ibss join '' używa kanału szerokości //width// ze środkiem na częstotliwości //center_freq// i używa //control_freq// m. inn. do rozgłaszania sieci Przykłady (używające tego samego kanału 40MHz): \\ ''iw ibss join 2432 HT40-'' \\ ''iw ibss join 2432 40 2422'' **Uwaga:** sterowniki kart w 1.6.16 mają problem ze sobą w trybie IBSS, żeby pracowały z pełną prędkością wykonaj:\\ ''tc qdisc add dev wlan0 root cake'' Do testów prędkości możesz użyć programów [[sk1:lacze_danych#mierzenie_predkosci|netperf/iperf3 znanych z SK1]] ++++ === Monitorowanie sieci – gotowe komendy === ++++ Monitorowanie sieci – gotowe komendy | W salach laboratoryjnych zalecaną metodą jest stworzenie nowego interfejsu pracującego w trybie ''monitor'' komendą: \\ ''iw //wlan0// interface add //mon0// type monitor'' \\ Uwaga: kartom intela w laboratorium "zdarza się" zerwać bieżące połączenie przy dodawaniu wirtualnego interfejsu. Sposoby na otrzymanie urządzenia pracującego prawidłowo w trybie ''monitor'': * korzystając z [[http://www.aircrack-ng.org/|aircracka]]: * ''airmon-ng start [//channel//]'' * korzystając z ''iw'': * dodać nowy interfejs w trybie monitor: \\ ''iw [dev/phy] interface add type //monitor//'', np: \\ ''iw wlan0 interface add mon0 type monitor'' * można ustawić flagi konfigurujące jakich ramek ma nie ignorować monitor (uwaga, wsparcie zależy od sterowników), np: \\ ''iw dev mon0 set monitor fcsfail control otherbss'' * korzystając z wireless-tools (uwaga: wireless-tools nie mają niezależnej od sterowników metody na dodanie drugiego interfejsu sieciowego): * wyłączyć interface, np: \\ ''ifconfig down'' * ustawić pracę karty sieciowej jako monitor: \\ ''iwconfig mode monitor'' * włączyć interface, np: \\ ''ifconfig up'' * przy niektórych sterownikach działa tryb [[https://en.wikipedia.org/wiki/Promiscuous_mode|promiscuous]] – tryb w którym przekazywane są do systemu operacyjnego wszystkich ramek (domyślnie karta sieciowa przekazuje tylko ramki kierowane do siebie, nie wszystkie które otrzyma): \\ ''ip l set dev promisc on'' lub ''ifconfig promisc'' \\ wyłączenie powyższego – ''ifconfig -promisc'' lub ''ip l set dev promisc off'' ++++