====== 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] /if//> info'' \\ np. ''iw //wlan0// info'' | |stan połączenia na podanym interfejsie| ''iw [dev] /if//> link'' \\ np. ''iw //wlan0// link'' | |informacje o możliwościach karty | ''iw phy'' | |skanowania dostępnych sieci | ''iw [dev] /if//> 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] /phy//> [channels]'' | |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//'' | |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//'' | ==== Zmiana trybu pracy karty ==== | ogólna komenda | ''iw [dev] /if//> set type /mode//>'' | | klient łączący się do BSS | ''iw [dev] /if//> set type managed'' \\ np. ''iw //wlan0// set type managed'' | | urządzenie w sieci IBSS | ''iw [dev] /if//> set type ibss'' \\ np. ''iw //wlan0// set type ibss'' | | monitor (nasłuchiwanie) | ''iw [dev] /if//> 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 /phy//> interface add /ifname//> type /mode//>'' (zamiast ''/phy//>'' można też podać ''/ifname//>'')) \\ np. ''iw //phy0// interface add //mon0// type //monitor//'' \\ (Interfejs usuwa się komendą ''iw [dev] /ifname//> del'', np. ''iw //mon0// del'') ==== Dołączenie do sieci bez zabezpieczeń ==== |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ń ==== W trybach takich jak ibss, mesh i ap można wyświetlić urządzenia z którymi nawiązano połączenie komedną: \\ ''iw [dev] /ifname//> station dump'' np: ''iw //wlan0// station dump'' ==== Tworzenie / dołączanie się do sieci ad-hoc - gotowe komendy ==== - wyłączyć interface (''ip l set dev /if//> down'') - ustawić pracę karty sieciowej jako IBSS: ''iw /if//> set type ibss'' - wybrać nazwę sieci i częstotliwość: ''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ć [[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