16:03
WiFi w Linuksie
Coraz bardziej popularne w dzisiejszych czasach stają się laptopy. Ich roczna sprzedaż wyprzedziła już komputery stacjonarne. Wyposażenie laptopów w karty WiFi jest już standardem. Postaram się przedstawić jak za pomocą modułów Ndiswrappera i aplikacji WPA Supplicant można podłączyć swojego Linuksa do internetu.
Konfiguracja jądra
Zacznijmy od konfiguracji jądra:

Networking support ---> Wireless
Wireless Tools
Wireless Tools to zestaw prostych narzędzi do zarządzania urządzeniami WiFi na komputerze. Zanim zaczniemy ich kompilację, warto sprawdzić czy już przypadkiem nie są zainstalowane w naszym systemie. Jeżeli podając polecenie:
iwconfig
otrzymamy 'command not found' możemy zabrać się za pobranie źródeł z tej strony. Następnie rozpakowujemy archiwum i kompilujemy narzędzia:
tar xvf wireless_tools.29.tar.gz
cd wireless_tools.29
make PREFIX=/usr
make PREFIX=/usr install
Ndiswrapper
Jądro Linuksa ma już wbudowane na stałe kilka sterowników kart WiFi, jednak często w dystrybucjach wykorzystuje się moduły Ndiswrappera. Czym zatem jest Ndiswrapper? Jest on właśnie modułem do jądra Linuksa, umożliwiającym obsługę kart WiFi tych producentów, którzy zapomnieli, że istnieje coś takiego jak GNU Linux. Za pomocą Ndiswrappera możemy do obsługi karty bezprzewodowej użyć sterowników z systemu Windows.
Sam program można pobrać z tej strony. Kompilacja jest dość prosta – przebiega podobnie jak w większości modułów dla jądra. Rozpakowujemy archiwum, przechodzimy do lokalizacji i kompilujemy:
tar xvf ndiswrapper-1.54.tar.gz
cd ndiswrapper-1.54
make
make install
Teraz będziemy potrzebowali sterowników do naszej karty z Windowsa. Możemy je zazwyczaj pobrać ze strony producenta karty. Potrzebujemy dwóch plików - *.inf i *.sys. Gdy już je mamy musimy załadować je do Ndiswrappera:
ndiswrapper -i /sciezka/do/pliku.inf
Aby sprawdzić, czy poprawnie zostały zainstalowane wydajemy polecenie:
ndiswrapper -l
i powinniśmy zobaczyć nasz zainstalowany sterownik.
Kolejnym krokiem jest załadownie modułu jądra do pamięci:
modprobe ndiswrapper
Jeżeli chcemy, żeby moduł ładował się automatycznie przy starcie systemu trzeba go dopisać do /etc/sysconfig/modules, lub /etc/modules.autoload.d/kernel-2.6, lub w jeszcze inne miejsce – w zależności od używanej dystrybucji. Ewentualnie dopisać jakiś prosty skrypt startowy w /etc/init.d.
Teraz jeśli nie mamy włączonej naszej karty WiFi, to jest to dobry moment, żeby to zrobić. Następnie sprawdźmy, czy nasze sterowniki zadziałają.
Aby zobaczyć listę interfejsów sieciowych dostępnych w systemie wpisujemy:
ifconfig -a
Powinna się nam ukazać lista z wszystkimi interfejsami. Nasz interfejs karty bezprzewodowej prawdopodobnie będzie się nazywać wlan0. Aby to sprawdzić możemy wykonać polecenie:
iwconfig
Dla interfejsów, które nie są bezprzewodowe otrzymamy informacje: „no wireless extensions”.
Aby można było skorzystać z naszej karty musimy jeszcze ją „obudzić”:
ifconfig wlan0 up
I aby sprawdzić, czy jest aktywna możemy wydać polecenie:
ifconfig
Sprawdźmy teraz jej działanie – przeskanujmy sieci, które są w pobliżu:
iwlist wlan0 scan
WPA Supplicant - kompilacja
Mamy więc już skonfigurowaną i działającą kartę WiFi. Trzeba się teraz połączyć z naszą siecią. W dzisiejszych czasach sieci zazwyczaj posiadają jakieś tam mniejsze, lub większe zabezpieczenia. Najpopularniejszy jest chyba WPA. Aplikacja WPA Supplicant pomoże nam nawiązać połączenie z naszą zabezpieczoną siecią.
Program można pobrać z tej strony. Po rozpakowaniu archiwum przechodzimy do folderu:
cd wpa_supplicant-0.6.8/wpa_supplicant
a następnie tworzymy tam plik konfiguracyjny:
echo "CONFIG_CTRL_IFACE=y
CONFIG_BACKEND=file
CONFIG_EAP_GTC=y
CONFIG_EAP_MD5=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PAX=y
CONFIG_EAP_PSK=y
CONFIG_EAP_TLV=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_PKCS12=y
CONFIG_PEERKEY=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TLS=y
CONFIG_EAP_TTLS=y
CONFIG_CTRL_IFACE_DBUS=y
CONFIG_READLINE=y
CONFIG_TLS=openssl
" > .config
oraz modyfikujemy ścieżki instalacji za pomocą dowolnego edytora:
vim Makefile
i LIBDIR zmieniamy na /usr/lib/, oraz BINDIR na /usr/sbin/
I rozpoczynamy kompilację
make
make install
Konfiguracja i uruchomienie
Kolejnym krokiem, gdy już mamy skompilowane WPA Supplicant musimy utworzyć plik konfiguracyjny sieci z którą chcemy się połączyć. Domyślnie plik ten przechowywany jest w lokalizacji /etc/wpa_supplicant.conf, jednak możemy wybrać dowolnie inna (np. /etc/wpa_supplicant/siec1.conf).
Przykładowy plik konfiguracyjny znajdziemy w folderze ze źródłami, a kolejne na stronie projektu.
W celu połączenia się z siecią bezprzewodową zabezpieczoną WPA-PSK/TKIP nasz plik konfiguracyjny będzie miał następująca strukturę:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="nazwa"
psk="haslo"
proto=WPA
key_mgmt=WPA-PSK
}
I na tym można zakończyć konfigurację. Teraz w końcu możemy spróbować się połączyć z naszą siecią:
ifconfig wlan0 up
wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
a gdy widzimy informację, że udało się połączyć
CTRL-EVENT-SCAN-RESULTS Trying to associate with 00:1e:37:f1:c5:46 (SSID='nazwa' freq=2452 MHz) Associated with 00:1e:37:f1:c5:46 WPA: Key negotiation completed with 00:1e:37:f1:c5:46 [PTK=TKIP GTK=TKIP] CTRL-EVENT-CONNECTED - Connection to 00:1e:37:f1:c5:46 completed (auth) [id=0 id_str=]
możemy nacisnąć ctrl+z i uruchomić ten uśpiony proces w tle, a następnie przydzielić IP z serwera DHCP:
bg
dhcpcd wlan0
Oczywiście polecenie do przydzielenia IP z serwera będzie różne w zależności od klienta DHCP zainstalowanego w systemie. Jeżeli po przydzieleniu IP nadal będą problemy z połączeniem można spróbować wyłączyć interfejs eth0, lub inny sieciowy, z którego aplikacja mogłaby próbować korzystać przy próbie pobierania danych.

Dodaj komentarz:

English
Nazywam się Tomasz Chudyk i witam na mojej stronie. Jestem studentem piątego roku informatyki. Moje zainteresowania krążą głównie wokół open-source, Linuksa i technologi internetowych.
