WiFi z příkazového řádku GNU/Linux

WiFi z prikazoveho radku GNU/LinuxO tom, jak nastavit WiFi rozhraní v distribucích GNU/Linux, lze nalézt velké množství zdrojů. V poslední době se setkáváme zejména s přístupem, kdy je automaticky operačním systémem příslušné rozhraní nalezeno, připojeno do systému a využíváno. Můžeme se však dostat do situace, kdy nám z nějakého důvodu tento, systémem řízený, proces nevyhovuje.
Moderní distribuční linuxová jádra obsahují podporu pro velké množství bezdrátových čipových sad, proto je malá pravděpodobnost, že naše zařízení nebude možné v systému provozovat.

Použité příkazy jsou dostupné v softwarových balíčcích iw, wireless_tools, případně je balíček upřesněn. V systému by neměl být aktivní nástroj Network Manager nebo jemu podobné, které přebírají kontrolu nad síťovými zdroji a znemožňují ruční nastavení.

Fyzické zařízení

V zásadě se můžeme setkat se dvěma typy připojení WiFi zařízení k našemu systému. Tím prvním je přímé připojení na PCI/PCIe sběrnici, druhým připojení přes USB. Při nastavení a práci s WiFi nás typ připojení pravděpodobně zajímat nebude, ale pokud nás tato informace zajímá, můžeme se jednoduchým způsobem podívat.
WiFi zařízení připojené na PCIe:

WiFi zařízení připojené přes USB:

Důležitější informace nám podá příkaz iw list, který vypíše seznam připojených fyzických WiFi zařízení s jejich vlastnostmi:

Na výpisu můžeme vidět podporu obou pásem 2,4 GHz a 5 GHz a zejména název fyzického zařízení Wiphy phy0, tedy phy0. S tímto názvem budeme v některých z následujících kroků pracovat.

Vypnutí a zapnutí vysílacích obvodů

Některá zařízení mají integrovaný hardwarový přepínač, který slouží pro vypnutí a zapnutí vysílacích obvodů zařízení – tzv. „režim letadlo“. Tímto přepínačem můžeme ovládat zařízení WiFi, Bluetooth, ale například i GSM, UMTS a LTE modemy. Ve většině případů není dotyčné zařízení odpojeno od systému (záleží na hardwarovém zapojení v počítači), ale pouze jeho vysílací část. Proto můžeme stále vidět příslušné rozhraní aktivní. V GNU/Linux máme možnost tuto funkcionalitu ovládat i softwarově. K tomu slouží nástroj rfkill, který je součástí stejnojmenného softwarového balíčku.

Chceme-li se podívat na stav hardwarových a softwarových přepínačů, použijeme příkaz rfkill list:

Na výpisu vidíme, že žádné bezdrátové zařízení nemá vysílací výstup vypnutý.

Pokud zapneme režim letadlo (vypnutí vysílání) hardwarovým přepínačem, můžeme zpozorovat, že se stav všech zařízení u pole Hard blocked změnil na yes:

Pro softwarové vypnutí slouží volba block s parametrem obsahujícím index příslušného zařízení. Pro WiFi phy0 můžeme najít index 1.

Opětovně ověříme stav:

Jak vidíme, nyní máme softwarově zablokováno vysílání pro WiFi zařízení.

Opakem volby block je unblock, která provede opětovné připojení vysílací části:

Ověříme stav:

I přesto, že máme vysílací obvody vypnuté, můžeme, jak již bylo uvedeno, pozorovat přítomnost příslušného rozhraní v systému:

Jestliže používáme nástroj rfkill, musíme na tuto vlastnost pamatovat.

Vytvoření a odstranění virtuálního síťového rozhraní

Abychom mohli využívat připojené fyzické WiFi zařízení phy0, musíme vytvořit virtuální síťové rozhraní. Moderní distribuce se o tuto proceduru postarají díky udev samy, ale někdy je potřeba tuto úlohu od systému převzít.
Existuje několik typů/módů bezdrátového rozhraní, které můžeme vytvořit. Mezi nejpoužívanější patří: managed, ibss, monitor, mesh, ap, ap/vlanwds. Pro náš účel, připojení k bezdrátové síti, použijeme typ managed:

Síťové rozhraní má název wlan0.

Tímto způsobem můžeme na jednom fyzickém zařízení (např. phy0) vytvořít více virtuálních rozhraní najednou:

Odstranění virtuálního síťového rozhraní ze systému:

Aktivace a deaktivace virtuálního síťového rozhraní

Abychom mohli virtuální síťové rozhraní wlan0 používat, musíme jej aktivovat. K tomu použijeme příkaz ip nebo ifconfig.
Nejprve zjistíme stav rozhraní:

Vidíme, že rozhraní není aktivní (mezi příznaky flags chybí text UP). Provedeme aktivaci:

nebo

Ověříme:

Rozhraní je aktivní – příznak UP.

Pokud potřebujeme, můžeme podobným způsobem rozhraní deaktivovat. To je nutné například pokud chceme měnit vysílaný výkon, regulační region, atp.

nebo

Zobrazení dostupných AP

Pro připojení musíme znát SSID AP, ke kterému se budeme připojovat. Seznam všech dostupných AP můžeme získat příkazy iw nebo iwlist:

Výše uvedenými příkazy (iw dev wlan0 scaniwlist wlan0 scanning) můžeme zjistit i další parametry vztahující se k jednotlivým AP.

Připojení k bezdrátové síti

Před připojením k AP bychom měli znát veškeré údaje, které budeme potřebovat. Těmi jsou zejména název AP (SSID), použité šifrování (otevřená síť, WEP, WPA), šifrovací klíč, a pokud není v síti pro předělování IP adres použit DHCP server i nám přidělenou IP adresu, definici síťové brány, masky, a jiné.

Pro připojení můžeme opět využít příkazu iw nebo iwconfig. Během nastavování je virtuální rozhraní v aktivním stavu.

Připojení k otevřené síti

Toto připojení je nejjednodušší. Musíme však brát v úvahu, že na takové AP se může kdokoli připojit a přenášení data nejsou šifrována. Využití je zejména v restauracích a jiných podobných objektech.

nebo

Místo parametru <SSID> zadáme přesný název našeho AP (SSID/ESSID). Pokud se jedná o řetězec slov oddělených mezerami, použijeme na začátku a konci uvozovky.
Pokud je vše v pořádku, jsme připojeni k AP. Nyní můžeme pokračovat nastavením síťových parametrů – IP.
V některých případech může být na AP nastaven seznam MAC adres síťových rozhraní, které mají mít možnost se k tomuto AP připojovat. Vyměníme-li našeho klienta, musíme tento seznam na AP aktualizovat.

Připojení se šifrováním WEP

Šifrování WEP je nejstarším zabezpečením a šifrovacím mechanizmem, který se začal u veřejných bezdrátových WiFi sítí používat. Toto šifrování lze poměrně jednoduchým procesem prolomit. Je ale nutné zachytit dostatečné množství datových paketů, z kterých sofistikovanou metodou dostaneme šifrovací klíč.
Klíč může být řetězec ASCII nebo HEX znaků v délce 64 bit nebo 128 bit.

Místo parametru <SSID> zadáme přesný název našeho AP (SSID/ESSID). Pokud se jedná o řetězec slov oddělených mezerami, použijeme na začátku a konci uvozovky. Parametr <KEY> je přidělený šifrovací klíč. U WEP lze použít až čtyři klíče. O této možnosti lze nalézt více v manuálových stránkách příslušných příkazů.

Připojení se šifrováním WPA

Připojení pomocí WPA je nejnovějším a těžko prolomitelným způsobem. Pro práci, na rozdíl od předchozích metod, potřebujeme softwarový balíček wpa_supplicant.
Tento nástroj je ve výchozím stavu v závislosti na použité distrubuci řízen souborem /etc/wpa_supplicant/wpa_supplicant.conf, případně /etc/wpa_supplicant.conf. V něm je definice příslušné bezdrátové sítě. V případě potřeby, může obsahovat takových sítí několik.

Pro každé SSID musí být vygenerován příslušný záznam obsahující 256 bit PSK:

Příkaz nám tento záznam vygeneruje a přidá do souboru /etc/wpa_supplicant/wpa_supplicant.conf. Samozřejmě pokud chceme, upravíme soubor ručně. <PASSPHRASE> je heslo/fráze pro převedení na klíč 256 bit PSK.

Nyní můžeme spustit wpa_supplicant, který provede vyhledání všech SSID uvedených v souboru /etc/wpa_supplicant/wpa_supplicant.conf a v případě nalezení se k nim pokusí připojit. Pokud je nalezeno více shod aktivních SSID (ve vzduchu i v souboru), je vybráno jedno z AP na základě v souboru definovaných priorit.

Nastavení parametrů IP sítě

V zásadě máme dvě možnosti. Použít automatickou konfiguraci pomocí DHCP, pokud je na AP nakonfigurována, nebo nastavit síť ručně. V případě ručního nastavení, musíme znát několik základních parametrů.

Nastavení pomocí DHCP (příkaz dhclient nebo dhcpcd)

Při této metodě nemusíme mít o síti žádné znalosti, protože vše je nastaveno automaticky.

Ruční nastavení

Pro ruční nastavení můsíme mít přidělenu IP adresu (192.168.0.10), masku (/24) sítě a výchozí bránu (192.168.0.1).
Nastavíme IP adresu a masku sítě:

nebo

Nastavíme výchozí bránu – pokud potřebujeme:

nebo

Nastavení dalších parametrů

Nastavení MAC adresy

Pokud potřebujeme dočasně změnit MAC adresu, můžeme použít nástroj macchanger, ip nebo ifconfig. Při této změně nesmí být rozhraní aktivní, tzn. ve stavu DOWN.

nebo

Po změně MAC adresy je nutné rozhraní aktivovat a připojit se k AP.

Nastavení regionu

Na nastavení regionu je závislé množství parametrů, které můžeme změnit. Vždy je ale nutné zadat takový region/zemi, kde se nacházíme, jinak se můžeme dostat do konfliktu s místní legislativou.
Kódy zemí jsou uvedeny v ISO/IEC 3166-1. Nastavení se provádí globálně pro celý operační systém při deaktivovaném rozhraní.

Nastavení kmitočtu a kanálu

Kmitočty/kanály jsou závislé na nastavení regionu.

Nastavení úspory energie

Nastavení typu/módu rozhraní

Nastavení chování v zarušeném prostředí

Nastavení vysílacího výkonu

Maximální hodnota vysílacího výkonu je závislá na nastavení regionu.

Monitoring spektra

Monitoring WiFi spektra je popsán v článku Monitoring rádiového spektra WiFi v GNU/Linux.

Závěr

Existuje množství softwarových nástrojů, které nás pohodlně provedou kompletním nastavením WiFi v GNU/Linux. Můžeme se však dostat do situace, kde nemáme tyto nástroje k dispozici a je nutné použít jiné metody. Právě proto vznikl tento článek.

Leave a Reply