Bridge Wireless

A volte può essere necessario un bridge wireless per collegare due LAN cablate, oppure per fornire l’accesso alla rete wireless a un dispositivo che ha solo la scheda ethernet.

Finora avevo usato il DWL-G700AP, cui avevo cambiato firmware, tuttavia, dopo il cambio della Fonera con il TP-Link TD-W8970 (di cui parlerò), ho voluto usare la Fonera per questa funzione, in quanto ha OpenWRT e quindi permette di configurarla meglio.

Essenzialmente ci sono queste modalità di bridge:

  1. Routed: non è esattamente un vero e proprio bridge, in quanto la stazione wireless agisce da router per i client ethernet ad essa collegati, creando una NAT (IPv4). Con IPv6 non so come si comporti. Va bene qualunque access point, non c’è alcuna modifica da fare. La stazione invece deve poter essere configurata per usare la wireless come WAN, ma con firmware avanzati, quali OpenWRT, DD-WRT etc non c’è problema. Questa scelta è ideale se dovete fare cose come navigazione internet etc, non ve bene invece per usare servizi sui computer routati, a meno di port forwarding. Tale modalità è scelta anche dai telefoni Android per il tethering USB della connessione WiFi.
  2. Bridge stile repeater: è la soluzione da adottare se non potete modificare le opzioni dell’access point o vi mancano quelle più avanzate. Utilizza una modalità analoga a quella dei repeater wireless. La usavo con il DWL-G700AP e volendo anche DD-WRT ci riesce. Non so esattamente come funzioni, forse vengono utilizzate delle estensioni proprietarie dei driver. Come vantaggio ha il fatto che non dovete in alcun modo cambiare le impostazioni dell’access point e che avete un bridge vero e proprio, ovvero ciò che è collegato alla stazione fa parte della stessa LAN del resto. Nel mio caso ho riscontrato anche degli svantaggi: il DWL funzionava a casa mia, invece non andava con il Technicolor di Fastweb, inoltre non si poteva più accedere alla configurazione del dispositivo tramite la wireless e il DHCP mandava il MAC della stazione anziché del client ad essa connesso. Nel caso di DD-WRT c’era un problema simile alla prossima tipologia: non andavano i pacchetti multicast.
  3. Bridge WDS: il WDS, ovvero Wireless Distribution System, è un’estensione di 802.11, ma non è uno standard. 1 Deve essere abilitata sia sull’access point che sulla stazione, quindi non è detto che possiate utilizzarla. Tuttavia una volta abilitata potete tranquillamente aggiungere le interfacce wireless ai bridge ethernet normali. L’ho sperimentata sia con la Fonera, che con il mio notebook (tutti con chipset Atheros, a dir la verità) e ha funzionato. Questa soluzione ha un problema, che può essere più o meno grosso in base alle vostre esigenze: vengono inoltrati solo i pacchetti TCP, UDP unicast, DHCP e ARP. Questo vuol dire che molti servizi funzioneranno, ma non saranno possibili funzionalità quali auto scoperta dei nodi della rete. Non potrete utilizzare quindi i computer vicini della rete di Windows e altro come mDNS e DNSSD, protocollo di cui io personalmente ho bisogno per la mia stampante Lexmark (per non utilizzare il suo indirizzo IP).
  4. Soluzione ibrida tra routed e bridged: è la soluzione che ho adottato, la più complicata. In pratica il bridge avviene tra l’interfaccia fisica ethernet e un’interfaccia virtuale di tipo tap, il wireless viene usato solo come canale per mettere in comunicazione la tap della stazione e la tap dell’access point. In poche parole mettete in comunicazione le due reti tramite una VPN. Quindi come requisito ha la possibilità di creare VPN sull’access point e sulla stazione. Se su entrambi c’è OpenWRT o simili non ci sono problemi. Come punti a favore ha il fatto che sarà come avere due reti collegate con il cavo. Come svantaggio ha il fatto che richiede più software, c’è più overhead e tutti gli svantaggi di una VPN con TAP.

Volevo aggiungere alcuni punti sulla mia implementazione (su OpenWRT): per evitare i problemi di instradamenti, ho creato sull’access point un alias all’interfaccia LAN. È una funzionalità intrinseca al kernel Linux: potete creare un sacco di alias a una singola scheda in modo da renderla parte di diverse reti ed è possibile anche con la wireless senza la creazione di un secondo SSID.

Ecco come creare l’alias (su /etc/config/network):

config interface 'lan_alias'
	option ifname 'br-lan'
	option proto 'static'
	option ipaddr '172.35.100.1'
	option netmask '255.255.255.0'

Vedrete sotto all’interfaccia lan anche l’interfaccia lan_alias (il nome potete deciderlo voi). Se vi interessa metterla in un firewall, mettetela come LAN. Assicuratevi inoltre che DHCP sia disattivo per quest’interfaccia.

Ho poi connesso la wireless con indirizzo IP statico appartenente alla classe 172.35.100.0/24.

Ho implementato la VPN con OpenVPN, in modalità p2p e senza codifica (tanto c’è già WPA2).

La configurazione è analoga nella stazione e nell’access point. Bisogna aggiungere queste righe al file /etc/config/openvpn:

config openvpn bridge_wlan
	option enable 1
	option mode p2p
	option remote 172.35.100.2 # IP della stazione nell'AP e viceversa nella stazione
	option port 21195 # O qualsiasi, a vostra scelta. Deve essere chiusa dall'esterno
	option dev tap0 # O un'altra, se la usate già
	option persist-tun 1
	option auth none
	option cipher none
	option log /tmp/openvpn.log
	option verb 2

Infine si aggiunge tap0 al bridge dell’interfaccia LAN, si configura la LAN della stazione con IP statico uguale a quello dell’interfaccia LAN dell’altro router (non dell’alias) e si è a posto.

Una nota su barrier breaker: ho notato che funziona solo un’istanza di OpenVPN alla volta. Ho intenzione di indagare su questo fatto, perché penso sia un bug dovuto alla sostituzione del vecchio init con procd.

Footnotes

  1. Client Mode Wireless dal wiki di OpenWRT.
    ^top

2 commenti