decoration Wpisy na blogu decoration

decoration
decoration
17.02 2009
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:

Nick:
URL:
Komentarz:
Wynik dzialania z obrazka =

Powrót



Copyleft (C) tom000.info 2004-2010. Some rights reserved.