==== 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] /if//> info'' \\ np. ''iw //wlan0// info'' | ''iwconfig /if//>'' \\ np. ''iwconfig //wlan0//'' |
|stan połączenia na podanym interfejsie| ''iw [dev] /if//> 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] /if//> scan [-u]'' \\ np. ''iw //wlan0// scan -u'' \\ (flaga ''-u'' pokazuje też opcje nieznane przez iw) | ''iwlist /if//> 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] /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 /kod kraju//>'' \\ np. ''iw reg set //PL//'' | — |
|zmiana kanału/częstotliwości \\ podając kanał | ''iw [dev/phy] /if/phy//> set channel /nr//> [//width//]'' \\ np. ''iw //wlan0// set channel //13//'' \\ np. ''iw //wlan0// set channel //1// //HT40+//'' \\ np. ''iw //wlan0// set channel //128// //160MHz//'' | ''iwconfig /if//> channel /nr//>''((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] /if/phy//> set freq /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 /if//> freq /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] /if//> set type /mode//>'' \\ np. ''iw //wlan0// set type ibss'' | ''iwconfig /if//> mode /mode//>'' \\ np. ''iwconfig //wlan0// mode ad-hoc'' |
|Dodanie drugiego interfejsu do karty [[https://wireless.wiki.kernel.org/en/users/documentation/iw/vif|[2]]]| ''iw /phy//> interface add /ifname//> type /mode//>'' \\ ''iw /ifname//> interface add /ifname//> type /mode//>'' \\ np. ''iw //phy0// interface add //mon0// type //monitor//'' | — |
Wybór sieci (zmiana SSID / BSSID) dla **''iwconfig''**:
* ''iwconfig /if//> essid /essid///off>'' – ustawienie nazwy sieci / odłączenie się od sieci
* ''iwconfig /if//> ap /bssid///auto>'' – wybór AP (BSSID) do którego ma się łączyć
Wybór sieci (zmiana SSID / BSSID) dla **''iw''**:
|ibss | połączenie |''iw [dev] /if//> ibss join /ESSID//> /freq//> […]'' |
| ::: | rozłączenie |''iw [dev] /if//> ibss leave'' |
|mesh | połączenie |''iw [dev] /if//> mesh join /ESSID//> [freq /freq//>] […]''|
| ::: | rozłączenie |''iw [dev] /if//> mesh leave'' |
|bss | połączenie |''iw [dev] /if//> connect /ESSID//> [//BSSID//]'' |
| ::: | rozłączenie |''iw [dev] /if//> disconnect'' |
Wypisanie podłączonych urządzeń dla **''iw''** (sensowne w trybach ibss, mesh i ap):\\
''iw [dev] /ifname//> 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 /if//> down'' / ''ifconfig /if//> down'')
* ustawić pracę karty sieciowej jako ''ad-hoc'' / ''ibss'': \\ ''iwconfig /if//> mode ad-hoc'' \\ lub \\ ''iw /if//> set type ibss''
* wybrać nazwę sieci i kanał: \\ ''iwconfig /if//> essid /essid//>'' + ''iwconfig /if//> freq /freq//>'' \\ lub \\ ''iw /if//> ibss join /essid//> /freq//>''
''iw'' wspiera tworzenie sieci IBSS z wykorzystaniem 802.11n/ac/ax, np: \\
''iw /if//> ibss join /essid//> /freq//> HT40-'' używa kanału 40MHz zajmującego częstotliwości //freq// i //freq-20// \\
''iw /if//> ibss join /essid//> /control_freq//> /width//> /center_freq//>'' 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 /if//> ibss join /essid//> 2432 HT40-'' \\
''iw /if//> ibss join /essid//> 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 /if//> [//channel//]''
* korzystając z ''iw'':
* dodać nowy interfejs w trybie monitor: \\ ''iw [dev/phy] /if//> interface add /newif//> 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 /if//> down''
* ustawić pracę karty sieciowej jako monitor: \\ ''iwconfig /if//> mode monitor''
* włączyć interface, np: \\ ''ifconfig /if//> 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 /if//> promisc on'' lub ''ifconfig /if//> promisc'' \\ wyłączenie powyższego – ''ifconfig -promisc'' lub ''ip l set dev promisc off''
++++