Postavitev WLAN vstopne točke za Eduroam pod FreeBSD
Mark Martinec Mark.Martinec@ijs.si, 14. oktobra 2005, zadnji popravki 19. maja 2006
Potrebujemo:
- FreeBSD verzijo 6.0 ali kasnejšo (verzije pred tem imajo le zasilno podporo za WLAN);
- ustrezni WLAN vmesnik (npr. PCI kartico);
odprtokodni program hostapd;
radius strežnik nastavljen po Arnes navodilih za Eduroam
Izbira vmesnika WLAN
Potrebujemo vmesnik WLAN (npr. PCI kartico) z enim od integriranih vezij, ki so dobro podprti z gonilniki na sistemih Unix in podpirajo način delovanja host-based access point, po možnosti prek DMA in z dobro strojno podporo za šifriranje.
Sedaj so resni kandidati predvsem vmesniki na osnovi Atherosovih vezij, od katerih sedaj modela AR5212 in AR5213 podpirata AES-CCM in TKIP tudi v strojni opremi (sicer pa se TKIP in AES-CCMP opravita programsko v dinamično naloženih modulih jedra). Za dobro podporo teh izdelkov je zaslužno podjetje Atheros, ki aktivno podpira odprtokodne sisteme Unix in Linux.
V tako zoženem izboru sedaj ostanejo naslednje PCI-kartice:
$ man ath | egrep 'AR5212|AR5213' | grep PCI D-Link DWL-AG520 AR5212 PCI a/b/g D-Link DWL-G520B AR5212 PCI b/g HP NC4000 AR5212 PCI a/b/g Linksys WMP55AG AR5212 PCI a/b/g Netgear WAG311 AR5212 PCI a/b/g Netgear WG311T AR5212 PCI b/g
Zastopnik za Netgear v Sloveniji je Domex, d. o. o., kartice je možno kupiti v Comtron-ovih trgovinah po Sloveniji. Uspešno smo preizkusili Netgear WG311T.
Pri izbiri drugačnih vmesnikov je treba skrbno prebrati priročniške strani ath(4), wi(4), awi(4), an(4), ral(4) in se pametno odločiti.
Nastavitve operacijskega sistema
Za nekatere kartice WLAN je podpora že v privzetem (GENERIC) jedru pri verzijah FreeBSD 6.0 in 6.1 (wlan, an, awi, ral, wi), za druge je treba gonilnik vključiti izrecno. Za kartice temelječe na vezju Atheros je potreben modul ath.ko . Ročno ga zahtevamo z ukazom kldload ath.ko, avtomatsko ob zagonu računalnika pa z vrstico if_ath_load="YES" v datoteki /boot/loader.conf.
V to isto datoteko /boot/loader.conf je koristno tudi dodati vrstico: hw.ath.countrycode="705", ki pove gonilniku ath, da se nahaja v Sloveniji in da so tu (kot drugod v EMEA) dovoljeni tudi kanali 12 in 13, ki v ZDA niso dovoljeni. (Pri verziji FreeBSD 6.0 je ime parametra dev.ath.countrycode namesto hw.ath.countrycode kot pri 6.1.)
Večina nastavitev kartice WLAN se opravi z ukazom ifconfig, vključno z izbiro kanala, BSSID, prav tako tudi pregledovanje frekvenčnega prostora (scan). Nastavitve mehanizmov dostopa določimo prek programa hostapd (v nadaljevanju). Pri WPA-dostopu bo hostapd po potrebi avtomatsko naložil module, ki so opisani v wlan_ccmp(4), wlan_tkip(4), wlan_xauth(4).
Sedaj se najbolj sveža navodila za brezžična omrežja pod FreeBSD 6.0 in 6.1 (ki bodo umeščena v glavni priročnik ob izidu nove verzije priročnika) zaenkrat nahajajo na naslovu: http://www.freebsdmall.com/%7Eloader/en_US.ISO8859-1/articles/wireless/article.html
Program 'hostapd' -- IEEE 802.1X/WPA/EAP avtentikator
Za posredovanje avtentikacijskega protokola med prosilcem (supplicant) in strežnikom radius ter za upravljanje z vmesnikom potrebujemo odprtokodni program 'hostapd', ki ga dobimo na http://hostap.epitest.fi/. Program je sicer že v /usr/sbin in se nahaja tudi v zbirki ports
kot security/hostapd, vendar sta obe verziji sedaj prestari
in ne podpirata EAP-TTLS, ki je potreben za Eduroam, ali pa kako drugače nagajata, tako da je najboljše vzeti in prevesti zadnjo od različic (ob času pisanja je zadnja stabilna različica 0.4.9).
Pri prevajanju programa hostapd sledimo priloženim navodilom v README. Za delovanje pod FreeBSD je najpomembnejša nastavitev izbor vmesnika do gonilnika BSD 802.11 (man page: ieee80211(4)):
CONFIG_DRIVER_BSD=y CFLAGS += -I/usr/local/include LIBS += -L/usr/local/lib
Potrebujemo vsaj še:
CONFIG_EAP=y CONFIG_EAP_TTLS=y CONFIG_RADIUS_SERVER=y
Če pri prevajanju naletimo na napake, lahko mirno ukinemo ali odkomentiramo nastavitvi:
#CONFIG_DRIVER_HOSTAP=y #CONFIG_IAPP=y
Program prevedemo in ga namestimo na sistem (gmake install).
V datoteki /etc/hostapd.conf pripravimo nastavitve za naš AP, npr.:
ssid=eduroam interface=ath0 driver=bsd ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel logger_syslog=-1 logger_syslog_level=0 # verbose=0, debug=1, info=2, notice=3, warn=4 ieee8021x=1 wpa=3 wpa_key_mgmt=WPA-EAP wpa_pairwise=CCMP TKIP own_ip_addr=192.0.2.2 # IP naslov tega APja v NAS-IP-Address atributu auth_server_addr=192.0.2.14 # IP naslov radius strežnika acct_server_addr=192.0.2.14 # IP naslov radius strežnika auth_server_shared_secret=Hf5h8vdfGCjKhu-9-9kuXk # se mora ujemati z radius acct_server_shared_secret=Hf5h8vdfGCjKhu-9-9kuXk # se mora ujemati z radius
Nastavimo vmesnik WLAN (npr. ath0) -- lahko ročno z ukazom ifconfig, ali pa poskrbimo za nastavitve ob zagonu računalnika z vrstico v /etc/rc.conf:
ifconfig_ath0='ssid eduroam channel 6 -apbridge \ media autoselect mode 11g mediaopt hostap'
Poženemo program hostapd, lahko ročno: hostapd -B /etc/hostapd.conf ali pa poskrbimo za to ob zagonu.
Radius AAA strežnik
Avtentikacijski, avtorizacijski in obračunski strežnik namestimo iz ports zbirke: net/freeradius in ga nastavimo po Arnesovih navodilih: http://www.arnes.si/eduroam/
Katero IP-omrežje?
Omrežje WLAN lahko uporablja samostojen naslovni prostor IP, v tem primeru nastavimo vmesniku WLAN IP-naslov in masko (ifconfig) ter poskrbimo za pravilno usmerjanje bodisi s statičnimi nastavitvami, za bolj zahtevna omrežja pa lahko na primer uporabimo protokol OSPF in usmerjevalni program zebra ali quagga (kvaga je izumrla podvrsta zebre, program quagga pa je izpeljan iz programa zebra). Nahaja se v ports zbirki kot: net/quagga.
Druga možnost je, da je naslovni prostor na vmesniku WLAN enak naslovnemu prostoru na vmesniku ethernet, v tem primeru na vmesnik WLAN ne smemo nastaviti IP-naslova, pač pa poskrbimo, da operacijski sistem povezuje oba vmesnika na drugem nivoju (layer-2 bridging). Nekoliko starejša navodila so v "FreeBSD Handbook" v poglavju: Advanced Networking -> Bridging, sodobnejša različica pa je opisana v if_bridge(4).
Glede na izbor naslovnega prostora nam utegne prav priti preslikava naslovnega prostora (NAT) med zasebnim in javnim naslovnim prostorom. NAT podpirata oba požarna zidova pod FreeBSD: ipfw (ob pomoči programa natd(8) in DIVERT nastavitve), in tudi OpenBSD Packet Filter (PF).
Tudi podpora za navidezna omrežja (VLAN) je pod FreeBSD dobra, navodila so v vlan(4) in tudi na: http://people.freebsd.org/%7Earved/vlan/vlan_en.html Nekoliko je treba biti le pozoren pri izboru vmesnika ethernet, saj nekateri ne podpirajo najbolje podaljšanih ethernet-paketov, ki so v snopu VLAN.
In nikar ne pozabimo za zaščito drugih računalnikov v omrežju, do katerih je sedaj možen tudi brezžični dostop. Uporabimo enega od požarnih zidov, ki so na razpolago pod FreeBSD, največ ponujata ipfw in PF. Navodila so v "FreeBSD Handbook" v poglavju Firewalls.