Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Interfejsy sieciowe
WiFi
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

WiFi

<- ->
 

Wstęp

W przypadku laptopa dobrym pomysłem jest użycie jakiejś aplikacji X-Window do konfiguracji WiFi, z możliwością łatwego przełączania pomiędzy sieciami oraz automatycznym wykrywanie podłączenia kabla do karty Ethernet. Takie możliwości zapewnia np. NetworkManager (korzysta z aplikacji wpa_supplicant), przeznaczony dla środowiska Gnome. W przypadku stacjonarnych maszyn konfiguracja rc-skryptów powinna być wystarczająca w większości wypadków.

W naszych przykładach przedstawimy konfigurację dla sieci bezprzewodowej działającej w trybie trybie infrastruktury (managed), o określonym identyfikatorze SSID i zabezpieczonej kluczem WEP oraz WPA2-PSK (WPA2 Personal). WEP zawiera zbyt dużo słabych punktów i jest podatny na szybkie złamanie, dlatego o ile nie jesteśmy ograniczeni sprzętem to należy używać właśnie WPA2.

Niektóre karty sieciowe WiFi mają dedykowane sterowniki i ich konfiguracja nie sprawia większych kłopotów, w pozostałych wypadkach posłużymy się sterownikami dla systemu Microsoft Windows, uruchomionymi dzięki aplikacji NdisWrapper. Jest to możliwe dzięki temu, że większość sterowników jest napisana zgodnie ze standardem NDIS. Po załadowaniu modułów, dalsza konfiguracja interfejsu w obu przypadkach przebiega niemal identycznie.

Sterowniki dedykowane

Do kernela w wersji 2.6.24 trafiło wiele modułów obsługujących sterowniki kart WLAN, sterowniki rozwijane niezależnie są dostępne w osobnych pakietach kernel-net-* Przykładowo zainstalujemy moduł dla kart Atheros:

$ poldek -i kernel-net-madwifi-ng

musimy załadować moduł:

# modprobe ath_pci

Jeśli nie UDEV ładuje nam moduł kernela, to musimy dodać jego nazwę do pliku /etc/modules lub /etc/modprobe.conf, co zostało szczegółowo opisano w tym dokumencie. Teraz możemy przejść do konfiguracji interfejsu.

Sterowniki z NdisWrapperem

Instalujemy pakiety kernel-net-ndiswrapper oraz ndiswrapper:

$ poldek -i ndiswrapper kernel-net-ndiswrapper

Potrzebne nam będą teraz sterowniki windowsowe naszej karty sieciowej. Konkretnie chodzi o pliki z rozszerzeniami *.inf oraz *.sys. Możesz je skopiować z dostarczonej przez producenta płytki ze sterownikami

# mkdir /lib/windrivers
# cd /lib/windrivers
# cp /media/cdrom/sciezka/do/sterownikow/sterownik.inf .
# cp /media/cdrom/sciezka/do/sterownikow/sterownik.sys .

Musimy teraz zainstalować te sterowniki przy użyciu NdisWrappera.

# ndiswrapper -i /lib/windrivers/sterownik.inf

Jeśli chcemy aby stworzył się alias w pliku /etc/modprobe.conf wykonujemy polecenie:

# ndiswrapper -m

Sieć WEP

Domyślnie rc-skrypty do obsługi WLAN używają pakietu wireless-tools:

$ poldek -i wireless-tools

Kiedy poradziliśmy sobie ze sterownikiem, musimy utworzyć odpowiedni plik konfiguracji, który umieścimy w katalogu /etc/sysconfig/interfaces/. Nazwiemy go ifcfg-wlan0, zaś w przypadku kart z chipsetem Atheros użyjemy nazwy ifcfg-ath0. Przykładową treść takiego pliku zamieszczono poniżej:

DEVICE=wlan0
IPADDR=192.168.0.2/24
ONBOOT=yes
BOOTPROTO=dhcp

WLAN_ESSID=nasza_nazwa_sieci
WLAN_KEY=A638FED41027EA086ECD6825B0

Opcje sieci bezprzewodowej rozpoczynają się się od przedrostka WLAN_, pozostałe parametry (w tym opcje protokołu IP) są takie same jak dla zwykłej karty typu Ethernet, której konfigurację szczegółowo omówiono w tym dokumencie.

Jako urządzenie w opcji DEVICE wskazujemy nadaną przez kernel nazwę. Kartom nadawane są zwykle nazwy wlan0, wlan1, itd. Wyjątkiem od tej reguły są niektóre sterowniki, rozwijane niezależnie od kernela np. ath{$NR} dla kart z układami Atheros Communications, czy ra{$NR} dla Ralink Technology (w kernelach do 2.6.24). To jaka nazwa została przydzielona naszemu urządzeniu możemy odczytać z komunikatów jądra.

Poniżej przedstawione zostaną parametry sieci WLAN:

WLAN_ESSID=moja_siec

Powyższa opcja to identyfikator ESSID naszej sieci

WLAN_KEY=A638FED41027EA086ECD6825B0

Przy pomocy kolejnej zmiennej podajemy klucz WEP, na przykładzie użyto klucza szesnastkowego, aby podać klucz w postaci ASCII musimy ma jego początku dodać: "s:"

Dodatkowo możemy ustawić szybkość interfejsu:

WLAN_BITRATE=auto

Tą opcję możemy ustawić również na sztywno, przez podanie obsługiwanej wartości np.: 11MB, 24MB, 54MB.

Sieć WPA2-PSK

Opisane powyżej wireless-tools nie potrafią używać szyfrowania WPA/WPA2, dlatego konieczny nam będzie pakiet wpa_supplicant:

$ poldek -i wpa_supplicant

Edytujemy plik /etc/wpa_supplicant.conf, w którym definiujemy opcje sieci WLAN:

ap_scan=1
		
network={
   ssid="nasza_nazwa_sieci"
   key_mgmt=WPA-PSK
   proto=RSN
   pairwise=CCMP TKIP
   group=CCMP TKIP WEP104 WEP40
   psk=anejdlf7323e64ekjlkbdsxhjsldjf3fda
}

Hasło do naszej sieci w linijce psk może być jawne lub kodowane za pomocą polecenia wpa_passphrase

Testujemy połączenie z WiFi:

# ifconfig wlan0 up
# wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd

Opcja -dd włącza tryb debugowania i jeżeli nie otrzymamy jakichś błędów, to przerywamy działanie wpa_supplicant skrótem ctr-c Pozostała nam jeszcze edycja /etc/sysconfig/interfaces/ifcfg-wlan0, w celu wskazania, że chcemy korzystać z wpa_supplicant:

DEVICE=wlan0
IPADDR=192.168.0.2/24
ONBOOT=yes
BOOTPROTO=dhcp

WLAN_WPA=yes
WLAN_WPA_DRIVER=wext

Restartujemy ponownie naszą sieć:

# /etc/init.d/network restart

i nasza sieć WiFi powinna już działać.

Aktywacja i diagnostyka

Na wszelki wypadek powinniśmy się upewnić, że nasza maszyna jest w zasięgu sieci radiowej:

# iwlist wlan0 scan

Jeśli sieć jest na liście, to próbujemy podnieść interfejs (oczywiście, jeżeli tego nie zrobiliśmy już wcześniej):

# /etc/rc.d/init.d/network start
Ustawianie parametrów sieci....................[ ZROBIONE ]
Podnoszenie interfejsu wlan0...................[ ZROBIONE ]

Aby sprawdzić czy wszystko jest OK możemy użyć polecenia iwconfig, które powinno wyświetlić coś w stylu:

# iwconfig
lo      no wireless extensions.
 
eth0    no wireless extensions.
 
wlan0   IEEE 802.11g  ESSID:"nasza_nazwa_sieci" Nickname:"foo.com"
        Mode:Managed  Frequency:2.412 GHz  Access Point: 8A:1C:F0:6F:43:2D
        Bit Rate=300 Mb/s   Sensitivity=-200 dBm
        RTS thr=2346 B   Fragment thr=2346 B
        Encryption key:ABFA-155B-E90F-1D1C-FC34-66ED Security mode:restricted
        Power Management:off
        Link Quality:100/100  Signal level:-30 dBm  Noise level:-96 dBm
        Rx invalid nwid:0  Rx invalid crypt:0
        Rx invalid frag:0
        Tx excessive retries:0  Invalid misc:0  Missed beacon:0

w wyświetlonych danych interfejsu odszukujemy wartość jakości połączenia: Link Quality Niezerowa wartość oznacza, że konfiguracja zakończyła się sukcesem.

W przypadku użycia pakietu wpa_supplicant możemy użyć programu wpa_cli:

wpa_cli status
Selected interface 'wlan0'
bssid=00:1e:e5:6d:62:5e
ssid=nasza_nazwa_sieci
id=0
pairwise_cipher=CCMP
group_cipher=TKIP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.0.2

Wartość COMPLETED parametru wpa_state oznacza prawidłowe połączenie z WiFi.

Jeżeli mamy kartę obsługującą tryb "n" może nam się przydać polecenie iwpriv z pakietu wireless-tools. Możemy przełączyć wtedy kartę wifi w szybszy tryb, ponieważ często z automatu włączony jest wolniejszy np. "g". Uruchamiamy więc:

# iwpriv wlan0 network_type n

i powinniśmy wykorzystywać już naszą kartę maksymalnie - co możemy sprawdzić poleceniem:

# iwlist bitrate
lo	no bit-rate information.
		
eth0	no bit-rate information.
		
wlan0   8 available bit-rates :
        6 Mb/s
        9 Mb/s
        12 Mb/s
        18 Mb/s
        24 Mb/s
        36 Mb/s
        48 Mb/s
        54 Mb/s
        Current Bit Rate=270 Mb/s

 
<- ->