Questo documento illustra le reti Wireless, loro configurazione e relative problematiche. Diversamente da come accade per le reti classiche, le reti Wireless richiedono particolari accorgimenti per funzionare. E' necessario avere un minimo di esperienza sulle antenne, sul loro puntamento e così via. Ogni critica (costruttiva) è la benvenuta. Un'ottima fonte é anche questa: Jean Tourrilhes Wireless Howto
Per qualunque suggerimento o critica scrivetemi su questo indirizzo email
Copyright (C) 2000,2001,2002 Roberto Arcomano.
This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You can get a copy of the GNU GPL here
Sei libero di tradurre questo documento, devi soltanto rispettare 2 regole:
Attenzione! Non bisogna tradurre il file TXT o HTML, bensi' il file LYX, cosicche' sia possibile convertirlo negli altri formati (TXT, HTML, RIFF, ecc.): puoi utilizzare l'applicativo LyX scaricabile da http://www.lyx.org.
Non c'e' bisogno di chiedermi l'autorizzazione! E' sufficiente comunicarmelo.
Grazie per la traduzione.
Ringraziamenti a Fatamorgana Computers per l'equipaggiamento hardware e per la sperimentazione.
Grazie anche al Progetto Pluto per la pubblicazione.
Il Wireless é una nuova tecnologia che può aiutare nella comunicazione tra computers distanti. Si basa su schede Wireless con un TX/RX che opera sui 2.4 GHz, mentre l'interfaccia dal lato software é di tipo Ethernet, con un indirizzo fisico diverso per ogni scheda nel mondo. Potenze di trasmissione tipiche sono 10-20 mW fino a 100mW (vedi standard IEEE 802.11 e FCC/CEPT licenze).
Il requisito più importante, nelle comunicazioni Wireless, é la visibilità senza ostacoli delle antenne: e' necessario "vedere" l'altra antenna (a occhio nudo o con un binocolo) o al massimo é concesso un piccolo albero come ostacolo.
La distanza dipende dall'antenna (eventualmente amplificata): 2-300 metri con una omnidirezionale; 1 km con direttiva; 2-3 km con omnidirezionale amplificata (200mW); alcuni km con parabola. 50-60 km con parabola o direttiva ampificata (alcuni Watts).
Attenzione che non é sempre legale amplificare schede Wireless, in quanto potresti violare le specifiche dell' FCC (America) o del CEPT (Europa) o quelle del proprio stato.
Le schede classiche sono molto semplici da configurare (almeno a livello fisico). La configurazione delle reti Wireless risulta invece molto complessa come anche la loro gestione e relativo debugging... I tipici problemi di installazione hardware, software, debug e cosi' via diventano critici in ambiente Wireless:
Se installi un ripetitore (macchina Linux con diverse schede Wireless e Wired) potresti avere dei problemi editando la sua configurazione a distanza.
Ci sono un certo numero di requisiti da soddisfare.
requisiti software:
requistiti non software:
Infine una grande fortuna!
Perché? Perché non sei soddisfatto delle reti classiche!
Con le schede Wireless puoi attraversare giardini, parchi, case (l'importante é poter "vedere" l'altra estremità)
I protocolli di alto livello sono gli stessi delle schede classiche: TCP/IP over Wireless Ethernet-like ma fai molta attenzione alla condivisione risorse di Windows, perché se usi Linux per instradare i pacchetti, non potrai vedere gli altri computer su "Risorse di Rete", in quanto un router (ip forwarder) non fa passare i pacchetti di broacast (vedi protocollo NetBIOS): in tal caso potresti servirti di un server WINS (vedi documentazione di Samba).
Il sistema Wireless ti permette di creare una piccola LAN/WAN con un punto di accesso (magari con accesso ad Internet) e dando connettività a chiunque via etere!
Immagina un paese tutto cablato via radio.
Immagina una rete che può interconnettere tutte gli abitanti di un paese, far loro condividere files, suoni, video ad altissima velocità (comparabile con quella delle reti classiche fino a 11Mbps).
Tutto ciò può essere fatto (ed è già una realtà in alcune città) usando schede Wireless con relativi AccessPoint e macchine Linux che fungono da ripetitori allorché la distanza sia troppo elevata per essere coperta con un solo collegamento (a livello IP come ad esempio un router oppure, se vuoi, a livello data-link, con il supporto bridging per Linux , vedi http link o ftp link)
In questo Howto iniziamo con una configurazione generica (per introdurre le reti Wireless), in seguito descrivo un esempio per ogni scheda di cui ho esperienza diretta, con piccoli trucchi per migliorare le performance ed evitare conflitti.
Lista schede Wireless:
Per una lista più completa vedi Jean Tourrilhes Wireless Howto.
I Siemens Radio Modem non sono propriamente delle schede Wireless IEEE 802.11, ma sono dei modems da collegare sulla seriale (frequenza operativa 1800 MHz, tecnologia DECT). Vedi Appendice B.
Le suddette schede hanno un costo relativamente basso: partono da poche centinaia di migliaia di lire fino ad arrivare ad alcuni milioni per gli Access Point predisposti per schede 2 Wireless (Lucent, ad esempio) funzionanti come bridge.
Qui di seguito riporto alcune informazioni di base necessarie per comprendere la tecnologia Wireless
A livello fisico ISO/OSI possiamo avere 3 tipi di specifiche:
2 tipi di configurazioni:
Adhoc mode é il metodo più semplice (ed anche il meno scalabile!) e permette a diversi hosts di comunicare direttamente uno con l'altro. Il requisito (un po' restrittivo) é che ogni macchina debba vedere tutte le altre perché le cose funzionino (questo in teoria, perché in pratica questo problema può essere risolto a livello IP! Vedi Par 5.4).
Adhoc mode A - - - - - C \ / | \ / | /\ | / \ | / \ B - - - - - D
In Infrastructure mode vengono utilizzati gli Access Point attraverso cui tutte le stazioni devono connettersi per comunicare con gli altri.
Infrastructure mode ESS A - - - | - Access Point - - Access Point - | - - - D B - - - | BSS1 BSS2 | - - - E C - - - | | - - - F
A, B e C non possono vedere D,E and F, direttamente, ma possono comunicare con loro usando lo stesso ESS. Nota: A,B and C potrebbero anche non vedersi tra di loro, ma grazie all'Access Point comunicano lo stesso.
Vengono inoltre utilizzati temini come indoor e outdoor per distinguere le reti a corto raggio da quelle a lungo raggio o più propriamente per interni e per esterni.
Bisogna tenere conto che esistono un gran numero di schede Wireless nel mondo e non tutte possono comunicare tra di loro.
Per dialogare e' necessario che utilizzino:
E' noto che gli Access Point sono molto utili e evitano molte problematiche, ma hanno lo svantaggio di costare non poco. In teoria, per una rete molto concentrata conviene usare Infrastructure mode, mentre per pochi si può tranquillamente optare per Adhoc: in effetti perché spendere soldi inutilmente per poche macchine?
Vale comunque sempre la regola: mangi come spendi!
Ottima domanda!
Di recente e' stato prodotto un nuovo tipo di schede che permettono questa caratteristica: Prism2
Per saperne di piu' si veda il sito web http://people.ssh.com/jkm/Prism2/
Hai bisogno di un Linux Box (486 o, meglio, un Pentium 100+ con 16MB+ ram), della scheda Wireless, di un antenna per i 2.4GHz (vedi Par 2.2). Ovviamente hai bisogno di tutto ciò anche nell'altra estremità (con Win9x o WinNT se preferisci...) in quanto dobbiamo simulare una comunicazione.
Hai bisogno di:
Se non lo trovi neache qui devi convertire un driver di Windows per farlo girare sotto Linux!! (buona fortuna!)
Dopodiché devi ricompilare il kernel, ricompilare i sorgenti pcmcia (se richiesto) e finalmente compilare il driver Wireless. Tieni conto che questa é un situazione del tutto generale, in molti casi ti basterà seguire il passo 3 oppure i passi 1 e 3, dipende dal driver che hai.
Una volta che hai recuperato il materiale e hai ricompilato tutto il necessario sei pronto per seguire i 3 passi per la configurazione di una rete Wireless.
N.B.: passi 1, 2 e 3 corrispondono ai livelli 1, 2 and 3 dello standard ISO/OSI, mentre il passo 4 é un addendum per risolvere alcune problematiche, tra cui quelle generate dall'adozione della maschera 255.255.255.255. Infatti la maschera 32 bit viola lo standard TCP/IP forzando una rete ad usare lo stesso indirizzo per il broadcast e per l'host, mentre l'indirizzo di rete non esiste.
Qualcuno potrebbe criticare questo punto di vista, ma se seguissimo alla lettera lo standard inizieremmo a perdere una marea di indirizzi IP (sempre più preziosi); per ogni sottorete 2 indirizzi sono riservati (network and broadcast) e comunque, seguendo lo standard, non si avrebbe certamente la necessaria flessibilità sull'assegnazione di indirizzi IP alle interfacce richiesta dai sistemi Wireless (allocazione di tipo geografica!). Per maggiori informazioni vedi Appendix A.
Si può infine notare come il passo 2 non sia presente nelle schede Wired, in quanto non vi sono particolari settaggi da operare.
E' il classico problema dell'amministratore del sistema: far riconoscere al PC il proprio hardware.
Le schede Wireless sono più complesse sotto questo punto di vista, perché molte hanno il plug Pcmcia e quindi prima di tutto é necessario "far vedere" al kernel il proprio adattare Pcmcia, in seguito sarà possibile provare ad installare il driver specifico per la scheda Wireless Pcmcia.
Quindi nelle configurazioni Pcmcia é necessario:
mentre per la configurazione senza Pcmcia:
Una volta che conosci il nome del driver é il momento di caricarlo: nel caso di Pcmcia ci penserà il demone relativo (attivabile tramite /etc/rc.d/init.d/pcmcia start per le distribuzioni RedHat), mentre per le altre schede basterà dare "modprobe module_name options". Tra le opzioni vi sono ioport, irq e i settaggi data-link relativi al driver Wireless (vedi Par 5.3). Ad ogni modo ci sono una serie di strumenti molto comodi per controllare il riconoscimento a basso livello del driver:
Cosa significa?
Le reti classiche hanno bisogno solo di essere fisicamente connesse le une con le altre e di avere i giusti settaggi TCP/IP. Al contrario le reti Wireless networks richiedono settaggi Data-link che indicanti:
Ci sono quindi una serie di settaggi da configurare, la ragione di ciò deriva dall'architettura Wireless: potrebbe esserci qualcuno, nel raggio di copertura Wireless, che potrebbe intercettare dei pacchetti e usare servizi relativi ad un altra rete wireless solamente puntanto la propria antenna nella giusta direzione e settando gli opportuni parametri TCP/IP.
Inoltre più reti Wireless (magari ognuna relativa ad un piano di un edificio) potrebbero interferire una con l'altra.
Ecco allora:
Questo é il terzo problema che dobbiamo affrontare. Qui i problemi arrivano quando ci si evolve verso una rete più grossa.
Ricordati che la rete Wireless non ti stressa se non sei tu a stressarla!
Tutti gli hosts si "vedono" A - - - - - C \ / | \ / | /\ | / \ | / \ B - - - - - D
Una configurazione come questa é molto semplice e non richiede particolari attenzioni (almeno a livello IP): hai soltanto bisogno di assegnare un indirizzo IP ad ogni host e una maschera generale coerente con tutte le altre macchine.
A non vede B direttamente A <- - - - NO\ | TALK\ C \ | B <- - - -
In questo caso A e B possono comunicare tra loro soltanto tramite C.
Se la rete é in infrastructure mode e C é l'Access Point allora tutto ok. In Adhoc mode é invece designare un host per essere un "master" (so che il termine non é molto formale, ma l'importante é capirsi!), un host che sia cioé in grado di creare un BSS e a cui gli altri possano collegarsi specificando il relativo BSSID.
In questo caso la connettività globale viene raggiunta a livello IP: A e B usando la stessa interfaccia di C, quindi se provi anche solo a fare ping da A verso B riceverai una marea di pacchetti ICMP REDIRECT da C, con cui C t'informa che la destinazione é già sulla rete da cui proviene la richiesta.
Soluzione: digita "echo 0 > /proc/sys/net/ipv4/conf/ethx/send_redirects" (dove ethx é l'interfaccia su C verso A e B) per annullare il problema.
Un altro problema: che maschera assegnare ad A, B e C? Se si da una maschera ad A che includa B non funziona nulla, perché A non utilizzerà C come gateway ma farà la richiesta ARP con indirizzo MAC destinazione sconosciuto.
Potresti dire: uso il proxy arp! Peccato che il proxy arp serva per rispondere al sorgente solamente nel caso in cui il destinatario appartenga ad una diversa interfaccia rispetto al sorgente e questo non é il caso.
Conviene quindi settare la più piccola maschera possibile (Win9x permette 255.255.255.254, WinNT invece 255.255.255.248), e devi essere sicuro che A and B non appartengano alla stessa sottorete.
Esempi:
In generale, con una maschera 255.255.255.254, il giochetto funziona tra 2 IP che NON differiscono soltanto per l'ultimo bit.
Mi rendo conto che tutto ciò é una forzatura del TCP/IP, ma é l'unico metodo per ottenere un elevato livello di flessibilità.
Nota: Usando un Access Point (rete in Infrastructure mode) non esiste più il problema dei pacchetti ICMP REDIRECT perché il problema viene già risolto a livello data-link (praticamente tutti gli Access Point sono dei bridge...). Ma gli Access Points sono costosi (qualche milione o più) ed é più economico usare un P133, 32MB Ram per forwardare i pacchetti, anche con 2 o più schede di rete.
A - - - - - C - - Internet \ / | \ / | /\ | / \ | / \ B - - - - - D Ci sono una serie di possibilità:
Internet \ \ E \ / \ / Wireless A - - - - - C - - F \ / \ | \ / | \ Wired /\ G | / \ | / \ B - - - - - D
Adesso C unisce 2 reti: a destra Wireless e a sinistra Wired.
In aggiunta puoi avere l'accesso ad Internet ed in totale hai bisogno di 3 schede di rete su C.
Che indirizzi devi assegnare alle macchine? 2 soluzioni possibili:
Esaminiamo ora la soluzione 2
Ad esempio considera di avere una sottorete pubblica su Internet del tipo x.y.z.0/24.
Le interfacce sono:
Le routes statiche su eth2:
Queste route servono per indirizzare tutto Internet verso il nostra Default GW: come puoi notare é necessario prima dire a Linux che il router é sull'interfaccia eth2, poi mandare la default route verso di esso.
Routes statiche su eth0:
Hosts A,B e D sulla rete Wired
Routes statiche su eth1:
Hosts E,F e G sulla rete Wireless.
Nota che la flessibilità é molto elevata, però devi settare manualmente ogni hosts (al limite puoi destinare un micro-classe su un'interfaccia).
Qui riporto alcuni esempi (spero utili!) per configurare le schede Wireless più diffuse.
Le schede Wireless hanno un interfaccia molto simile alle schede Wired, quindi dovrei aggiungere, come al solito delle entries nel file /etc/conf.modules contenenti:
Dopo questo potrai direttamente usare i comandi ifconfig route per configurare i settaggi IP della tua scheda.
Tipo di rete: FHSS,solo Adhoc e con protocollo proprietario OpenAir.
Web site: http://www.proxim.com dove devi scaricare la documentazione e il driver per Linux e Win9x.
Una volta scaricato il driver:
Utility rl2cfg (per l'aiuto digita man rl2cfg dopo il passo 3) ti permette di cambiare i settaggi data-link level:
Questo é tutto ciò di cui hai bisogno per settare la scheda.
Tipo di rete: FHSS, solo Adhoc per Aviator 2.4 e anche Infrastructure per AviatorPro.
Queste schede richiedono più lavoro perché devi compilare il supporto Pcmcia.
Web site: http://www.webgear.com.
Per configurare:
Argomenti:
Finalmente, per verificare la configurazione (con pc_debug>0), vedrai dei messaggi sulla console tipo questi: "network started" nel caso in cui stai creando una nuova rete Wireless network created e "network joined" se ti stai collegando ad una già esistente.
Puoi controllare il file /proc/ray_cs per aiutarti: il campo BSSID ti dice a quale sotto rete appartieni, se é nullo c'é qualcosa che non va!
Tipo di rete: DSSS, Adhoc e Infrastructure.
I prodotti Lucent sono molto professionali.
Web site: http://www.lucent.com e http://www.orinoco.com.
Il Setup é analogo a quello delle WebGear: i passi 1,2,3 sono simili.
Devi poi aggiungere al file /etc/pcmcia/config.opts l'entry: "module "wavelan_cs" opts " ..."" per i modelli Lucent Wavelan I e "module and "wavelan2_cs" opts " ..."" per i modelli Lucent Wavelan II e Orinoco.
Sotto la voce opts dovreai specificare:
Note: In teoria é possibile installare 2 schede Lucent su una macchina Linux, una in Adhoc mode e l'altra in Infrastructure mode. Il problema é che soltanto una funziona in quanto, durante il lancio dei servizi pcmcia, tutte e 2 le schedeverranno settate con gli stessi parametri data-link (quindi entrambe in Adhoc o in Infrastructure mode). Quello che si può fare é creare un modulo (o un programma user) che permetta di cambiare i settaggi data_link relativi all'access mode e al canale a run-time .
La funzione del parametro canale serve ad evitare interferenze con altre schede Wireless.
I driver Lucent possono anche essere usati per le schede Cabletron http://www.cabletron.com
Tipo di Rete: DSSS, Adhoc e Infrastructure.
YDI vende schede molto professionali insieme a relative antenne, amplificatori e altro ancora.
Web site: http://www.ydi.com
Per installare:
Una volta fatto puoi scegliere se digitare i comandi a mano con "wlanctl" o lanciare uno degli scripts "scripts/wlan" or "scripts/rc.wlan" per configurare automaticamente la tua scheda.
Nella configurazione a mano i principali settaggi sono:
D1: Qual'é la differenze tra il BSSID e l'ESSID e quando devo esare l'ESSID?
R1: Il BSSID é un numero da 48 bit usato per identificare l'area ristretta cui ci si trova corrispondente al BSS, dove tutti gli hosts dialogano direttamente tra di loro (eventualmente con un Access Point), mentre l'ESSID é una stringa a lunghezza variabile che permette a differenti reti BSS di dialogare fra loro impostando un identificativo comune noto come, appuntom ESSID. ESS stà per Extended Service Set (ESS). Esiste un solo Access Point per ogni BSS e tutti gli AccessPoint (relativi a sottoreti diverse) dialogeranno tra loro soltanto se avranno lo stesso ESSID. Quindi hai bisogno dell'ESSID se hai una rete già di un certo tipo, con almeno 2 Access Points.
D2: Quale Access Point devo comprare?
R2: Quello che costa meno (a parità di prestazioni!): ciò che é importante é che l'AccessPoint e le schede che stai usando utilizzino protocolli compatibili: vedi Par 3.3 Compatibilità.
D3: A che serve il settaggio del canale?
R3: Quando hai diversi BSS (e magari di diversi standard) potresti aver dei problemi di interferenza: cambiando il canale opportunamente sull'AccessPoint o sulla scheda (in caso di AdHoc mode) puoi attenuare tali disturbi.
D4: Perché non riesco ad impostare il canale su un host che funziona in Infrastructure mode?
R4: Perché in Infrastructure mode il canale viene sempre deciso dall'Access Point.
Qui vediamo alcuni vantaggi nell'utilizzare Linux per le reti Wireless.
Linux permette di specificare la netmask 255.255.255.255 per un'interfaccia: questo può aiutare in ambito Wireless perché permette, successivamente, di assegnare un indirizzo IP verso un'interfaccia piuttosto che un'altra. Ad esempio puoi specificare la macchina A sull'interfaccia eth0, la macchina B sull'interfaccia eth1 e così via.
Tutto ciò non ha particolary effetti collaterali.
Inoltre puoi utilizzare le funzionalità di proxy arp tramite il file "/proc/sys/net/ipv4/conf/ethx/proxy_arp" dove ethx é l'interfaccia desiderata.
Se per esempio esegui il comando "echo 1 > proxy_arp/proc/sys/net/ipv4/conf/ethx/proxy_arp" abiliterai il proxy arp per l'interfaccia ethx, mentre con "echo 0 > proxy_arp/proc/sys/net/ipv4/conf/ethx/proxy_arp" lo disabiliterai.
Cos'é il proxy_arp? In maniera sintetica possiamo dire che il proxy arp é una funzionalità che ti aiuta quandi vuoi che un router linux risponda ad una richiesta ARP (che "vede passare" su un'interfaccia) nel caso in il destinatario é su un'altra interfaccia del router linux.
Esempio:
192.168.1.1 ---- 192.168.1.2 Linux router 192.168.2.2 ----192.168.2.1
Per far funzionare questa rete bisogna:
Senza proxy-arp
Con proxy-arp
Il proxy arp permette al router linux di rispondere quando si vede arrivare un'ARP request dall'host 192.168.2.1: il router dice di "avere" lui stesso l'indirizzo di destinazione 192.168.1.1. Dopodiché quando 192.168.2.1 comincia a mandare i pacchetti ICMP (come qualunque altro pacchetto), il nostro router LInux sa che deve mandarli all'host 192.168.1.1.
Nelle reti Wireless il proxy arp può quindi aiutarti quando hai tanti router Linux e non vuoi perdere il tuoi tempo a settare per ogni host le routes statiche; permette cioé un certo grado di trasparenza.
Infine puoi sperimentare il bridging sotto Linux:
Bridging dovrebbe essere ancora più comodo del proxy arp.
Cosa sono? Questi 2 componenti non sono delle vere schede per PC ma sono semplicamente dei modems che si attaccano alla seriale come dei normali devices esterni.
Host1-seriale - RadioModem1 - - - - - RadioModem2 - seriale-Host2
Come li connetto?
Possiamo modellare i 2 radiomodems com un cavo Null Modem:
Host1-seriale - - CAVO NULL MODEM - - seriale-Host2
In questo modo ci sono 2 modi possibili per sfruttarne le potenzialità:
Per la modalità 1 puoi usare questo script per Linux:
"/usr/sbin/pppd -detach lock idle 300 crtscts connect "/usr/sbin/chat -v TIMEOUT 5 AT OK AT OK AT OK AT OK" IPLINUX:IPWINDOWS /dev/ttySx 115200 disconnect "/usr/sbin/chat -v AT OK" ms-dns IPDNS"
dove:
Tale scripts é necessario per "far credere" a Windows che sulla seriale sia collegato un modem reale!!
Su Windows devi creare una connessione in Accesso Remoto con crtscts abilitato, velocità a 115200 e con uno stupido numero da chiamarel (richiesto da Accesso Remoto ma assolutamente non usato).
Con 2 macchine Linux devi soltante lanciare, per ogni macchina uno script come questo:
"/usr/sbin/pppd passive local crtscts IPLINUX1:IPLINUX2 /dev/ttySx 115200 noauth persist"
dove dovrai invertire IPLINUX1 con IPLINUX2 sull'altra macchina.
Nota che puoi anche abilitare l'autenticazione, sia con la modalità Linux-Windows che con quella Linux-Linux.