Traient-li el suc a madwifi-ng

En Brainstorm va parlar fa poc dels VAPs que es poden crear amb madwifi-ng, per no repetir el seu artícle intentaré extendre’l una mica amb algunes coses interessants que també podem fer amb la next generation de madwifi.

Virtual Access Points

Els VAPs són la característica més interessant de madwifi-ng, podem crear amb una única interface física APs virtuals amb configuracions diferents, però tots usaràn sempre la mateixa frequència (canal). Podem crear diversos VAPs treballant en mode punt d’accés i un sol VAP treballant en mode client per interface fisica. Si el VAP que treballa en mode client és el primer que creem, no podrém crear més VAPs en aquella interface.

Per crear els VAPs s’utilitza la comanda wlanconfig del paquet madwifi-ng-tools, resumint la sintaxis és la següent:

wlanconfig ath create wlandev wifi0 wlanmode <ap|sta> [bssid|-bssid] [nosbeacon]

Amb wlanmode ap creem VAPs en mode Master (punt d’accés) i amb wlanmode sta en mode client (station). Existeixen altres modes (monitor, wds…) però no entraré en tant de detall, per més informació mirar el man o la documentació de madwifi-ng.

Amb la opció -bssid forçem a que el VAP utilitze l’adreça MAC de la eeprom del dispositiu físic, i amb la opció bssid es genera una adreça MAC automàticament.

Quan tenim VAPs en mode Master (AP) i en mode client (STA) sobre un mateix dispositiu físic, s’ha d’utilitzar el flag nosbeacon quan es crea el client, aquest flag deshabilita l’us dels beacon timers per hardware per a treballar en mode client.

Si voleu veure alguns exemples us adreço al artícle d’en Brainstorm que he comentat anteriorment.

Repetidor utilitzant VAPs

A continuació explicaré com fer un repetidor utilitzant VAPs, que de vegades pot ser bastant útil.

Suposem que tenim un punt d’accés amb SSID “prova” i que volem extendre l’area de cobertura, per fer-ho crearem dos VAPs. El primer VAP en mode AP servirà per donar cobertura als clients en l’area que nosaltres “extenem”, el segon VAP en mode client servirà per associar-se al AP inicial que volem extendre.

Com tindrem un AP i un client sobre el mateix dispositiu físic, haurem de crear primer el AP i després el client i utilitzar nosbeacon quan creem el client, però quan aixequem les interfaces el VAP client s’ha de pujar primer i permetre-li associar-se al AP “prova” ja que aquest VAP serà el que seleccionarà el canal del AP existent.

# wlanconfig ath create wlandev wifi0 wlanmode ap
ath0
# wlanconfig ath create wlandev wifi0 wlanmode sta nosbeacon
ath1
# iwconfig ath0 essid \"prova\"
# iwconfig ath1 essid \"prova\"
# iwpriv ath0 wds 1
# iwpriv ath1 wds 1
# ifconfig ath1 up
(Esperar a que s'associe al AP)
# ifconfig ath0 up
# ifconfig eth0 up
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif ath0
# brctl addif ath1
# brctl setfd br0 1
# ifconfig br0 up

Nota: En aquest exemple el nostre AP no podrà rebre tràfic IP perqué no li hem assignat cap adreça al bridge, si volem que pugi rebre tràfic podem assignar-li una IP, però el AP “prova” ha de supportar WDS i saber gestionar trames amb 4 adresses MAC.

Seleccionar el mode d’operació

iwpriv ath0 mode <mode>
Els diferents modes d’operació son:

Mode Number Description
auto 0 mode d’operació automàtic
11a 1 802.11a (5GHz) – 54Mbps
11b 2 802.11b (2.4GHz) – 11Mbps
11g 3 802.11b/g (2.4GHz) – 54Mbps – compatible amb 802.11b
fh 4 802.11 frequency hopping mode
11adt/111at 5 802.11a (5GHz) – dynamic turbo mode
11gdt/11gt 6 802.11g (2.4GHz) – dynamic turbo mode (108Mbps)
11ast 7 802.11a (5GHz) – static turbo mode

Si volem treballar només amb mode 802.11g estrícte, sense permetre que els clients 802.11b es puguin connectar (deshabilita els rates inferiors a 6Mbps) ho podem fer amb la següent comanda:

iwpriv ath0 pureg 1

Amagar el SSID

De vegades ens interessa no publicar beacon frames anunciant el SSID de la xarxa, per fer-ho utilitzarem la següent comanda:

iwpriv ath0 hide_ssid 1

Canviar el temps entre beacons

Per defecte el SSID de la xarxa s’anuncia cada 100ms, podem canviar aquest valor amb la següent comanda:

iwpriv ath0 bintval <tems en ms>

Habilitar suport de 802.11h

802.11h s’utilitza per evitar problemes d’interferència amb altres dispositius que utilitzen la mateixa frequència, particularment radars i equips mèdics quan treballem a 5GHz.

Per reduir la interferència s’utilizen dues tècniques:

  • Dynamic Frequency Selection (DFS): el xip wifi detècta la presència d’altres dispositius i si solapaen el canal on està treballant l’AP actualment, automàticament canvia de canal.
  • Transmit Power Control (TPC): el xip wifi redueix la poténcia d’emissió a un nivell que minimitza el risc d’interferència des-de i cap a altres dispositius.

Per habilitar el suport de 802.11h utilitzarem la següent comanda:

iwpriv ath0 doth 1

Si volem generar un reassociation request utilitzarem la següent comanda:

iwpriv ath0 doth_reassoc 1

Quan utilitzem 802.11h la potència d’emissió pot variar entre un mínim predefinit per l’usuari i el màxim permes pel regulatory domain, per definir aquest límit utilitzarem la següent comanda:

iwpriv ath0 doth_pwrtgt <potència>

La potència s’ha d’especificar en escalons de 0.5 dBm, per exemple si volem que la potència d’emissió al canal actual pugui variar entre 13 dBm i el màxim permes pel regulatory domain especificaríem el valor 26 com a potència en la comanda anterior.

ACLs basades en adreces MAC

Madwifi-ng permet gestionar ACLs basades en MAC desde el propi driver, per fer-ho utilitzarem les següents comandes:

Primer hem de seleccionar de quina manera volem fer la gestió d’ACLs:

iwpriv ath0 maccmd <mode>

On el mode pot ser:

Argument Action
0 Deshabilita el control d’ACLs
1 Només permet accés a les MACs incloses en la llista d’ACLs
2 Només denega accés a les MACs incloses en la llista d’ACLs
3 Esborra la base de dades d’ACLs
4 Elimina la política d’ACLs

Per afegir o esborrar adreces MAC a la llista d’ACLs s’utilitzen les comandes add_mac i del_mac, de la següent manera:

iwpriv ath0 add_mac 00:01:02:03:04:05

iwpriv ath0 del_mac 00:01:02:03:04:05

Wireless Multimedia Extensions

Wireless Multimedia Extensions (WME) o Wi-Fi Multimedia (WMM) son una porció de les especificacions del estàndar 802.11e que proporcionen capacitats bàsiques de QoS a les xarxes 802.11 a nivell MAC (capa 2) prioritzant el tràfic en base a 4 categoríes o classes d’acces (AC), encara que no proporcionen la capacitat de garantir throughput.

Per defecte WMM ve habilitat en madwifi-ng, podem habilitar-lo o deshabilitar-lo amb la següent comanda:

Habilitar: iwpriv ath0 wmm 1

Deshabilitar: iwpriv ath0 wmm 0

Les ACs que defineix l’estàndard de WMM són les següents:

#AC Descripció
0 BE – Best Effort
1 BK – Background
2 VI – Video
3 VO – Voice

Els parámetres que veurem a continuació segueixen la següent sintàxi:

  • #AC especifíca el nombre d’AC (de la taula anterior) al que volem modificar el paràmetre.

  • X: Pot pendre dos valors, 0 o 1. El valor 0 indica que modificarem els valors per al set de paràmetres d’AP, el valor 1 indica que ho farem per al set de paràmetres de client.

  • Y: El valor que volem modificar en les unitats tal com es descriuen al estàndar de WMM.

Modificar els valors màxim i minim de la contention window: paràmetres cwmin i cwmax

iwpriv ath0 cwmin <#AC> <X> <Y>

iwpriv ath0 cwmax <#AC> <X> <Y>

Modificar el Arbitration Inter Frame Spacing (AIFS): paràmetre aifs

iwpriv ath0 aifs <#AC> <X> <Y>

Modificar el tamany de la Transmit Opportunity (TxOp): paràmetre txoplimit

iwpriv ath0 txoplimit <#AC> <X> <Y>

Modificar el flag Admission Control Mandatory (ACM): paràmetre acm

iwpriv ath0 acm <#AC> <X> <0|1>

Si el últim paràmetre val 0 no és necessari el control d’admissió, si val 1 és obligatori.

Modificar la política de NoACK (ACM): paràmetre noackpolicy

iwpriv ath0 noackpolicy <#AC> 0 <0|1>

El segón parámetre sempre ha de ser 0, ja que la política de NoACK només aplica al set de paràmetres d’AP i no de client.

Si el últim paràmetre val 0 la política que s’aplica és assumir que un client està actiu si retorna un ACK després d’enviar-li una trama de poll i desassociar-lo / desautenticar-lo si no contesta. Si val 1 no s’aplica cap política.

Altres històries

Com veieu el tema és bastant extens i si hagués de documentar totes les opcions i possibilitats no acabaríem mai, per això podeu llegir la magnífica users guide i la wiki de madwifi on trobareu altres exemples i documentació.

This entry was posted in linux, wireless. Bookmark the permalink.

One Response to Traient-li el suc a madwifi-ng

  1. […] L’altre dia comentava el tema dels Virtual Access Points, concretament parlava sobre la implementació de madwifi-ng per a xips Atheros; donçs ara acabo de flashejar un dels Linksys WRT45G que tinc per casa amb la versió v24 alpha de DD-WRT i sorpresa, també té suport de Virtual APs!! […]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>