Page name: Postavitev WLAN vstopne točke za Eduroam pod FreeBSD

Postavitev WLAN vstopne točke za Eduroam pod FreeBSD

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.