Linux v příkazech – práce s Wi-Fi
Bezdrátová síť pro snadný přístup k Internetu je dnes naprosto běžnou
záležitostí; ať už doma pro pohodnou práci na notebooku
nebo třeba v restauracích s hotspoty. Jak se připojit v Linuxu?
1.11.2006 06:00 |
Ondřej Čečák
| Články autora
| přečteno 115259×
Once country guy: "We dug 100 ft behind our house and we found telephone cables. That proves that our ancestors
used telephones thousands of years ago." Other country guy: "We dug 200 ft behind our house and did not find
any cables. That proves that our ancestors used wireless."
Úvod o WiFi a sítích
V dnešní době už asi nemá cenu představovat Wi-Fi (původně Wireless
Fidelity), technologii představenou specifikací IEEE 802.11. Kromě
použití na například p2p spojích nás dnes bude zajímat, jak se k síti
(např. z notebooku) připojit – použijeme-li terminologii z referenčního modelu OSI/ISO, budeme se
pohybovat někde kolem fyzické a linkové vrstvy (physical, data link
layer).
Pokud by vás zajímalo, jak samotná technologie funguje a jak ji použít,
doporučuji už vydaný výborný seriál od vynikajícího autora Začínáme s WiFi.
Protože vás jistě bude zajímat, jak se dostanete po úspěšném připojení na web,
odkáži vás na opět už vyšlé články ve stejné kategorii, jako je tento –
konfigurace a
diagnostika
sítě. Ale předem vás možná uklidním, na většině míst, kde je "WiFi
konektivita" k dispozici, běží DHCP server, který vám umožní jednoduše získat
síťové parametry bez nutnosti složitě konfigurovat síťová rozhraní, směrování
a podobně. Vlastně to je zpravidla jeden příkaz.
A nakonec poslední upozornění – alespoň pokud mi je známo, je právní
problematika WiFi hotspotů tak trochu křehká; a to v tom smyslu, že je obtížné
rozlišit hotspot pro volné použití třeba od špatně nakonfigurovaného domácího
AP (Access Point, síťový prvek stojící na druhém konci našeho
bezdrátového připojení). Zdůrazňuji to proto, že neznalost zpravidla
neomlouvá, každopádně se ale v našem případě budeme připojovat k síti s dobrou
vůlí a úmysly.
Nástroje
Tak a pojďme na věc. Na úvod této sekce ještě jedna poznámka – seriál se
jmenuje Linux v příkazech, budeme se tedy věnovat připojení k síti pomocí
příkazů, což pro běžného uživatele nemusí být komfortní. Proto tu máme
grafické nástroje, které snadné připojení umožňují – rád bych zmínil
třeba grafickou nadstavbu Network Manageru KNetworkManager (implicitně
například v distribuci SUSE 10.1), KWifiManager nebo třeba Wifi Radar (podobných
nástrojů je
přes desítku, takže pokud by se vám žádný z jmenovaných nelíbil, použijte
klidně jiný; existují).
Nás tedy budou v dalším povídání zajímat především programy z balíku Wireless
Tools (například v Debianu je získáte instalací balíčku
wireless-tools ); ty umožňují nastavení Wireless Extension (WE) v
Linuxu; WE je obecné rozhraní (API), umožňující nastavování různých parametrů
vašeho bezdrátového zařízení a výhodou je především samotná obecnost (takže
tolik nezáleží na tom, kterou WiFi kartu v počítači máte), jednotnost
(nepotřebujete žádné další nástroje) a možnost předávání on-the-fly
(bez nutnost restartu ovladače nebo celého jádra [Linuxu]).
Do Wireless Tools tedy spadá většina programů, o kterých je tento článek,
jmenovitě:
iwconfig , který umožňuje nastavení základních parametrů
iwlist pro scanování, vypisování frekvencí, šifrování atd.
Pokud nahlédnete třeba do programů, která vám balíček s Wireless Tools nabízí,
zjistíte, že nástrojů je víc; my si ovšem vystačíme s touto dvojicí.
Modelová situace
Pro většinu našeho povídání si vystačíme s jedním modelovým příkladem,
řekněme, že jste si zašli do kavárny na šálek výborné kávičky a kavárna
disponuje (pro hosty) připojením k Internetu.
Je dobré si uvědomit, že s pokud použijete Linux, jste zpravidla odkázáni sami
na sebe. Ať už budete ve zmíněné kavárně nebo na konferenci, znalosti obsluhy
budou zpravidla hodně omezené a stupeň abstrakce nad použitím bezdrátového
připojení téměř nulový (takže možná zvládnou naklikání ve Windows a vyřešení
jednoduchých problémů, po zahlédnutí příkazového interpretu namísto klikacích
ikonek ale zpravidla ztratí úplně přehled), což samozřejmě není chyba, ovšem
je potřeba s tím počítat.
Kavárník či kavárnice vám tedy ochotně přinese požadovaný nápoj (a účet),
později také možná heslo, ale víc od nich čekat nebudeme.
iwlist
Tak a s chutí do toho. Prvním nástrojem, který nám prozradí většinu sítových
parametrů je program iwlist , s jeho pomocí proscanujeme pásmo pro
Wifi a zjistíme, co vlastně dokážeme chytit.
Určitě je dobré vědět, s čím máme tu čest pracovat:
hostname:~# iwlist --help
Usage: iwlist [interface] scanning
[interface] frequency
[interface] channel
[interface] bitrate
[interface] rate
[interface] encryption
[interface] key
[interface] power
[interface] txpower
[interface] retry
[interface] ap
[interface] accesspoints
[interface] peers
[interface] event
Vida, iwlist nám pomůže nejenom s prohledáním pásma, ale dokáže
nám výsledky rozumně filtrovat podle mnoha kritérií. Základní použití bude ale
přesto pouhé prohledání:
hostname:~# iwlist scanning
lo Interface doesn't support scanning.
eth0 Interface doesn't support scanning.
eth1 No scan results
Teď bohužel nemáme štěstí, žádná síť není v dosahu. Za předpokladu, že nemáte
například zapnuté tlačítko pro vypínání vysílacího výkonu bezdrátových
zařízení v notebooku, budete chtě nechtě muset změnit pozici, nasměrovat jinam
anténu nebo třeba připojit externí; každopádně se tak dostat na místo pokryté
použitelným signálem.
V naší kavárně ale signál je, proto teď už najisto spustíme vyhledávání,
tentokrát elegantně se zkrácenou verzí příkazu a se zavoláním konkrétního
zařízení (které je v mém případě eth1 , ovšem u vás může být třeba
wlan0 ):
hostname:~# iwlist eth1 scan
eth1 Scan completed :
Cell 01 - Address: 00:15:C7:EE:B5:50
ESSID:"kavarna"
Protocol:IEEE 802.11bg
Mode:Master
Channel:5
Encryption key:off
Bit Rate:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 24 36 48 54
Quality=49/100 Signal level=-83 dBm
Extra: Last beacon: 140ms ago
Cell 02 - Address: 00:15:C7:EE:B4:E0
ESSID:"kavarna-secured"
Protocol:IEEE 802.11bg
Mode:Master
Channel:11
Encryption key:on
Bit Rate:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 24 36 48 54
Quality=41/100 Signal level=-76 dBm
Extra: Last beacon: 49ms ago
Cell 03 - Address: 00:15:C7:EE:7B:90
ESSID:"kavarna-secured2"
Protocol:IEEE 802.11bg
Mode:Master
Channel:1
Encryption key:on
Bit Rate:54 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 24 36 48 54
Quality=53/100 Signal level=-80 dBm
Extra:wpa_ie=db180050e20101000050f20001000050f202010000
50f2002800
Extra: Last beacon: 375ms ago
Tak, teď máme vše, co jsme potřebovali, takže se s iwlist em
rozloučíme třeba výpisem dostupných rychlostních modů:
hostname:~# iwlist eth1 rate
eth1 12 available 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
Current Bit Rate=0 kb/s
iwconfig
A směle do připojení. Pro to použijeme nástroj iwconfig :
hostname:~# iwconfig --help
Usage: iwconfig interface [essid {NN|on|off}]
[nwid {NN|on|off}]
[mode {managed|ad-hoc|...}
[freq N.NNNN[k|M|G]]
[channel N]
[ap {N|off|auto}]
[sens N]
[nick N]
[rate {N|auto|fixed}]
[rts {N|auto|fixed|off}]
[frag {N|auto|fixed|off}]
[enc {NNNN-NNNN|off}]
[power {period N|timeout N}]
[txpower N {mW|dBm}]
[commit]
Check man pages for more details.
Jako asi první příklad vypíšeme stav bezdrátových zařízení:
hostname:~# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 unassociated ESSID:"down"
Mode:Managed Frequency=2.417 GHz Access Point: 00:00:00:00:00:00
Bit Rate=0 kb/s Tx-Power=20 dBm
RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:237 Missed beacon:0
Teď už nám půjde jenom o to, nastavit bezdrátovou kartu tak, aby jednotlivé
položky výpisu obsahovaly správné hodnoty, ty, které nám řekl
iwlist . Protože se budeme připojovat k AP, zajímá nás režim
managed.
mode managed
Tak, nyní se můžeme připojit.
Přepneme bezdrátové zařízení do managed módu:
hostname:~# iwconfig eth1 mode managed
A nastavíme potřebné parametry, které nám prozradil iwlist . V
tuto chvíli použijeme první nalezenou síť, kde není nastaveno žádné šifrování
(které je představeno o něco níže).
hostname:~# iwconfig essid kavarna
hostname:~# iwconfig channel 5
Elegantně lze celou sérii příkazů napsat na jeden řádek:
hostname:~# iwconfig eth1 mode managed essid kavarna channel 5
Úspěšné připojení poznáte třeba příkazem iwconfig bez zvláštního parametru:
hostname:~# iwconfig eth1
eth1 IEEE 802.11g ESSID:"kavarna"
Mode:Managed Frequency:2.432 GHz Cell: 02:12:E0:51:5E:48
Bit Rate=54 Mb/s Tx-Power=20 dBm
RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:55 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:237 Missed beacon:0
Kromě teoretické maximální rychlosti se zde také třeba dozvíte, jak kvalitní
získáváte signál nebo vysílací výkon.
Zpravidla následuje získání síťových parametrů přes DHCP, to zvládne několik
programů, zkusit můžete dhclient nebo pump , pokud je
nějaký nainstalovaný, hádám, že to bude jeden z nich.
Tedy:
hostname:~# dhclient eth1
nebo:
A konečně, obligátní použití příkazu ping :
hostname:~# ping www.linuxsoft.cz
PING www.linuxsoft.cz (82.208.29.37) 56(84) bytes of data.
64 bytes from ip37.motylek.com (82.208.29.37): icmp_seq=1 ttl=54 time=51.44 ms
64 bytes from ip37.motylek.com (82.208.29.37): icmp_seq=2 ttl=54 time=51.51 ms
64 bytes from ip37.motylek.com (82.208.29.37): icmp_seq=3 ttl=54 time=51.41 ms
--- www.linuxsoft.cz ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 51.419/51.459/51.511/0.058 ms
Nás v tuto chvíli zajímá pouze jak se připojit, pokud už získáte adresu a
přesto se na Internet nedostanete, možná provider zvolil jenom jinou taktiku
při autentizaci. Například tak můžete narazit na situaci, kdy se připojíte,
dostanete síťovou adresu, ale všechny pokusy o přístup k webu jsou
přesměrovány na autentizační stránku poskytovatele, kde musíte zadat potřebné
údaje.
WEP
I když je (spíše filozofickou) otázkou, zda samotný fyzický/linkový provoz
WiFi šifrovat, je možné a obvyklé nějaké šifrování použít. Tím prvním je WEP
(Wired Equivalent Privacy), přímá součást standardu IEEE 802.11, ovšem
už překonaná a především, triviálně zlomitelná (s běžným nástrojem řekněme do
10 minut), ovšem stále používaná především kvůli její jednoduchosti a široké
podpoře zařízení.
WEP pracuje typicky s 40 bitovým klíčem, případně s rozšířenou verzí s délkou
104 bitů (do "kulatých" čísel připočítejte 24 bitový inicializační vektor
[IV]), nás především zajímá, že (pokud ho už nemáme) požádáme obsluhu o "heslo
pro připojení k síti". V závislosti na použitém šifrování nebo zápisu hesla,
můžete dostat na papírku následující řetězce:
- segafredo
- 7365676166
- 7365-6761-66
- 7365-6761-6672-6564-6F00-0000-00
Paráda, máme co potřebujeme.
Užitečné bude nejdříve vědět, jak šifrování vypnout:
hostname:~# iwconfig eth1 encryption off
A následně je už předání správných parametrů systému jednoduché, jenom je
třeba rozlišovat, jestli se jedná o hexadecimálně zadaný klíč (obsahující
pouze znaky 0-9 a A-F, běžně oddělovaný po 4 znacích) nebo řetězec.
V našich případech bude tedy správné:
hostname:~# iwconfig eth1 enc s:segafredo
hostname:~# iwconfig eth1 enc 7365676166
hostname:~# iwconfig eth1 encryption 7365-6761-66
hostname:~# iwconfig eth1 key 7365-6761-6672-6564-6F00-0000-00
Prosím všimněte si, že parametry enc , encryption a
key jsou ekvivalenty, prefix s: před heslem znamená, že ho udáváme jako
řetězec.
Příkaz pak buďto vložíme do posloupnosti příkazů výše nebo jednoduše část bez
iwconfig eth1 přidáme do jednořádkového nastavení. Ovšem
samozřejmě použijeme jiný kanál, konkrétně 11 s ESSID kavarna-secured, o
kterém nám iwlist prozradil, že používá šifrování.
WPA
V případě WPA se setkáváme s implementací části specifikace IEEE 802.11i,
konkrétně se budeme autentizovat proti zařízení implementující IEEE 802.1x,
typicky využívající mod PSK (pre-shared key). Pro nás to opět znamená
jediné, poprosit o "heslo pro připojení k síti" a dostaneme nejspíš například
řetězec:
Paráda, opět máme vše potřebné.
Nutno dodat, že s WPA je situace trošku horší, protože implementace IEEE
802.1x je v Linuxu trošku zvláštní, složí k tomu nástroj WPA Supplicant, který
například na Debianu získáte instalací balíčku wpasupplicant .
Nejprve vygenerujeme klíč z hesla, které jsme dostali od obsluhy; SSID/ESSID
jsme poznali z výpisu iwlist u výše, že se jedná o použití WEP
jsme odhalili z řádek Encryption key:on a
Extra:wpa... .
hostname:~# wpa_passphrase kavarna-secured2 segafredo
network={
ssid="kavarna-secured2"
#psk="segafredo"
psk=957595b5491edd06331fb43e954664d4e1a0ea3bb4b65ec61b3410123fa22481
}
wpa_passphrase rovnou generuje výstup v syntaxi konfiguračního
souboru standardně umístěného v /etc/wpa_supplicant.conf , takže
ho vygenerujeme:
hostname:~# wpa_passphrase kavarna-secured2 segafredo > /etc/wpa_supplicant.conf
A necháme wpa_supplicant , ať se předvede:
hostname:~# wpa_supplicant -B -i eth1 -D ipw -w -dd
Pokud byste se ztráceli v konfiguračních možnostech, použijte třeba parametr
--help :
hostname:~# wpa_supplicant --help
...
usage:
wpa_supplicant [-BddehLqqvw] -i<ifname> -c<config file> [-D<driver>] \
[-N -i<ifname> -c<conf> [-D<driver>] ...]
drivers:
hostap = Host AP driver (Intersil Prism2/2.5/3)
prism54 = Prism54.org driver (Intersil Prism GT/Duette/Indigo)
madwifi = MADWIFI 802.11 support (Atheros, etc.)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wext = Linux wireless extensions (generic)
ndiswrapper = Linux ndiswrapper
ipw = Intel ipw2100/2200 driver
options:
-B = run daemon in the background
-d = increase debugging verbosity (-dd even more)
-K = include keys (passwords, etc.) in debug output
-t = include timestamp in debug messages
-h = show this help text
-L = show license (GPL and BSD)
-q = decrease debugging verbosity (-qq even less)
-v = show version
-w = wait for interface to be added, if needed
-N = start describing new interface
V našem případě chceme, aby daemon běžel na pozadí a vypisoval při připojování
ladící informace, které se hodí třeba v případě, kdy něco nefunguje, jak má.
mode ad-hoc
Stává se, že se hodí spojit se s druhým počítačem třeba pro
výměnu souborů, v tom případě najde uplatnění spojení ad-hoc; jde o poměrně snadný
a elegantní způsob, rozhodně snazší, než se omezovat dráty:
hostname:~# iwconfig mode ad-hoc essid adhoc channel 7
Není asi potřeba zdůrazňovat, že na druhém počítači zadáte stejný příkaz,
ESSID můžete zvolit téměř libovolné, kanál především v závislosti na tom, jak
jsou v místě použití využívané.
mode monitor
Celkem užitečnou věcí je také monitorovací mód, kterým vám může pomoci
zjistit, co za provoz na bezdrátové síti proudí v místě, kde kvůli bezpečnosti
(např. kancelář) žádná být nesmí.
Jednoduše (pokud to ovladač podporuje) přepneme kartu do správného režimu:
hostname:~# iwconfig eth1 mode monitor
Zaktivníme síťové zařízení a pustíme třeba tcpdump :
hostname:~# ifconfig eth1 up
hostname:~# tcpdump -i eth1
...
Závěr
Doufám, že když nic jiného, tak vám článek byl alespoň úvodem do práce s
bezdrátovými sítěmi na příkazovém řádku. V běžných případech by ale měl
myslím stačit; takže si užijte pohodlného používání. ;)
Zdroje
man iwconfig
man iwlist
man iwspy
man nwepgen
man wpa_supplicant
man wpa_passphrase
- Wikipedia
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|