VLAN e access point: come estendere sotto-reti LAN/WLAN su Openwrt/DSA

Tags: 

Il mio router principale OpenWrt gestisce 3 reti separate, ognuna con i propri punti di accesso Wi-Fi, IP e regole firewall:

  • La rete "STANDARD", su 192.168.1.x, che permette completo accesso sia alla LAN interna che alla WAN esterna (internet)
  • La rete "THINGS", su 192.168.2.x, che viene usato da tutti i dispositivi IOT e similari, che può accedere solo alla rete stessa, e al router e a un server interno per la gestione domotica, ma a parte queste "eccezioni" non può accedere al resto della rete interne ne alla rete WAN esterna.
  • La rete "GUEST", un accesso Wi-Fi per gli ospiti che può accedere alla rete esterna "WAN", ma a niente della rete interna.
  • Fin qui tutto bene: non è compito di questo articolo spiegare come si ottiene la configurazione sopra (che è comunque una configurazione delle reti Wi-Fi piuttosto standard, con propri DHCP e configurazioni specifiche sul firewall).

    Il problema è estendere queste 3 reti sugli access point sparsi per casa/giardino in modo da mantenere inalterate tutte le regole. Se un dispositivo IOT che si trova in giardino si connette alla sua Wi-Fi della rete "THINGS" deve mantenere le sue limitazioni sopra, anche se si sta connettendo a un access point (a sua volta connesso via LAN al router principale).

    Per risolvere il problema ci viene in aiuto il sistema delle VLAN (sistema supportato da molti router, non solo OpenWrt).
    Il sistema delle VLAN permette di suddividere la propria LAN in varie "sotto reti virtuali", ognuna vista come una rete a se stante (e quindi con le proprie regole). Quando un pacchetto di dati gira per i cavi di rete tra un dispositivo all'altro potrà appartenere a una di queste reti virtuali: per riconoscerlo si una un TAG applicato al pacchetto (il tag in genere è un semplice codice numerico). E' un sistema che deve ovviamente essere supportato da router/access point/switch (e in genere lo è). 
    Ogni punto di accesso Wi-Fi sarà a sua volta associato a una VLAN
    : in questo modo se un dispositivo si connette a quella rete Wi-Fi, i suoi pacchetti saranno instradati nella VLAN giusta, e taggati con il TAG specificato.

    Ad esempio, ipotizziamo che le mie 3 reti abbiano TAG 1 (la rete standard), 3 (la rete THINGS) e 4 (la rete GUEST). Si, non ho usato il numero 2 (più sotto il motivo).
    Quando il mio dispositivo IOT in giardino si connette alla rete Wi-Fi "THINGS" sull'access point in giardino viene taggato con il TAG 2. A quel punto se cerca di comunicare con il server MQTT, l'access point instraderà i pacchetti verso il router, passando dal cavo LAN che li connette (e girando magari tra vari switch), e tutti i pacchetti avranno l'etichetta "2".
    Il router, che riconosce l'etichetta, collegherà correttamente i pacchetti alla VLAN "THINGS" e applicherà le regole relative. In questo caso le regole gli permettono di accedere al server MQTT, e quindi gli manderà i dati.

    Vista la teoria, vediamo ora in pratica come si gestiscono le VLAN su OpenWrt, sia nella nuova versione DSA che nella vecchia (visto che a casa mia ho degli access point vecchi che per ora non voglio aggiornare).

    OpenWRT 24 (DSA)

    Per prima cosa si creano le VLAN. Ci sono vari sistemi per ottenere la stessa cosa (come si può vedere nelle guide e link che ho riferito in fondo), ma il sistema per me più veloce è questo.

  • Andiamo in Network > Interfaces > Devices.
  • Cerchiamo il bridge device base "br-lan", che fa da bridge su tutte le porte fisiche dietro al router. (Dovrebbe esserci pre-installato, ma se non c'è basta crearlo).
  • Apriamo la tab "Bridge VLAN filtering" e abilitiamo "Enable VLAN filtering". Dobbiamo quindi generare le VLAN volute. Come da esempio sopra, genero 3 VLAN, con ID 1,3,4, tutte locali.
  • Decidiamo ora il tagging. Nel mio caso voglio in realtà che i pacchetti della rete STANDARD (1) siano quelli di default, e quindi non ho bisogno che girino taggati. Quando esce un pacchetto da quella porta posso togliergli il tag. Se entra un pacchetto che non ha tag, voglio che finisca nella VLAN 1.
    Invece le reti 3 e 4 non sono standard, e necessitano di TAG. Quindi voglio che i pacchetti che vanno nelle porte LAN siano taggati (e ovviamente se entrano taggati finiranno nella VLAN giusta).

    Da notare che nel mio caso non faccio differenza tra le porte dietro al router: ognuna ha lo stesso comportamento. Se però volessi che un dispositivo connesso via cavo LAN finisca forzatamente su una VLAN, potrei farlo specificando le opzioni "verticali" su quella porta, e in particolare usando la voce "Is Primary VLAN" che permette di specificare dove vanno i pacchetti non taggati.
    Lascio questo screenshot di una delle guide linkate sotto, che sembra un articolo temporaneo ma è molto chiaro nello spiegare come funzionano le voci di tagging, e quindi più che stare io a scrivere troppa roba riporto quello.

    Al termine dell'impostazione, salvando, vedremo che nell'elenco dei device sono apparsi i device delle 3 VLAN.

  • Dobbiamo ora creare le interfacce di rete collegate alle VLAN.
    Andiamo in Network > Interfaces e creiamo le interfacce che vogliamo (come per le normali reti), impostando per ognuna il dispositivo della VLAN relativo. Per la rete lan base dovremo usare il dispositivo "br-lan.1".
    Alcuni screenshot per THINGS (mostro le impostazioni base e le impostazioni firewall giusto per far vedere che avrò inserito una sua zona per il firewall).
  • La parte più complicata è fatta, ora non serve altro che creare/assegnare le reti Wi-Fi e il firewall. Su questo non sto a spendere tante parole, sono le funzionalità base di creazione reti wireless e gestione del firewall che potete vedere altrove. Metto qualche screenshot giusto per una panoramica.
  •   Network > Wireless, configurazione della rete THINGS (SSID: XXX-TH)

      Network > Firewall, mostro la configurazione base delle zone (poi ci sono anche un sacco di traffic rules, ma qui non ci riguardano)

     

    Abbiamo finito!

    Per quanto riguarda gli access point, se sono DSA, la situazione è sostanzialmente la stessa per quanto riguarda definizione di device, vlan, e reti wireless.

    Ovviamente cambiano le interfacce (presumibilmente utilizzerete il DHCP server del router centrale per assegnare le IP, e il firewall è gestito da lui), ma questi sono aspetti che riguardano la normale estensione di rete via access point (o "dumb access point") che potete vedere altrove (nei link riferiti in fondo se ne parla).

    Passiamo ora agli OpenWrt vecchi.

    OpenWRT 23 e inferiori (non DSA)

    La cosa che cambia di più è la definizione delle VLAN, che si fa in maniera molto diversa.

    Si deve andare in Network > Switch per farla.

    Bisogna considerare che qui la situazione è più complicata, perchè i vecchi OpenWRT (non mi è chiaro se sempre o solo in certe configurazioni) considerano anche la WAN con una particolare VLAN (taggata con "2", motivo per cui non ho usato quel TAG), e tra le porte visibili ci sono anche le CPU (cioè il router stesso).

    Senza addentrarci in troppi tecnicismi (che non ricordo più nemmeno io visto che sono cose fatte anni fa), considerate che la VLAN 1 è quella standard (e nel mio caso va bene li dov'è), la 2 "WAN" va lasciata e dovete aggiungere 3 e 4.
    Tutte devono avere accesso alla CPU.

    Nella mia configurazione specifica LAN4 è la porta WAN, e quindi li ci metto taggato solo la VLAN2 (come di default). Delle altre 4 porte ho configurato solo la prima, che è simile a quella sopra (qui non esiste l'*, ovvero il "Primary VLAN ID", che però in una configurazione cosi' semplice non è necessario).

    Da notare che nel mio access point la WAN non la uso, e quindi probabilmente avrei potuto semplificare (ma non mi andava).

    Anche la definizione delle interfacce cambia un po'. Premettiamo che conviene per prima cosa creare le reti WiFi da Interfaces > Wireless.
    Fatto questo possiamo creare le varie interfacce per le 3 reti, considerando che in ognuna dovremo impostare nei "Physical settings" un bridge che connette la VLAN (che qui si chiama "eth.TAG") con la rispettiva interfaccia wireless "wlanX-Y". Ad esempio nel mio caso sotto per la rete THINGS ho fatto un bridge tra eth0.3 e wlan0-1 (l'accesso wireless per things configurato poco prima).

    Metto gli screenshot (nel mio caso specifico THINGS è anche su una seconda wlan, per esigenze specifiche che qui possiamo ignorare. Inoltre, sempre per esigenze diverse dal focus di questo articolo, la rete LAN è impostata come Static address mentre Things è DHCP Client... cosi' vedete 2 esempi diversi).





    Il resto è sostanzialmente come per le istruzioni precedenti.

    Finito!

     

    Riferimenti

    Questo è tutto, se avete seguito tutto bene avete tutte le vostre reti correttamente gestite in ogni angolo di casa (e fuori).

    Lascio diversi riferimenti interessanti dai quali ho attinto, ora e in passato, per capire come funzionava il tutto (e come aggiornare a DSA).

    Articolo ufficiale su come estendere reti Wi-fi via AP
    https://openwrt.org/docs/guide-user/network/wifi/wifiextenders/bridgedap

    Video relativo:
    https://youtu.be/4t_S2oWsBpE

    Tutorial conversione a DSA, utili gli esempi che spiegano il funzionamento di porte tagged / untagged / PVID:
    https://openwrt.org/docs/guide-user/network/dsa/converting-to-dsa

    Altro tutorial per il passaggio a DSA
    https://openwrt.org/docs/guide-user/network/dsa/dsa-mini-tutorial

    E video per il passaggio VLAN a DSA:
    https://youtu.be/qeuZqRqH-ug

    Video non ufficiale che spiega abbastanza bene la gestione VLAN su DSA:
    https://youtu.be/p7EWTbZfBKo

    Aggiungi un commento

    Scrivi la risposta in lettere (ad esempio "tre" e non "3")