====== WLAN ====== ===== Podstawy + warstwa fizyczna ===== **[[sk2:wlan:basics-l1|Podstawy + warstwa fizyczna]]** ===== Komenda 'iw' w Linuskie ===== ==== 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. ==== Wyświetlanie informacji i listy dostępnych sieci (skanowanie) ==== |pomoc dla komendy | ''iw help'' | |lista i stan wszystkich interfejsów | ''iw dev'' | |stan wybranego interfejsu | ''iw [dev] info'' \\ np. ''iw //wlan0// info'' | |stan połączenia na podanym interfejsie| ''iw [dev] link'' \\ np. ''iw //wlan0// link'' | |informacje o możliwościach karty | ''iw phy'' | |skanowania dostępnych sieci | ''iw [dev] scan [-u]'' \\ np. ''iw //wlan0// scan -u'' \\ (flaga ''-u'' pokazuje też opcje nieznane przez iw) | ==== Zarządzanie pasmem / kanałem / częstotliwością pracy ==== |lista wspieranych przez kartę kanałów/częstotliwości | ''iw [phy] [channels]'' | |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//'' | |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//'' | ==== Zmiana trybu pracy karty ==== | ogólna komenda | ''iw [dev] set type '' | | klient łączący się do BSS | ''iw [dev] set type managed'' \\ np. ''iw //wlan0// set type managed'' | | urządzenie w sieci IBSS | ''iw [dev] set type ibss'' \\ np. ''iw //wlan0// set type ibss'' | | monitor (nasłuchiwanie) | ''iw [dev] set type monitor'' \\ np. ''iw //wlan0// set type monitor'' | | access point | programy takie jak [[https://wireless.docs.kernel.org/en/latest/en/users/documentation/hostapd.html|hostapd]] przełączą we właściwy tryb kartę ustawioną jako ''managed'' | //Uwaga//: większość sterowników pozwala zmieniać tryb tylko dla wyłączonych interfejsów. Zamiast zmiany trybu pracy, można, o ile wspierają to sterowniki karty, [[https://wireless.docs.kernel.org/en/latest/en/users/documentation/iw/vif.html|dodać kolejny interfejs]] do karty komendą: \\ ''iw interface add type ''           (zamiast '''' można też podać '''')) \\ np. ''iw //phy0// interface add //mon0// type //monitor//'' \\ (Interfejs usuwa się komendą ''iw [dev] del'', np. ''iw //mon0// del'') ==== Dołączenie do sieci bez zabezpieczeń ==== |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ń ==== W trybach takich jak ibss, mesh i ap można wyświetlić urządzenia z którymi nawiązano połączenie komedną: \\ ''iw [dev] station dump''           np: ''iw //wlan0// station dump'' ==== Tworzenie / dołączanie się do sieci ad-hoc - gotowe komendy ==== - wyłączyć interface (''ip l set dev down'') - ustawić pracę karty sieciowej jako IBSS: ''iw set type ibss'' - wybrać nazwę sieci i częstotliwość: ''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ć [[bio-sk:lacza_danych#mierzenie_predkosci|wcześniej poznanych]] programów ''netperf'' / ''iperf3''. ==== 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. ===== Zabezpieczenia sieci bezprzewodowych ===== **[[sk2:wlan:sec|Zabezpieczenia sieci bezprzewodowych]]** ===== Konfiguracja Access Pointa i połączenia do niego ===== **[[sk2:wlan:mikrotik|Konfiguracja sieci bezprzewodowych na sprzęcie Mikrotik]]** **[[sk2:wlan:sec_linux_commands|Łączenie do sieci z AP w Linuksie]]** === [ekstra] Przykład prostego AP na Linuksie === Do tworzenia AP pod Linuksem można wykorzystać program ''[[https://w1.fi/hostapd/|hostapd]]'', któremu należy podać jako argument ścieżkę do plik konfiguracyjnego, np: ''hostapd //hostapd.conf//''. Przykładowy plik konfiguracyjny (działający w obu laboratoriach na kartach intela):
ctrl_interface=/var/run/hostapd ctrl_interface_group=0 interface=wlan0 ssid=nazwasieci hw_mode=g channel=5 country_code=PL ieee80211n=1 ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] auth_algs=1 ### dla WPA2-PSK ### dla WPA3-SAE ### dla WPA2-PSK + WPA3-SAE # wpa=2 # wpa=2 # wpa=2 # wpa_key_mgmt=WPA-PSK # wpa_key_mgmt=SAE # wpa_key_mgmt=WPA-PSK SAE # wpa_passphrase=haslodosieci # sae_password=pass # wpa_passphrase=haslodosieci # wpa_pairwise=CCMP # wpa_pairwise=CCMP # wpa_pairwise=CCMP # ieee80211w=1 # ieee80211w=2 # ieee80211w=1 # # # sae_require_mfp=1