FreeBSD kézikönyv
Előző | Fejezet 31. Egyéb haladó hálózati témák | Következő

# 31.3. Vezeték nélküli hálózatok

Loader, Marc Fonvieille, és Murray Stokely.

## 31.3.1. A vezeték nélküli hálózatok alapjai

A legtöbb vezeték nélküli hálózat az IEEE® 802.11 szabványon nyugszik. Az alapvető vezeték nélküli hálózatokban több olyan állomást találhatunk, amelyek egymással rádiójelek szórásával kommunikálnak a 2,4 GHz vagy 5 GHz frekvenciatartományban (noha ez a helyi viszonyoknak megfelelően változhat, és a 2,3 GHz, illetve a 4,9 GHz tartományokban is lehetséges a kommunikáció).

A 802.11 szabványú hálózatok kétféleképpen szerveződnek. Először is infrastrukturálisan, (infrastructural mode) ahol az egyik állomást kinevezzük a központnak és a többi pedig ehhez fog tartozni. Az ilyen hálózatokat BSS-nek nevezzük és az imént említett központ neve hozzáférési pont (Access Point, AP) lesz. A BSS-ben az összes kommunikáció a hozzáférési pontokon keresztül halad még abban az esetben is, amikor az egyik állomás egy másik vezeték nélküli állomással akarja felvenni a kapcsolatot. Az ilyen jellegű hálózatok másik típusú szerveződési módjában nincsenek kijelölt központok és a kommunikáció az állomások között közvetlenül zajlik. A hálózat ezen formáját IBBS-nek nevezzük, vagy ismeretebb nevén ad-hoc hálózatnak (ad-hoc network).

A 802.11 alapú hálózatok elsőként a 2,4 GHz-es sávot hódították meg, és az IEEE 802.11 valamint 802.11b szabványokban rögzített protokollokat használták. Ezekben a specifikációkban megtalálhatjuk a működési frekvenciát, a közeghozzáférési réteg jellemzőinek leírását, beleértve a keretezést és az átviteli sebességeket (a kommunikáció ugyanis eltérő sebességekkel is történhet). A később kiadott 802.11a szabvány azt specifikálja, hogy az 5 GHz-es tartományban miként működjenek, ahol többek közt megtalálhatjuk a különféle jelkezelési mechanizmusokat és a nagyobb átviteli sebességek használatát. Ezt még a 802.11g szabvány követte, ami a 802.11b hálózatokkal kompatibilis módon lehetővé tette a 802.11a jelkezelésének és átviteli módszereinek használatát a 2,4 GHz-es sávban.

A 802.11 alapú hálózatok mindenféle átviteli technikáitól eltekintve többféle biztonsági megoldással találkozhatunk. Az korai 802.11 dokumentumok egy nagyon egyszerű biztonsági protokollt, a WEP-et említenek. Ez a protokoll a hálózaton mozgó adatokat egy rögzített és ismert osztott kulccsal kódolja le az RC4 titkosítással. A kommunikációhoz az összes állomásnak előre meg kell egyeznie ebben a kulcsban. Erről a sémáról időközben kiderült, hogy könnyen feltörhető és manapság már csak nagyon ritkán alkalmazzák, kivéve talán csak a kóbor felhasználók elijesztésére. A jelenleg érvényes biztonsági előírásokat az IEEE 802.11i specifikáció adja meg, amely új kriptográfiai titkosításokat definiál valamint egy további protokollt az állomások azonosítására és a kulcsok cseréjére. Emellett a titkosításhoz használt kulcsok időszakosan frissülnek és külön eszközök állnak rendelkezésre a betörési kísérletek észlelésére (és azok elhárítására). A vezeték nélküli hálózatok esetében másik elterjedt titkosítási protokoll a WPA. Ez igazából 802.11i elődjének tekinthető, amelyet egy ipari csoport definiált, amíg a 802.11i minősítés alatt állt. A WPA ennek megfelelően teljesíti a 802.11i szabvány elvárásainak egy részét és kifejezetten a régi hardverek számára készült. A WPA működéséhez egyedül a TKIP titkosításra van szükségünk, amely az eredeti WEP titkosításból származik. A 802.11i engedi a TKIP használatát, de az adatok kódolására egy erősebb titkosítás, az AES-CCM ismeretét is igényli. (Az AES a WPA esetében nem kell, mivel a régi eszközök esetében túlságosan költségesnek ítélték meg a használatát.)

A fenti szabványokon kívül a 802.11e a másik fontos szabvány, amire tekintettel kell lennünk. Ez írja le a 802.11 hálózatokon a multimédiás alkalmazások közvetítéséhez, mint például a videók valós idejű lejátszásához vagy a VoIP (voice over IP) megvalósításához tartozó protokollokat. A 802.11i szabványhoz hasonlóan a 802.11e is magában foglal egy előzetes specifikációt, amelyet WME (később pedig már WMM)-nek neveznek. Ezt szintén egy ipari csoport definiálta a 802.11e részeként, amivel a 802.11e végső elfogadásáig tudják a multimédiás igényeket kiszolgálni. Amit a 802.11e és WME/WMM megoldásaival kapcsolatban érdemes tudnunk: a QoS (Quality of Service) protokoll és más egyéb fejlett közeghozzáférési protokollok segítségével a vezeték nélküli hálózatokban lehetővé teszik a forgalom prioritás szerinti ütemezését. Ezen protokollok megfelelő implementációjának segítségével tehát a fontosabb adatok nagy sebességű küldését és áramoltatását vagyunk képesek elérni.

A FreeBSD a 6.0 verzió óta ismeri a 802.11a, 802.11b és 802.11g szabványokon alapján működő hálózatokat. A WPA és 802.11i biztonsági protokollok (a 11a, 11b és 11g szabványok bármelyike esetén) hasonlóképpen támogatottak, valamint a WME/WMM protokollok működéséhez szükséges QoS csak bizonyos vezeték nélküli eszközök esetében.

## 31.3.2. Kezdeti beállítások

### 31.3.2.1. A rendszermag beállítása

A vezeték nélküli hálózatok használatához egy vezeték nélküli hálózati kártyára lesz szükségünk, valamint a rendszermagban is be kell állítani ehhez a megfelelő támogatást. Ez utóbbit több különböző modulra szedték szét, és ezek közül csak azokat kell beállítani, amelyeket tényleg használni is fogunk.

Először is tehát kell egy vezeték nélküli eszköz. Az elterjedtebb típusaik általában az Atheos által gyártott alkatrészeket tartalmazzák. Az ilyen fajtájú eszközöket az ath(4) meghajtó kezeli, melyet úgy tudunk a rendszer indításakor betölteni, ha a `/boot/loader.conf` állományba felvesszük a következő sort:

    if_ath_load="YES"

Az Atheos meghajtója három különálló részre oszlik: maga a meghajtó (ath(4)), a hardveres réteg, ami a chipfüggő funkciókat kezeli (ath_hal(4)) és a keretek küldésével kapcsolatban az átviteli sebesség megválasztását lehetővé tevő algoritmus (ez itt most az ath_rate_sample). Amikor ezt a támogatást modulként töltjük be, ezek a függőségek automatikusan feloldódnak. Ha az Atheos eszközök helyett valamelyik másikhoz tartozó modult szeretnénk használni, akkor például az Intersil Prism esetében a wi(4) meghajtót kell megadnunk:

    if_wi_load="YES"

> Megjegyzés: A leírás további részeiben az ath(4) eszközt fogjuk használni, minden más esetben ennek a nevét kell csak lecserélünk a példákban. A rendszerben elérhető vezeték nélküli meghajtók és az általuk támogatott kártyák listája a FreeBSD Hardverjegyzetekben található. Ezek a jegyzetek a különböző architektúrákra és kiadásokhoz a FreeBSD holnapjáról, a Kiadási jegyzetek oldalról érhetőek el. Ha a vezeték nélküli eszközünkhöz nem létezik natív FreeBSD-s meghajtó, akkor az NDIS meghajtó segítségével akár közvetlenül a Windows®-os meghajtóját is használhatjuk.

FreeBSD 7.`X` esetén az eszközmeghajtó beállításával együtt a 802.11 hálózatok támogatását is be kell töltenünk a rendszermagba. Ez az ath(4) meghajtó esetében a legalább a wlan(4), `wlan_scan_ap` és `wlan_scan_sta` modulok betöltését jelenti. A wlan(4) modul a vezetéknélküli eszköz meghajtóprogramjával együtt töltődik be, míg a többi modult a `/boot/loader.conf` állomány használatával kell a rendszerindítás során betöltenünk:

    wlan_scan_ap_load="YES"
    wlan_scan_sta_load="YES"

A FreeBSD 8.0 kiadástól kezdődően ezek a modulok részei a wlan(4) meghajtónak, amely a hálózati kártya meghajtójával együtt mindig automatikusan betöltődik.

Emellett még azokra a modulokra is szükségünk van, amelyek a használni kívánt biztonsági protokollokhoz nyújtanak kriptográfiai támogatást. Ezek hivatalosan a wlan(4) modul kérésére automatikusan betöltődnek, azonban itt most manuálisan állítjuk be. Erre a célra a következő modulokat találjuk: wlan_wep(4), wlan_ccmp(4) és wlan_tkip(4). A wlan_ccmp(4) és wlan_tkip(4) meghajtók csak akkor fognak kelleni, ha a WPA és/vagy a 802.11i biztonsági protokollokat használjuk. Amennyiben a hálózatunkon nincs titkosítás, akkor még a wlan_wep(4) támogatás sem kell. Ezeket a modulok úgy lehet betölteni a rendszerindításnál, ha felvesszük a következő sorokat a `/boot/loader.conf` állományba:

    wlan_wep_load="YES"
    wlan_ccmp_load="YES"
    wlan_tkip_load="YES"

Miután ezt megcsináltuk, egyszerűen csak indítsuk újra a gépünket. Ha még nem akarjuk újraindítani a gépet, akkor a kldload(8) parancs segítségével akár kézzel is betölthetjük az előbb felsorolt modulokat.

> Megjegyzés: Ha nem akarunk modulokat használni, a működéshez szükséges meghajtókat a rendszermagba is be tudjuk építeni a következő sorok megadásával a rendszermag beállításait tartalmazó állományban:

>     device wlan                # a 802.11 támogatása
>     device wlan_wep            # 802.11 WEP  támogatás
>     device wlan_ccmp           # 802.11 CCMP támogatás
>     device wlan_tkip           # 802.11 TKIP támogatás
>     device wlan_amrr           # AMRR forgalomvezérlési algoritmus
>     device ath                 # Atheros IEEE 802.11 vezeték nélküli hálózati meghajtó
>     device ath_hal             # az Atheros meghajtó hardveres rétege
>     options AH_SUPPORT_AR5416  # az AR5416 tx/rx leírók engedélyezése
>     device ath_rate_sample     # SampleRate forgalomvezérlési algoritmus

> Hozzátesszük, hogy az alábbi sorok hozzáadása a FreeBSD 7.`X` változatában kötelező, más verzióknál viszont nem:

>     device wlan_scan_ap        # a 802.11 AP módú keresés
>     device wlan_scan_sta       # a 802.11 STA módú keresés

> Az előbbiek megadásával fordítsuk újra és telepítsük a rendszermagot, majd indítsuk újra a számítógépünket.

Miután a rendszerünk újra elindult, a rendszer indítás során generált üzenetei között találnunk kell valamennyi információt a felismert vezeték nélküli eszközökről. Például:

    ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1
    ath0: [ITHREAD]
    ath0: AR2413 mac 7.9 RF2413 phy 4.5

## 31.3.3. Az infrastrukturális működési mód

Általában az infrastrukturális avagy a BBS mód használata a gyakori. Ebben a működési módban adott számú vezeték nélküli hozzáférési pont csatlakozik a hagyományos hálózatra. Mindegyik vezeték nélküli hálózatnak saját neve van, amit a hálózat SSID-jének hívunk. A vezeték nélküli kliensek ezekhez a vezeték nélküli hozzáférési pontokhoz kapcsolódnak.

### 31.3.3.1. A FreeBSD-s kliensek használata

#### 31.3.3.1.1. Hogyan keressünk hozzáférési pontokat

A hálózatok kereséséhez az `ifconfig` paranccsal tudunk nekifogni. Egy ilyen kérés kiszolgálása eltarthat néhány pillanatig, mivel ekkor a rendszernek végig kell bóklásznia az összes elérhető frekvenciát és azokon hozzáférési pontok után kutatni. Egyedül a rendszeradminisztrátor kezdeményezheti ezeket a kereséseket:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 up scan
    SSID/MESH ID    BSSID              CHAN RATE  S:N     INT CAPS
    dlinkap         00:13:46:49:41:76   11   54M -90:96   100 EPS  WPA WME
    freebsdap       00:11:95:c3:0d:ac    1   54M -83:96   100 EPS  WPA

> Megjegyzés: Csak `up` jelzésű felületen tudunk hálózatokat keresni. További keresésekre már nincs szükség a felület `up` állapotban tartásához.

> Megjegyzés: FreeBSD 7.`X` esetén a `wlan`0`` eszköz helyett közvetlenül az adott eszköz nevét kell megadnunk, például ``ath0``. Az iménti sorokat ennek megfelelően tehát ebben az esetben így kell értelmezni:

>     # ifconfig ath0 up scan

> A leírás további részében a FreeBSD 7.`X` felhasználóknak ezen séma alapján kell használniuk a parancsokat és a konfigurációs beállításokat.

A keresés során keletkező listában láthatjuk megtalált BBS vagy IBBS fajtájú hálózatokat. A hálózatok neve és `SSID`-ja mellett még megjelenik egy `BSSID` oszlop is, ahol a hozzáférési pontok MAC-címe szerepel. A `CAPS` oszlop az egyes állomások tulajdonságait adja meg:

`E`

  Extended Service Set (ESS): az állomás egy infrastrukturális vagyis BBS hálózat része.

`I`

  IBSS/ad-hoc hálózat: az állomás egy ad-hoc hálózat része.

`P`

  Privacy: a BBS-en belül minden keretet titkosítani kell. Tehát a BSS arra kötelezi az állomást, hogy WEP, TKIP vagy AES-CCMP titkosítás használatával kódolja a hálózat tagjai között közlekedő kereteket.

`S`

  Short Preamble: a hálózatban rövid bevezetőjeleket használnak (a 802.11b High Rate/DSSS PHY előírásai szerint), ahol a szokványos 128 bites szinkronizációs mező hossza csak 56 bit.

`s`

  Short Slot Time: a 802.11g hálózat rövid slotidőt használ, mivel nem találhatóak benne régi (802.11b szabványú) állomások.

A jelenleg ismert hálózatok listáját így tudjuk lekérdezni:

    # ifconfig wlan0 list scan

Ezt az információt maga az adapter automatikusan, vagy a felhasználó tudja frissíteni a `scan` kérés kiadásával. Az elavult adatok maguktól törlődnek a gyorsítótárból, így idővel a lista zsugorodni fog, hacsak nem keresünk folyamatosan hálózatokat.

#### 31.3.3.1.2. Alapvető beállítások

Ebben a szakaszban arra mutatunk példákat, hogy miként tudunk FreeBSD alatt titkosítás nélkül használni egy vezeték nélküli hálózati kártyát. Miután elsajátítottuk az itt szereplő ismereteket, határozottan javasoljuk, hogy a vezeték nélküli hálózatunkat WPA használatával állítsuk be.

A vezeték nélküli hálózatok beállítása három elemi lépésből épül fel: a hozzáférési pont kiválasztása, az állomásunk hitelesítése és az IP-cím beállítása. A következőkben ezeket a lépéseket vitatjuk meg.

##### 31.3.3.1.2.1. A hozzáférési pont kiválasztása

A legtöbb esetben hagyjuk, hogy a rendszer válassza ki magának a különböző heurisztikák alapján a leginkább megfelelő hozzáférési pontot. Ez az alapértelmezett tevékenység, amikor aktiváljuk a felületet vagy valamilyen más módon, például az`/etc/rc.conf` állományból hivatkozunk rá:

    wlans_ath0="wlan0"
    ifconfig_wlan0="DHCP"

> Megjegyzés: A korábban említettek szerint a FreeBSD 7.`X` felhasználóknak csak a kártyát kell beállítani:

>     ifconfig_ath0="DHCP"

Ha viszont több hozzáférési pont közül mi magunk akarunk kiválasztani egyet, akkor ezt az SSID megadásával tehetjük meg:

    wlans_ath0="wlan0"
    ifconfig_wlan0="ssid saját_ssid DHCP"

Amikor olyan környezetben vagyunk, ahol több hozzáférési pontnak is megegyezik az SSID-ja (gyakran így próbálják egyszerűsíteni azt, hogy automatikusan váltani lehessen köztük), akkor szükségünk lehet ezt egy adott eszközhöz hozzárendelni. Ebben az esetben a hozzáférési pont BSSID-ját is definiálni kell (és az SSID-t akár el is hagyhatjuk):

    wlans_ath0="wlan0"
    ifconfig_wlan0="ssid saját_ssid bssid xx:xx:xx:xx:xx:xx DHCP"

Más módokon is képesek vagyunk szabályozni a hozzáférési pontok megválasztását, például a rendszerünk által vizsgált frekvenciasávok megadásával. Ez olyankor tud hasznos lenni, ha többsávos vezeték nélküli kártyánk van, és az összes tartomány végigpásztázása túlságosan sok időt venne el. Ezt a művelet a `mode` paraméter megadásával lehet egy konkrét sávra leszűkíteni, például a

    wlans_ath0="wlan0"
    ifconfig_wlan0="mode 11g ssid saját_ssid DHCP"

beállítás hatására a kártya 802.11g módban fog üzemelni, ami kizárólag csak 2,4 GHz-es frekvenciákon használható, így az 5 GHz-es csatornákat egyszerűen figyelmen kívül hagyjuk. Ugyanezt a `channel` paraméterrel is meg tudjuk oldani, mivel így a működést egy adott frekvenciára korlátozzuk, valamint a `chanlist` paraméterrel, ahol a pásztázandó csatornákat sorolhatjuk fel. Ezekről a paraméterekről részletesebb leírást az ifconfig(8) man oldalon találhatunk.

##### 31.3.3.1.2.2. Hitelesítés

Miután sikeresen kiválasztottuk a számunkra megfelelő hozzáférési pontot, az adatok küldéséhez az állomásunknak valamilyen módon hitelesítenie kell magát. A hitelesítés több módon történhet. Erre a leggyakrabban alkalmazott sémát nyílt hitelesítésnek (open authentication) nevezik, ahol a hálózathoz tetszőleges állomás csatlakozhat és kommunikálhat vele. Ezt a típusú hitelesítést akkor érdemes használni, amikor a vezeték nélküli hálózatunkat teszteljük. Más sémákban az adatfolyam megindításához egy titkosítási kézfogás szükséges, vagy előre megosztott kulcsok esetleg jelszavak segítségével, vagy bonyolultabb sémák esetében itt még olyan különböző háttérszolgáltatások is megjelennek, mint például a RADIUS. A legtöbb felhasználó a nyílt hitelesítést használja, ami egyben az alapértelmezés is. A másik legelterjedtebb beállítás a WPA-PSK, avagy WPA Personal, amelyről lentebb még szólni fogunk.

> Megjegyzés: Ha Apple® AirPort® Extreme Base Station típusú hozzáférési pontunk van, akkor az osztott kulcsú hitelesítés mellett egy WEP kulcsot is be állítanunk. Ezt az `/etc/rc.conf` állományban vagy a wpa_supplicant(8) programban tehetjük meg. Ha egyetlen AirPort bázisállomásunk van, akkor az elérést valahogy így tudjuk beállítani:

>     wlans_ath0="wlan0"
>     ifconfig_wlan0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP"

> Általánosságban véve elmondhatjuk, hogy az osztott kulcsú hitelesítést inkább kerüljük el, mivel WEP kulcsok használatára alapszik és ráadásul olyan módon, hogy nagyon könnyű feltörni. Ha már mindenképpen a WEP mellett kell döntenünk (például a régebbi eszközökkel így tudunk csak kompatibilisek maradni), akkor jobban járunk, ha a `nyílt` hitelesítéshez alkalmazzuk. A WEP használatát érintő további információkat a 31.3.3.1.4 Szakaszban találjuk.

##### 31.3.3.1.2.3. IP-cím szerzése DHCP használatával

Miután kiválasztottunk egy hozzáférési pontot és beállítottuk a hitelesítés paramétereit, egy IP-cím is kelleni fog a kommunikációhoz. Az esetek túlnyomó részében DHCP-n keresztül kapunk IP-címet a vezeték nélküli kapcsolatunkhoz. Ezt úgy érhetjük el, ha egyszerűen megnyitjuk az `/etc/rc.conf` állományt és az alábbihoz hasonló módon felvesszük a `DHCP` paramétert az eszközünk beállításaihoz:

    wlans_ath0="DHCP"
    ifconfig_wlan0="DHCP"

Így már készen is állunk a vezeték nélküli felület használatára:

    # /etc/rc.d/netif start

Ahogy a felület működőképessé válik, az `ifconfig` parancs segítségével ellenőrizni is tudjuk az `ath0` felület állapotát:

    # ifconfig wlan0
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            ether 00:11:95:d5:43:62
            inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
            media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
            status: associated
            ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76
            country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
            scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
            roam:rate 5 protmode CTS wme burst

A `status: associated` azt jelenti, hogy sikeresen csatlakoztunk egy vezeték nélküli hálózathoz (jelen esetben ez a `dlinkap`). A `bssid 00:13:46:49:41:76` rész a hozzáférési pont MAC-címét tartalmazza. Az `authmode OPEN` pedig arról számol be, hogy a kommunikáció nem titkosított.

##### 31.3.3.1.2.4. Statikus IP-cím

Ha valami okból nem tudjuk az IP-címünket DHCP szerveren keresztül lekérni, beállíthatunk rögzített IP-címet is. Ehhez nem kell mást tennünk, mint a korábban bemutatott `DHCP` kulcsszót kicserélni egy konkrét címmel. A hozzáférési ponthoz megadott többi paramétert azonban feltétlenül hagyjuk meg:

    wlans_ath0="wlan0"
    ifconfig_wlan0="inet 192.168.1.100 netmask 255.255.255.0ssid saját_ssidi"

#### 31.3.3.1.3. WPA

A WPA (Wi-Fi Protected Access, vagyis védett wi-fi hozzáférés) a 802.11 szabványokban használatos biztonsági protokoll, amelyet a WEP gyengeségeinek és megfelelő hitelesítésének ellensúlyozására dolgoztak ki. A WPA a 802.1X hitelesítési protokolljait erősíti és az adat sértetlenségének megőrzésére a WEP helyett több titkosítási algoritmust is felhasznál. A WPA által igényelt egyetlen titkosítás a TKIP (Temporary Key Integrity Protocol, vagyis az ideiglenes kulcs integritási protokoll), amely a WEP által az integritás ellenőrzésére és a bejutások észlelésére és azok reagálására szánt alap RC4 titkosítást bővíti ki. A TKIP a régebbi hardvereken csupán szoftveres módosítással működőképessé tehető. Ez a kompromisszum a védelmet ugyan növeli, de még mindig kevés a támadások megfelelő elhárításához. A WPA a TKIP mellett tartalmazza még az AES-CCMP titkosítást is, és ennek a használata javasolt. Ezt a specifikációt gyakran WPA2 (vagy RSN) néven emlegetik.

A WPA definiál hitelesítési és titkosítási protokollokat. A hitelesítés általában a következő két technika egyike alapján történik: vagy 802.1X és egy háttérszolgáltatás, például a RADIUS segítségével, vagy egy előre megosztott kulcsot alkalmazó minimális kézfogással az állomás és a hozzáférési pont között. Az előbbit gyakran WPA Enterprise-nak, míg az utóbbit WPA Personalnak hívják. Mivel a legtöbben nem állítanak be egy komplett RADIUS alapú szervert a vezeték nélküli hálózatukhoz, ezért a WPA-PSK a WPA leginkább elterjedten használt változata.

A vezeték nélküli kapcsolat és a hitelesítés (kulcs alapján vagy szerverrel) vezérlését a wpa_supplicant(8) segédprogram végzi. Ennek a programnak működéséhez egy konfigurációs állományra van szüksége, amely az `/etc/wpa_supplicant.conf` néven érhető el. Erről az állományról bővebb információt a wpa_supplicant.conf(5) man oldalán lelhetünk.

##### 31.3.3.1.3.1. WPA-PSK

A WPA-PSK, más néven WPA-Personal, egy adott jelszó alapján generált előre megosztott kulcssal (pre-shared key, PSK) működik, amit a vezeték nélküli hálózatokban mesterkulcsént használnak. Ez azt jelenti, hogy minden egyes vezeték nélküli felhasználó ugyanazon a kulcson osztozik. A WPA-PSK olyan kis méretű hálózatok esetében megfelelő, ahol a hitelesítést elvégző szerver használata nem lehetséges vagy nem oldható meg.

> Figyelem: Mindig igyekezzünk erős jelszavakat használni, melyek kellően hosszúak és sokféle karaktert tartalmaznak, és így nehezebben fejthetőek meg vagy törhetőek fel.

Először az `/etc/wpa_supplicant.conf` állományban állítsuk be az SSID-t és a hálózatunkhoz tartozó előre megosztott kulcsot:

    network={
      ssid="freebsdap"
      psk="freebsdmall"
    }

Ezután az `/etc/rc.conf` állományban jelezzük, hogy a vezeték nélküli eszközt a WPA segítségével állítjuk be és az IP-címet a DHCP szervertől kérjük el:

    wlans_ath0="wlan0"
    ifconfig_ath0="WPA DHCP"

Innentől már fel is tudjuk éleszteni a felületet:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
    DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
    DHCPOFFER from 192.168.0.1
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.1
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet autoselect OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Kézzel is megpróbálhatjuk elindítani az előbb elkészített `/etc/wpa_supplicant.conf` állomány használatával:

    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)
    Associated with 00:11:95:c3:0d:ac
    WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP]
    CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id_str=]

A következő parancs a `dhclient` indítása legyen, amivel megszerezzük a DHCP szervertől az IP-címünket:

    # dhclient wlan0
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.1
    bound to 192.168.0.254 -- renewal in 300 seconds.
    # ifconfig wlan0
    ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

> Megjegyzés: Ha az `/etc/rc.conf` állományban szerepel a `ifconfig_wlan0="DHCP"` sor, akkor egyáltalán nem szükséges a `dhclient` parancs manuális kiadása, mivel a `dhclient` magától el fog indulni, miután a `wpa_supplicant` egyeztette a kulcsokat.

Amikor a DHCP nem használható, megadhatunk a statikus IP-címet is, miután a `wpa_supplicant` sikeresen lebonyolította a hitelesítést:

    # ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0
    # ifconfig wlan0
    ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Ha egyáltalán nem használunk DHCP szervert, akkor nekünk kell beállítani az alapértelmezett átjárót és a névszervert is:

    # route add default alapértelmezett_átjáró
    # echo "nameserver névszerver" >> /etc/resolv.conf

##### 31.3.3.1.3.2. WPA és EAP-TLS

A másik mód, ahogy a WPA használható, az a 802.1X hitelesítési szerveren keresztül történik, és ebben az esetben a WPA neve WPA-Enterprise. Ez sokkal biztonságosabb a WPA-Personal előre kiosztott kulcsaival szemben. A WPA-Enterprise az EAP (Extensible Authentication Protocol, azaz Bővíthető hitelesítési protokoll) használatán alapszik.

Az EAP önmaga nem végez titkosítást, mivel úgy alakították ki, hogy magát az EAP protokollt kell egy titkosított járaton keresztül bújtatni. Az EAP hitelesítési módszereinek több típusát is kidolgozták, melyek közül a legismertebbek az EAP-TLS, EAP-TTLS valamint a EAP-PEAP.

Az EAP-TLS (EAP szállítási rétegbeli védelemmel) a vezeték nélküli világban egy nagyon jól támogatott hitelesítési protokoll, mivel ez volt az első EAP módszer, amit a Wi-fi szövetség jóváhagyott. Az EAP-TLS működéséhez három tanúsítvány kell: egy hitelesítő hatóságtól (Certificate Authority, CA), egy a hitelesítést végző szervertől és egy a klienstől. Ezzel az EAP módszerrel mind a hitelesítő szerver, mind a vezeték nélküli kliens külön képviselik a saját tanúsítványaikat, és ezeket a szervezetünket hitelesítő hatóság aláírása alapján ellenőrzik.

A korábbiaknak megfelelően a beállításokat szintén az `/etc/wpa_supplicant.conf` állományon keresztül végezzük el:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=TLS
      identity="loader"
      ca_cert="/etc/certs/cacert.pem"
      client_cert="/etc/certs/clientcert.pem"
      private_key="/etc/certs/clientkey.pem"
      private_key_passwd="freebsdmallclient"
    }

  Ez a mező adja meg a hálózat nevét (SSID).
  Itt az RSN (IEEE 802.11i), vagyis a WPA2 protokollt használjuk.
  A `key_mgmt` sor a kulcskezelési protokollt adja meg. A mi esetünkben ez a WPA lesz, EAP hitelesítéssel: `WPA-EAP`.
  Ebben a mezőben az EAP módszert nevezzük meg a kapcsolathoz.
  Az `identity` mező az EAP esetén használt azonosítót tartalmazza.
  A `ca_cert` mező a hitelesítő hatóság tanúsítványát tároló állomány elérési útvonalát adja meg. Ezt a szerver tanúsítványának hitelesítéséhez használjuk.
  A `client_cert` sor a kliens tanúsítványát tartalmazó állomány elérési útvonalát adja meg. Ennek a vezeték nélküli hálózat minden egyes kliense esetében egyedinek kell lennie.
  A `private_key` mező a kliens tanúsítvánáynak privát kulcsát tároló állomány elérési útját adja meg.
  A `private_key_passwd` mező a privát kulcshoz tartozó jelmondatot rögzíti.

Az `/etc/rc.conf` állományba vegyük fel a következő sorokat:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

A következő lépés a felület felébresztése lesz az `rc.d` eszköz segítségével:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

Természetesen, ahogy azt már az előbbiekben is megmutattuk, mindezt manuálisan is el tudjuk végezni a `wpa_supplicant` és az `ifconfig` parancsok segítségével.

##### 31.3.3.1.3.3. WPA és EAP-TTLS

Az EAP-TLS használatakor mind a hitelesítést végző szervernek és kliensnek is kell tanúsítvány, azonban az EAP-TTLS ( szállítási rétegbeli védelem EAP tunnelen keresztül) esetében a kliensnél ez elhagyható. Ez a módszer nagyjából olyan, mint amit a webes oldalak csinálnak, ahol a webszerverek egy védett SSL tunnelt képeznek még akkor is, amikor a látogatók nem rendelkeznek kliens oldali tanúsítvánnyal. Az EAP-TTLS egy titkosított TLS tunnelen keresztül védi le a hitelesítési adatok forgalmát.

Ezt ismét az `/etc/wpa_supplicant.conf` állományon keresztül tudjuk beállítani:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=TTLS
      identity="test"
      password="test"
      ca_cert="/etc/certs/cacert.pem"
      phase2="auth=MD5"
    }

  Ebben a mezőben az EAP módszert állítjuk be a kapcsolathoz.
  Az `identity` mező a titkosított TLS tunnelen keresztül az EAP hitelesítésnél felhasznált azonosítót adja meg.
  A `password` tartalmazza az EAP hitelesítésnél használt jelmondatot.
  A `ca_cert` mező hivatkozik a hitelesítő hatóság tanúsítványát tartalmazó állományra. Ez az állomány kell a szerver tanúsítványának ellenőrzéséhez.
  Ebben a mezőben a titkosított TLS tunnelben használt hitelesítési módszer nevezzük meg. Jelen esetünkben ez az EAP MD5-Challenge használatával. A “belső hitelesítés” fázisát gyakran csak “phase2”-nak (2. fázisnak) hívják.

Mindezek mellett még a következő sorokat is vegyük fel az `/etc/rc.conf` állományba:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

Ezután hozzuk működésbe a felületet:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

##### 31.3.3.1.3.4. WPA és EAP-PEAP

A PEAP (Védett EAP) az EAP-TTLS egyik alternatívájaként jött létre. A PEAP módszernek két változata van, melyek közül a leggyakoribb a PEAPv0/EAP-MSCHAPv2. A leírás további részében a PEAP elnevezéssel erre az EAP módszerre fogunk hivatkozni. A PEAP az EAP-TLS után a leginkább alkalmazott szabvány, más szóval, ha a hálózatunkban többféle operációs rendszer is megtalálható, akkor az EAP-TLS után valószínűleg a PEAP lesz a másik, amit mindegyik ismerni fog.

A PEAP hasonló az EAP-TTLS-hez: szerver oldali tanúsítványokkal hitelesíti a klienseket és titkosított TLS tunnelt hoz létre a kliens és a hitelesítést végző szerver között, amivel segíti megóvni a hitelesítési információkat. Biztonság szempontjából az EAP-TTLS és a PEAP között az a különbség, hogy a PEAP hitelesítés a felhasználói nevet titkosítatlanul küldi és csak a jelszó megy át a titkosított TLS tunnelen. Az EAP-TTLS egyaránt a TLS tunnelt használja mind a felhasználói név, mind a jelszó esetében.

Az EAP-PEAP beállításait az `/etc/wpa_supplicant.conf` állományba kell felvenni:

    network={
      ssid="freebsdap"
      proto=RSN
      key_mgmt=WPA-EAP
      eap=PEAP
      identity="test"
      password="test"
      ca_cert="/etc/certs/cacert.pem"
      phase1="peaplabel=0"
      phase2="auth=MSCHAPV2"
    }

  Ebben a mezőben megadjuk, az EAP módszert használjuk a kapcsolathoz.
  Az `identity` mező az EAP hitelesítés során a titkosított TLS tunnelben átküldött azonosítót tartalmazza.
  A `password` mező az EAP hitelesítés során használt jelmondatot definiálja.
  A `ca_cert` mező a hitelesítő hatóság tanúsítványát tartalmazó állomány elérési útját adja meg. Ez az állomány kell a szerver tanúsítványának ellenőrzéséhez.
  Ez a mező a hitelesítés első fázisának (vagyis a TLS tunnel) paramétereit tartalmazza. A hitelesítést végző szervertől függően a hitelesítéshez meg kell adnunk bizonyos címkéket. A legtöbb esetben a címke a “kliens oldali EAP titkosítás” lesz, amit a `peaplabel=0` használatával állítunk be. A részleteket a wpa_supplicant.conf(5) man oldalon olvashatjuk.
  Ebben a mezőben a titkosított TLS tunnelben alkalmazott hitelesítést protokollt nevezzük meg. A PEAP esetében ez az `auth=MSCHAPV2` lesz.

A következőket kell még hozzátennünk az `/etc/rc.conf` állományhoz:

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA DHCP"

Ezután már működésbe is hozhatjuk a felületet:

    # /etc/rc.d/netif start
    Starting wpa_supplicant.
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPREQUEST on wlan0 to 255.255.255.255 port 67
    DHCPACK from 192.168.0.20
    bound to 192.168.0.254 -- renewal in 300 seconds.
    wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          ether 00:11:95:d5:43:62
          inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
          media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
          status: associated
          ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
          country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
          AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
          bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
          wme burst roaming MANUAL

#### 31.3.3.1.4. WEP

A WEP (Wired Equivalent Privacy, azaz kábellel egyenértékű titkosság) az eredeti 802.11 szabvány része. Nincs külön hitelesítési mechanizmusa, csupán a hozzáférés-vezérlés egy gyenge formájával találkozhatunk benne, amit azonban könnyen fel lehet törni.

A WEP `ifconfig` parancs használatán keresztül állítható be:

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \
    	  ssid saját_hálózat wepmode on weptxkey 3 wepkey 3:0x3456789012

- A `weptxkey` utal arra, hogy a küldés során WEP kulcsot használunk. Itt most egy harmadik kulcsot használtunk, amelynek egyeznie kell a hozzáférési pont beállításaival. Ha nem tudjuk pontosan, hogy milyen kulcsot használ a hozzáférési pont, akkor próbálkozzunk az `1` érték (vagyis az első kulcs) megadásával.

- A `wepkey` után következik a kiválasztott WEP kulcs. `index:kulcs` alakban kell megadni, és ha itt nem adunk meg indexet, akkor azzal az `1` indexű kulcsot állítjuk be. Úgyis fogalmazhatnánk, hogy az indexet csak olyankor kell megadni, amikor nem az első kulcsot akarjuk használni.

  > Megjegyzés: A `0x3456789012` értéket a hozzáférési pontnál beállított kulcsra kell beállítani.

Ha érdekelnek minket a további részletek, akkor bátran lapozzuk fel az ifconfig(8) parancs man oldalát.

A `wpa_supplicant` segédprogramot is bevonhatjuk a vezeték nélküli felületek WEP alapú használatába. A fenti példát a következő módon tudjuk leírni az `/etc/wpa_supplicant.conf` állományban:

    network={
      ssid="sajat_halozat"
      key_mgmt=NONE
      wep_key3=3456789012
      wep_tx_keyidx=3
    }

Majd:

    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)
    Associated with 00:13:46:49:41:76

## 31.3.4. Az ad-hoc működési mód

Az IBSS vagy más néven ad-hoc módot pont-pont típusú kapcsolatok kialakítására tervezték. Például, ha az `A` és a `B` gépek között egy ad-hoc típusú hálózatot akarunk létesíteni, akkor egyszerűen csak ki kell választanunk két IP-címet és egy SSID-t.

Így állítjuk be az `A` gépet:

    # ifconfig wlan0 create wlandev ath0 wlanmode adhoc
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    	  ether 00:11:95:c3:0d:ac
    	  inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
    	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
    	  status: running
    	  ssid freebsdap channel 2 (2417 MHz) bssid 02:11:95:c3:0d:ac
    	  country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
    	  protmode CTS wme burst

Az `adhoc` paraméterrel utalunk arra, hogy a felület most IBSS módban működik.

A `B` gépen ezután már képesek vagyunk észlelni az `A` gépet:

    # ifconfig wlan0 create wlandev ath0 wlanmode adhoc
      SSID/MESH ID    BSSID              CHAN RATE  S:N     INT CAPS
      freebsdap       02:11:95:c3:0d:ac    2   54M -64:-96  100 IS   WME

A kimenetben szereplő `I` is megerősíti, hogy az `A` gépet ad-hoc módban érjük el. Így már csak a `B` gépet kell beállítanunk egy másik IP-címmel:

    # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    	  ether 00:11:95:d5:43:62
    	  inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
    	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
    	  status: running
    	  ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac
    	  country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
    	  protmode CTS wme burst

Most már mind az `A` és mind a `B` készen áll az adatok cseréjére.

## 31.3.5. FreeBSD alapú hozzáférési pontok

A FreeBSD képes hozzáférési pontként (Access Point, AP) is üzemelni, így nem kell külön hardveres hozzáférési pontot vásárolnunk vagy ad-hoc hálózatot használnunk. Ez különösen akkor hasznos, amikor a FreeBSD gépet egy másik hálózat (például az internet) felé állítottuk be átjárónak.

### 31.3.5.1. Alapvető beállítások

Mielőtt nekiállnánk a FreeBSD-s gépünket hozzáférési pontnak beállítani, egy olyan rendszermagra lesz szükségünk, amely tartalmazza a megfelelő vezeték nélküli támogatást a kártyánkhoz. Emellett az alkalmazni kívánt biztonsági protokollok támogatását is bele kell építenünk. Ennek részleteit lásd a 31.3.2 Szakaszban.

> Megjegyzés: Jelenleg az NDIS meghajtón keresztül használt Windows-os meghajtók nem teszik lehetővé hozzáférési pontok kialakítását. Egyedül a vezeték nélküli eszközök natív FreeBSD-s meghajtói ismerik a hozzáférési pont módot.

Ahogy betöltöttük a vezeték nélküli hálózatok támogatását, egyből ellenőrizni is tudjuk, hogy a vezeték nélküli eszközünk használható-e hozzáférési pontként (avagy “hostap” módban):

    # ifconfig wlan0 create wlandev ath0
    # ifconfig wlan0 list caps
    drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRA>
    crytocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC>

A fenti kimenetben láthatjuk a kártyánk tulajdonságait. A `HOSTAP` szó arról tanúskodik, hogy a vezeték nélküli kártyánk képes hozzáférési pontként viselkedni. Mellette még a különféle támogatott titkosítási módszerek is láthatóak: WEP, TKIP, AES stb. Ezekből az információkból tudjuk kideríteni, hogy a hozzáférési pontunkon milyen titkosítási protokollokat tudunk használni.

A vezeték nélküli eszközünket innentől már csak hozzáférési pontnak állíthatjuk át a viruális hálózati eszköz létrehozásakor, ezért a korábban létrehozott eszközt ehhez először meg kell semmisítenünk:

    # ifconfig wlan0 destroy

Ezzel létrejön a megfelelő beállításokkal, majd ezekhez állítjuk még be a többit:

    # ifconfig wlan0 create wlandev ath0 wlanmode hostap
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1

Az `ifconfig` parancs ismételt használatával le is tudjuk kérdezni az `wlan0` felület állapotát:

    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    	  inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
    	  inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
    	  ether 00:11:95:c3:0d:ac
    	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
    	  status: running
    	  ssid freebsdap channel 1 (2412 Mhz) bssid 00:11:95:c3:0d:ac
    	  country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
    	  protmode CTS wme burst dtimperiod 1 -dfs

A `hostap` paraméterből kiderül, hogy a felület hozzáférési pont módban van.

Ha az `/etc/rc.conf` állományban megadjuk a következő sorokat, akkor a felület beállítása a rendszer indításakor magától megtörténik:

    wlans_ath0="wlan0"
    create_args_wlan0="wlanmode hostap"
    ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1"

### 31.3.5.2. Hitelesítés vagy titkosítás nélküli hozzáférési pontok

Habár a hozzáférési pontok működtetése nem javasolt hitelesítés vagy titkosítás nélkül, ebben a módban könnyen meg tudunk győződni a hozzáférési pontunk használhatóságáról. Ez a típusú konfiguráció ezenkívül még fontos szerepet játszik a klienseken felbukkanó hibák kiszűrésében is.

Miután sikerült az előbbiekben bemutatottak alapján beállítani a hozzáférési pontunkat, egy másik vezeték nélküli gépről rögtön meg is kezdhetjük a keresését:

    # ifconfig ath0 up scan
    SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
    freebsdap       00:11:95:c3:0d:ac    1   54M -66:-96  100 ES   WME

Láthatjuk, hogy a kliens megtalálta a hozzáférési pontot és tudunk is rá kapcsolódni:

    # ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap
    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    	  inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
    	  media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
    	  status: associated
    	  ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
    	  country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
    	  scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
    	  roam:rate 5 protmode CTS wme burst

### 31.3.5.3. WPA titkosítást használó hozzáférési pontok

Ebben a szakaszban a FreeBSD-s hozzáférési pontunkat WPA titkosítással állítjuk be. A WPA és a WPA alapú kliensek beállításának részleteit a 31.3.3.1.3 Szakaszban találjuk.

A WPA titkosítást használó hozzáférési pontokon a hostapd démon foglalkozik a kliensek hitelesítésével és a kulcsok kezelésével.

A továbbiakban az összes beállítást egy olyan FreeBSD-s gépen végezzük el, amely hozzáférési pontként működik. Ahogy sikerült beállítanunk a hozzáférési pont módot, az `/etc/rc.conf` állományban a következő sor segítségével könnyen meg tudjuk oldani, hogy az hostapd démon a rendszerrel együtt magától elinduljon:

    hostapd_enable="YES"

Mielőtt megpróbálnánk beállítani a hostapd démont, ne felejtsük el elvégezni a 31.3.5.1 Szakaszban említett alapvető beállításokat sem.

#### 31.3.5.3.1. WPA-PSK

A WPA-PSK használatát olyan kis méretű hálózatok számára szánják, ahol egy külön hitelesítő szervert alkalmazása nem lehetséges vagy nem kívánatos.

A konfiguráció az `/etc/hostapd.conf` állományon keresztül történik:

    interface=wlan0
    debug=1
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=wheel
    ssid=freebsdap
    wpa=1
    wpa_passphrase=freebsdmall
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP TKIP

  Ebben a mezőben jelöljük ki a hozzáférési pontként használt vezeték nélküli felületet.
  Ebben a mezőben adjuk meg a hostapd futtatása során keletkező üzenetek részletességét. A példában szereplő `1` érték ennek a legkisebb szintjét jelöli.
  A `ctrl_interface` mező megadja a hostapd által használt könyvtár elérési útvonalát, amiben azokat a tartományokhoz tartozó socketeket tároljuk, amelyeken keresztül olyan programokkal tudunk kommunikálni, mint például a hostapd_cli(8). Itt az alapértelmezett értéket írtuk be.
  A `ctrl_interface_group` sor beállítja azt a csoportot (ez jelen esetben a `wheel`), amin keresztül a vezérlőfelület (control interface) állományaihoz hozzá tudunk férni.
  Ebben a mezőben a hálózat nevét állítjuk be.
  A `wpa` mezővel engedélyezzük a WPA használatát és megadjuk, hogy melyik WPA hitelesítési protokollt alkalmazzuk. Az itt szereplő `1` érték a WPA-PSK hitelesítés állítja be a hozzáférési pont számára.
  A `wpa_passphrase` mező a WPA hitelesítéshez szükséges ASCII jelmondatot tartalmazza.

> Figyelem: Lehetőleg mindig erős jelszavakat használjunk, amelyek kellően hosszúak és sokféle karaktert tartalmaznak, így nehezebben fejthetőek meg vagy törhetőek fel.

  A `wpa_key_mgmt` sor a kulcsok kezelésére használt protokollt definiálja. Ez a mi esetünk most a WPA-PSK.
  A `wpa_pairwise` mező a hozzáférési pont által elfogadott titkosítási algoritmusokat határozza meg. A példában a TKIP (WPA) és CCMP (WPA2) titkosítást is támogatjuk. A CCMP titkosítás a TKIP egyik alternatívája, és lehetőség szerint használjuk ezt. A TKIP csak olyan állomások esetében javasolt, amelyek nem támogatják a CCMP használatát.

A következő lépés a hostapd elindítása:

    # /etc/rc.d/hostapd forcestart

    # ifconfig wlan0
      wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290
    	  inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
    	  inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
    	  ether 00:11:95:c3:0d:ac
    	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
    	  status: associated
    	  ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
    	  authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100

A hozzáférési pont mostantól működik, innentől a kliensek már képesek csatlakozni hozzá, bővebben lásd a 31.3.3.1.3 Szakaszban. A hozzáférési ponthoz tartozó állomásokat az `ifconfig `wlan0` list sta` paranccsal tudjuk listázni.

### 31.3.5.4. WEP titkosítást használó hozzáférési pontok

A WEP titkosítást nem javasoljuk a hozzáférési pontok esetében, mivel nem tartalmaz semmilyen hitelesítési mechanizmust és könnyen feltörhető. Egyes régebbi vezeték nélküli kártyák azonban csak a WEP által nyújtott védelmet ismerik, ezért az ilyenek csak olyan hozzáférési pontokhoz tudnak csatlakozni, amelyek vagy nem használnank hitelesítést és titkosítást, vagy erre a WEP protokollt használják.

A vezeték nélküli eszközt tegyük hozzáférési pont módba és állítsuk be neki a megfelelő SSID-t és IP-címet:

    # ifconfig wlan0 create wlandev ath0 wlanmode hostap
    # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \
    	ssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g

- A `weptxkey` beállítás után adjuk meg a küldéshez használt WEP kulcsot. Itt a harmadik kulcsot adtuk meg (vegyük észre, hogy a kulcsok számozása az `1` értékkel kezdődik). Ez a paramétert az adatok tényleges titkosításához kell megadni.

- A `wepkey` a kiválasztott WEP kulcs beállítását jelöli, aminek a formátuma `index:kulcs`. Ha itt nem adunk meg indexet, akkor automatikusan az első kulcsot állítjuk be. Ezért talán mondanunk sem kell, hogy az indexet csak akkor kell megadni, ha nem az első kulcsot akarjuk használni.

A `wlan0` felület állapotának megtekintéséhez adjuk ki megint az `ifconfig` parancsot:

    # ifconfig wlan0
      ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    	  inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
    	  ether 00:11:95:c3:0d:ac
    	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
    	  status: running
    	  ssid freebsdap channel 4 (2427 Mhz) bssid 00:11:95:c3:0d:ac
    	  country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit
    	  txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs

Egy másik vezeték nélküli gépről most már megpróbálhatjuk megkeresni a hozzáférési pontot:

    # ifconfig wlan0 create wlandev ath0
    SSID            BSSID              CHAN RATE  S:N   INT CAPS
    freebsdap       00:11:95:c3:0d:ac    1   54M 22:1   100 EPS

Láthatjuk, hogy a kliens megtalálta a hozzáférési pontot, és a megfelelő paraméterekkel (kulcs stb.) képes kapcsolódni hozzá a 31.3.3.1.4 Szakaszban leírtak szerint.

## 31.3.6. A vezetékes és vezeték nélküli hálózatok együttes használata

A vezetékes hálózatok általában jobb teljesítményt nyújtanak és megbízhatóbbak, miközben a vezeték nélküli hálózatok pedig nagyobb rugalmasságot és mozgásteret szolgáltatnak. Ezért a hordozható számítógépek tulajdonosaiban felmerülhet az igény, hogy egyszerre mind a kettőt használva, tetszőlegesen és problémamentesen válthassanak a hálózatok között.

FreeBSD rendszereken ún. “hibatűrő” módon két vagy akár több hálózati interfészt össze tudunk vonni. Ennek köszönhetően az aktív hálózati kapcsolat megszünésekor rendszerünk önállóan igyekszik mindig a fennmaradó elérhető hálózatok közül a leginkább preferáltabbra váltani.

A hálózati összeköttetések összefűzésével és a hibatűrés konkrét megvalósításával az 31.6 Szakaszban foglalkozunk, ahol a 31-3 Példaban láthatjuk is a vezetékes és vezeték nélküli kapcsolatok együttes használatának beállítását.

## 31.3.7. Hibaelhárítás

Ha valamilyen gondunk lenne a vezeték nélküli hálózatok használatával, akad néhány lépés, amivel esetleg fel tudjuk deríteni a hiba okát.

- Ha nem látjuk a hozzáférési pontot a pásztázás után, ellenőrizzük, hogy a vezeték nélküli eszközt véletlenül nem korlátoztuk-e le bizonyos csatornákra.

- Ha nem tudunk csatlakozni a hozzáférési ponthoz, akkor egyeztessük vele az állomás egyes paramétereit, beleértve a hitelesítési sémát és a biztonsági protokollokat. Minél jobban egyszerűsítsük le a konfigurációkat. Ha WPA vagy WEP titkosítást használunk, akkor a hozzáférési ponton állítsunk be nyílt hitelesítést és kapcsoljuk ki a titkosítást, majd nézzük meg, hogy így eljut-e hozzánk valamilyen forgalom.

- Ahogy sikerült csatlakozunk a hozzáférési ponthoz, a biztonsági beállításokat olyan egyszerű eszközökkel próbáljuk meg diagnosztizálni, mint például a ping(8).

  A `wpa_supplicant` segédprogrammal tudunk nyomkövetést végezni. A `-dd` opció megadásával indítsuk el manuálisan és ellenőrizzük a rendszernaplókat.

- Vannak alacsonyabb szintű nyomkövetési lehetőségek is. A 802.11 protokollt támogató rétegben is tudunk engedélyezni nyomkövetési üzeneteket a `/usr/src/tools/tools/net80211` könyvtárban található `wlandebug` program segítségével. Például a

      # wlandebug -i ath0 +scan+auth+debug+assoc
        net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>

  paranccsal a hozzáférési pontok kereséséhez és a 802.11 protokollon belül a kapcsolat megszervezéséhez szükséges kézfogásokhoz kapcsolódó konzolüzeneteket tudjuk engedélyezni.

  A 802.11 rétegben rengeteg hasznos statisztikát találhatunk. Mindezeket a `wlanstats` eszközzel tudjuk kiíratni. Ezeknek a statisztikáknak a 802.11 réteg összes hibáját be kell tudniuk azonosítaniuk. Vigyázzunk azonban, mert az eszközmeghajtókban a 802.11 réteg alatt rejlő bizonyos hibák ilyenkor nem jelennek meg. Az eszközfüggő problémák felderítésével kapcsolatban a megfelelő meghajtó dokumentációját olvassuk át.

Amennyiben a fenti tanácsok mentén sem sikerül orvosolnunk a hibát okát, küldjünk egy hibajelentést és mellékeljük hozzá a fentebb tárgyalt eszközök által gyártott kimeneteket.

Előző | Tartalom | Következő
Átjárók és az útválasztás | Fel | Bluetooth

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.