Po krótce chciałbym się podzielić moją wiedzą jeśli chodzi o karty bezprzewodowe i korzystanie z nich w systemie Linux (niekoniecznie tylko Ubuntu!), gdyż w wielu przeczytanych wątkach pojawia się szereg problemów które w dużej mierze dublują się lub wynikają z podstawowej wiedzy na temat tego jak Linux obsługuje karty radiowe.
1. Karty obsługiwane pod Linuxem
W odróżnieniu systemu Windows ilość dostępnych sterowników dla Linuxa jest niestety wyjątkowo uboga, niemniej jednak większość dostępnych kart radiowych da się z powodzeniem uruchomić na pingwinie. Problem zazwyczaj dotyczy albo kart nowych (np. bazujących na standardzie N albo Pre-N) albo też mało popularnych układów do których nikt nie napisał jeszcze sterowników. Aby dowiedzieć się czy dana karta jest obsługiwana najpierw warto się dowiedzieć na bazie jakiego układu dana karta działa. Tutaj wbrew pozorom układów nie jest szalenie dużo w odróżnieniu od modeli kart dostępnych na rynku. Można się czasami zdziwić, że karty radiowe kosztujące 39zł i te za 139zł to w sumie jeden i ten sam model - różniący sie zazwyczaj tylko pudełkiem i ew napisami. Ubuntu domyślnie posiada w sobie następujące sterowniki :
- madwifi-ng (sterownik obsługuje wszystkie karty PCI/PCMCIA (bez USB) na bazie chipsetu Atheros - większość kart takich firm jak SparkLAN, TP-Link bazują na układzie Atherosa choć zdarzają się wyjątyki.)
- b43, b43legacy, bcm43xx (3 różne sterowniki do kart radiowych firmy Broadcom bazujących na chipie BCM43XX - najczęściej są to układy zintegrowane bądź też dostępne w formie kart miniPCI - duża część notebooków ACER'a, Fujitsu-Siemens czy też HP - miało właśnie układy na bazie Broadcom'a.)
- hostap (sterownik układów Intersil PRISM2 - leciwe już karty, ale wciąż spotykane jako układy dla kart PCMCIA i PCI oraz miniPCI)
- libertas (sterownik dla układu MARVELL LIBERTAS - czasami spotykane karty PCI, miniPCI oraz USB)
- prism54 (sterownik dla układów Intersil PRISM54 (802.11g) - układ popularny wśród wczesnych kart 802.11g - Sweex, Planet robili karty na bazie tego układu).
- rt2x00 (Ubuntu posiada pakiet tych sterowników w kilku wersjach rt2400pci, rt2500pci, rt2500usb,rt2x00pci,rt2x00usb, rt61pci, rt73usb - wersje bez X są starszymi (LEGACY) sterownikami które powiny pracować ze starszymi układami firmy RaLink bez najmniejszych problemów - karty na bazie rt2500 produkowane są do dzisiaj i jest to najpopularniejszy układ w tej chwili na rynku. Wiele kart w formie wtyczki USB bazuje właśnie na układzie RaLink 2500 i nowszych wersjach RT61 (MIMO!) i 73(USB) itd.)
- zd1211rw i zd1201 (Chipset ZyDAS - w wiekszości produkowanych urządzeń chipset ten znalazł zastosowanie w wielu kartach USB - nie widziałem nigdy tego układu w kartach PCI czy miniPCI)
- adm8211 (Sterownik dla układu ADMTEK - leciwy i niezwykle rzadko stosowany )
- atmel (Kiedyś popularny układ dla wszelakiej maści kart na USB np. Linksys)
- hermes (Sterownik dla wszelkiego rodzaju maści kart PCI i PCMCIA na bazie starego układu HERMES - przede wszystkim stosowany w popularnych kartach Lucent Orinocco)
- ipw2100, ipw2200 (Sterownik dla kart na bazie Intel Pro Wireless 2100/2200 - w wiekszości wypadków układy zintegrowane bądź też dostępne w formie kart miniPCI).
- wl3501 - (Sterownik dla kart Planet 3501 - bóg raczy wiedzieć co to jest za układ)
- bcmw1 - (sterownik dla Broadcom Airforce One - stosowany w notebookach)
- rtl8187 - (sterownik wspierający układy Realtek RTL8180 (802.11b), RTL8185 (802.11g) oraz RTL8187 (802.11g))
Jak widać Linux ma trochę sterowników i bynajmniej nie są to wszystkie dostępne sterowniki. Z uwagi na to, że wiele układów nie może byc wspieranych przez developerów Ubuntu oraz innych dystrybucji Linuxa istnieje wiele sterowników które nie znalazły się w dystrybucji - być może za jakiś czas lista dostępnych sterowników się zwiększy - przynajmniej do tego czasu będziemy musieli sobie skompilować sterownik samemu - ale to na koniec. Sterowników z miesiąca na miesiąc troche przybywa : http://linuxwireless.org/en/users/Drivers - warto sprawdzać czy nie pojawiają się jakieś nowsze sterowniki lub też nie poprawiono istotnych błędów.
2. Co kraj to obyczaj czyli ieee80211 vs net80211
Niestety w Linuxie w dużej mierze nie zunifikowano w większości wypadków wszystkich sterowników jak ma to miejsce pod systemem Windows, gdzie istnieje dość dobrze opisany standard oraz API o nazwie NDIS (ang. Network Driver Interface Specification, NDIS) – interfejs programowania aplikacji (API) dla kart sieciowych. Stąd bardzo często pojawia się problem związany z tym, że do obsługi danej karty pod Linuxem musimy użyc specyficznych komend bądź też duże rzeczy zrobić ręcznie - w przeciwnym wypadku popularne konfiguratory sieci nie będą działać lub też karta radiowa będzie widziana jako zwykła karta LAN. To rodzi pewne problemy, ale w dużej mierze dotyczy to raczje leciwych sterowników które nie są już rozwijane. Developerzy Linuxa o ile w już dość dawno prowadzili tzw. stos ieee80211 do obsługi kart to wraz z rozwojem funkcjonalności poszczególnych sterowników wynikła potrzeba rozszerzenia istniejącej już obsługi kart WIFI, więc zaczęto pracować nad nowymi rozszerzeniami - na szczęście wiele rzeczy pozostało niezmienionych.
3. Działajmy !
Jeśli już posiadamy komputer/notebooka z kartą wifi trzeba byłoby w jakiś sposób określić jaką kartę posiadamy i czy możemy z niej skorzystać. Ubuntu ma to do siebie że w wiekszości wypadków sam automatycznie przy starcie systemu wykrywa większość sprzętu sieciowego. Aby sprawdzić czy Ubuntu załadował do naszej karty sterownik czy też nie należy wykonać w konsoli komendę
Kod: Zaznacz cały
sudo iwconfig
Kod: Zaznacz cały
wlan0 IEEE 802.11b ESSID:""
Mode:Auto Frequency:2.457GHz Access Point: FF:FF:FF:FF:FF:FF
Bit Rate:11Mb/s Tx-Power:20 dBm Sensitivity=0/242700000
RTS thr:2432 B Fragment thr:2432 B
Encryption key:off
Power Management:off
Link Quality:100/100 Signal level:-95 dBm Noise level:-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Kod: Zaznacz cały
sudo lspci
4. Podstawowe komeny do zarządzania połączeniem oraz diagnostyka
W Linuxie interfejsy mają kilka stanów w których działają i pozwalają na korzystanie z nich. Domyślnie komenda iwconfig wyświetla wszystkie dostępne interfejsy - niemniej czasami konfigurator (np. WICD czy Network Manager) może danej karty nie widzieć albo nie pozwoli jej na obsługę dopóki interfejs nie zostanie uaktywniony za pomocą komendy
Kod: Zaznacz cały
sudo ifconfig nazwa_interfejsu up
Kod: Zaznacz cały
sudo rmmod rt2x00
sudo modprobe rt2x00
Tutaj dla przykładu użyliśmy sterownika rt2x00 dla kart firmy Ralink, w przypadku innych kart musimy podać nazwę modułu (listę wszystkich załadowanych modułów można wyświetlić za pomocą komeny
Kod: Zaznacz cały
sudo lsmod
Żeby sprawdzić czy karta faktycznie działa możemy skorzystać z prostych komend do konfiguracji :
Kod: Zaznacz cały
sudo iwconfig nazwa_interfejsu essid nazwa_SSID_nadajnika
Kod: Zaznacz cały
sudo iwlist nazwa_interfejsu scan
Kod: Zaznacz cały
ath0 Scan completed :
Cell 01 - Address: 00:1A:6B:05:C7:F1
ESSID:"neostrada_309e"
Mode:Master
Frequency:2.457 GHz (Channel 10)
Quality=31/70 Signal level=-64 dBm Noise level=-95 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
Jesli uzywamy szyfrowania WEP musimy podać kluczy szyfrujący - w tym wypadku wpisujemy komendę :
Kod: Zaznacz cały
sudo iwconfig nazwa_interfejsu key klucz_wep_w_hexach
Kod: Zaznacz cały
sudo iwconfig nazwa_interfejsu key s:klucz_ascii
Kod: Zaznacz cały
wlan0 IEEE 802.11b ESSID:"bercik"
Mode:Auto Frequency:2.457GHz Access Point: 00:10:a1:1a:28:10
Bit Rate:11Mb/s Tx-Power:20 dBm Sensitivity=0/242700000
RTS thr:2432 B Fragment thr:2432 B
Encryption key:off
Power Management:off
Link Quality:20/100 Signal level:-60 dBm Noise level:-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
4. Szyfrowanie WPA/WPA2
Szyfrowanie WPA oraz WPA2 opiera się na troszkę innych zasadach niż standardowe szyfrowanie WEP. Linux podobnie jak Windows czy też inne systemy do szyfrowania WPA wszelkiego rodzaju używa tzw. suplikanta - aplikacji która pośredniczy w szyfrowaniu i wymianie kluczy szyfrujących oraz steruje kartą radiową. W przypadku Linuxa oraz Ubuntu standardem jest tzw. pakiet WPA_Supplicant - który pozwala zarządzać kartą za pomocą tzw. Wireless Extensions (sterownik wext) oraz pozwala zestawiać różnego rodzaju szyfrowanie (EAP, LEAP, WPA-Radius itd.) Narzędzie jest naprawdę złożone i ciężko mi od razu opisać wszystkie jego możliwości oraz konfigurację. Dla początkującego użytkowniak zdecydowanie najlepiej będzie skorzystać z nakładki graficznej jaką jest np. WiCD ( http://czytelnia.ubuntu.pl/index.php/2007/07/28/wicd/ )