cs:uzivatel:sw:nix:wpa_supplicant

Konfigurace WPA Supplicantu pro připojení k eduroamu

WPA Supplicant je program, který se v linuxu stará o podporu WPA zabezpečení wi-fi sítí. Na rozdíl od programu xsupplicant bývá standardní součástí distribucí, které podporují WPA šifrování, a tak je zahrnut i ve standardních spouštěcích skriptech wi-fi rozhraní.

Podporované chipsety

Zda má wpa_supplicant zakompilovánu podporu pro váš chipset zjistíte tak, že program spustíte bez parametrů:

# wpa_supplicant
...
drivers:
  hostap = Host AP driver (Intersil Prism2/2.5/3)
  prism54 = Prism54.org driver (Intersil Prism GT/Duette/Indigo)
  atmel = ATMEL AT76C5XXx (USB, PCMCIA)
  wext = Linux wireless extensions (generic)
  ndiswrapper = Linux ndiswrapper
  ipw = Intel ipw2100/2200 driver
  wired = wpa_supplicant wired Ethernet driver
...

Pokud v seznamu nenajdete ovladač pro váš wifi adaptér, je možné, že adaptér podporuje generický ovladač wext. S tímto ovladačem pracují i nové ovladače pro čipy IPW.

Konfigurační soubor

Jednotlivé bedrátové sítě, ke kterým se chceme připojit, se definují v konfiguračním souboru /etc/wpa_supplicant.conf. Je jich možno definovat libovolně mnoho, program se připojí k té, která je dostupná a zároveň má největší prioritu. Následující příklad ukazuje připojení k síti eduroam 802.1x s následným fallbackem lokální síť organizace (původně eduroam-simple řešení založené na authentizaci pomocí web formuláře).

Pozor: Toto není úplný konfigurační soubor wpa_supplicant.conf, zde je pouze část, věnovaná eduroam sítím. Pro zprovoznění je většinou ještě potřeba poladit alespoň globální parametr ap_scan.

network={
        priority=5
        ssid="eduroam"
        scan_ssid=1
        key_mgmt=WPA-EAP
        eap=PEAP
        identity="eduroam_jmeno@realm"
        password="eduroam_heslo"
        ca_cert="/etc/ssl/certs/cesnet-ca.pem"
        altsubject_match="DNS:radius1.organizace.cz;DNS:radius2.organizace.cz"
        phase1="peaplabel=0"
        phase2="auth=MSCHAPV2"
}
network={
        ssid="organizace"
        key_mgmt=NONE
        priority=4
}

K úspěšnému připojení k 802.1x síti eduroam je nutný certifikát certifikační autority, která vydala certifikát RADIUS serveru vaší organizace. Většinou se jedná o CESNET CA, kořenový certifikát je dostupný na stránce zde. Program wpa_supplicant pracuje pouze s certifikáty formátu PEM. Některé organizace používají novou službu SureServer EDU, jejíž kořenový certifikát od společnosti Global Sign už pravděpodobně máte na systému předinstalovaný, případně si jej můžete stáhnout zde.

Abyste měli jistotu, že se připojujete, a především že posíláte své heslo vašemu domácímu RADIUS serveru, musíte uvést direktivu altsubject_match (Pozor! V řetězci se nesmí vyskytovat mezery). Správné nastavení ověřování identity RADIUS serveru, se kterým váš suplikant komunikuje, je nezbytné pro ochranu vašeho hesla. Věnujte tomu proto náležitou pozornost! Další informace nalezne na stránce ”Práce s certifikáty v eduroamu”.

Provozuje-li vaše organizace víc než jeden RADIUS server, je pro správnou funkci nutné používat wpa_supplikant verze minimálně 0.5.6! Předchozí verze nezvládají ověřit více než jeden RADIUS server. wpa_supplikant musí být přeložen s OpenSSL nikoliv GNU TLS.

Připojení

Po uložení konfiguračního souboru můžeme zkusit připojení přes rozhraní wlan0 s generickým ovladačem příkazem

 # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

Pokud autentifikace proběhla úspěšně, zbývá rozhraní přiřadit IP adresu pomocí DHCP klienta, např. takto:

 # dhcpcd wlan0

To je ovšem zapotřebí pouze pokud vaše distribuce nepodporuje wpa_supplicant ve svých spouštěcích skriptech. V opačném případě obvykle stačí upravit konfigurační soubor a spustit bezdrátovou síť spouštěcím skriptem distribuce. Průběh asociace je možné sledovat na příkazovém řádku programem wpa_cli, nebo v grafickém režimu pomocí programu wpa_gui.

Debian a jeho klony (*ubuntu)

V testing verzi debianu je wpasupplicant balíček ve verzi 0.5.x, který je navázaný na ifupdown skripty (wpasupplicant neběží jako samostatný daemon). Parametry nastavení se očekávají v souboru /etc/network/interfaces, kam stačí přidat:

auto eth1
iface eth1 inet dhcp
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

kde eth1 je sítové rozhraní bezdrátového adaptéru a soubor /etc/wpa_supplicant/wpa_supplicant.conf je funkční konfigurace pro wpasupplicant.

Pokud v okamžiku, kdy tento návod čtete, stále není v distribuci k dispozici alespoň verze 0.5.6, můžete si stáhnou balíček pro Debian z apt repository na opf.slu.cz.

Jádra Linuxu

Distribuční jádra

Mnoho distributorů Linuxu se stará, aby jejich jádra podporovala co nejvíc zařízení. Hledají a sami aplikují potřebné záplaty pro dosažení nejlepší funcionality. Provozujete-li distribuční kernel, tak prostě vyzkoušejte výše popsané nastavení, je veliká šance, že vám připojení bude fungovat bez potíží.

Vanila jádra <= 2.6.18

Popsaný postup byl úspěšně testován na jádru 2.6.16-r1 s MiniPCI kartou Intel Pro Wireless 2200BG, která je součástí balíku Centrino. Ovladač pro tuto kartu je zahrnut přímo v oficiálních zdrojových kódech jádra. I přesto, že IPW2200 má podporu ve wpa_supplicantu, nové verze jaderného modulu pracují pouze přes wireless extensions. — Ondřej Caletka

Mé zkušenosti s jádrem 2.6.16.9 ukazují, že drivery z vanila kernelu nefungují korektně s 802.1x a WPA, klient se pořád asocijuje, dostává disconnect event a nedokáže dostat žádná data k RADIUS serveru, tedy se nedokáže ověřit. Musel jsem nahradit celý 802.1x subsystém vanila kernelu a následně nahradit drivery pro kartu Intel Pro Wireless 2200BG.

Pokud používáte kernel z distribuce je možné, že toto za vás už udělal někdo z vývojářů. Pokuste se to zjistit v dokumentaci. Testoval jsem také kernel 2.6.17 - byl třeba stejný postup, ale nechodí CDMA modem Eurotelu. V kernelu 2.6.18 zase špatně funguje Suspend 2, takže k 7. 11. 2006 se jeví jako jediný použitelný kernel 2.6.16.9, ve kterém fungují všechny pro mě důležité komponenty. — Jan Tomášek

Vanila jádro = 2.6.20.1

U vanila jádra není nutné patchovat kernel ovladači z sourceforge.net. Stačí ho správně nakonfigurovat:

  • všechny položky v cryptoapi (v menuconfigu Cryptographic options) mít jako muduly.
  • Zapnout volbu Wireless Extension API over RtNetlink (v Device drivers/Network device support/Wireless LAN (non-harmradio)). Bez toho se nepovede autentikace proti radius serveru!
  • Jako moduly mít příslušné drivery (IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP pro Intersil Prism2, Intel PRO/Wireless 2200BG and 2915ABG Network Connection pro intelí kartu) — Jan Vraný

— Návod byl převzat od Ondřeje Caletky, původní text je v jeho blogu
Jan Tomášek 07.06.2006 09:53 vytvoření dokumentu
Jan Tomášek 18.03.2007 18:18 doplnění informací o certifikátech, doplnění sekce o kernelech

Last modified: 2007/03/19 15:21