La Colmena es un coworking: una planta, varias empresas y un solo hEX. De momento hay dos, un estudio de diseño (la empresa A) y una gestoría (la B), y una impresora para las dos. En ether1 llega el operador (con su NAT ya puesto); en ether2, un puesto de la A; en ether3, uno de la B; en ether4, el punto de acceso, con una wifi para cada empresa; y en ether5, la impresora. La gestoría no quiere que el estudio vea sus equipos, y al revés. La solución de siempre sería un router y un cableado para cada una. Con VLANs, basta uno.
El bridge: varios puertos, una sola red
Cada puerto del hEX es, de fábrica, una red aparte: una dirección en ether2 no sirve a quien esté en ether3. Un bridge junta puertos en una sola red, como un switch: lo que entra por uno sale por los demás. Bridge ▸ + crea el bridge; en Ports ▸ +, cada puerto con su bridge.
[admin@R-Colmena] > /interface bridge add name=bridge1 comment=Colmena
[admin@R-Colmena] > /interface bridge port add bridge=bridge1 interface=ether2
[admin@R-Colmena] > /interface print Flags: R - RUNNING; S - SLAVE Columns: NAME, TYPE, ACTUAL-MTU, L2MTU, MAC-ADDRESS # NAME TYPE ACTUAL-MTU L2MTU MAC-ADDRESS 0 R ether1 ether 1500 48:8F:5A:10:20:01 1 RS ether2 ether 1500 48:8F:5A:10:20:02 2 RS ether3 ether 1500 48:8F:5A:10:20:03 3 RS ether4 ether 1500 48:8F:5A:10:20:04 4 RS ether5 ether 1500 48:8F:5A:10:20:05 ;;; Colmena 5 R bridge1 bridge 1500 65535 48:8F:5A:10:20:02 6 R lo loopback 65536 00:00:00:00:00:00
La S es de slave: ese puerto ya no va por su cuenta, es parte del bridge. Por eso la dirección del router va en el bridge, no en un puerto: una dirección que se queda en ether2, dentro del bridge, ya no oye a nadie. El bridge toma la MAC de su primer puerto.
Ejercicio
Un solo bridge para todos
En La Colmena, la red de los puestos (192.168.88.0/24) solo llega a ether2: el puesto de ether3 no tiene red. Junta ether2, ether3, ether4 y ether5 en un bridge, para que sean una sola red, y pon la dirección del router (192.168.88.1/24) en el bridge.
Encendiendo el router…
Las VLAN: varias redes por los mismos cables
Una VLAN es una red aparte dentro del mismo bridge, con su número (de 1 a 4094). Lo que va por un cable puede ir de dos maneras:
- sin etiquetar (untagged): una sola red por cable, como siempre. Un PC no sabe de VLAN: así es como habla. Un puerto así es un puerto de acceso.
- etiquetado (tagged, 802.1Q): cada trama lleva el número de su VLAN, y por el mismo cable van varias. Un puerto así es un trunk. El punto de acceso de La Colmena manda la wifi de la A en la VLAN 10 y la de la B en la 20, por el mismo cable.
Para que el router hable en una VLAN (y sea su puerta de enlace), una interfaz VLAN sobre el bridge: Interfaces ▸ VLAN ▸ +, con su VLAN ID y, en Interface, el bridge. La dirección del router en esa red va en ella.
[admin@R-Colmena] > /interface vlan add name=vlan10 vlan-id=10 interface=bridge1 comment="Empresa A"
[admin@R-Colmena] > /ip address add address=192.168.10.1/24 interface=vlan10
[admin@R-Colmena] > /interface vlan print Flags: R - RUNNING Columns: NAME, MTU, ARP, VLAN-ID, INTERFACE # NAME MTU ARP VLAN-ID INTERFACE ;;; Empresa A 0 R vlan10 1500 enabled 10 bridge1 ;;; Empresa B 1 R vlan20 1500 enabled 20 bridge1
Ejercicio
Las wifis, por el trunk
El punto de acceso de ether4 tiene una wifi para cada empresa y las manda etiquetadas por el mismo cable: la de la A en la VLAN 10 y la de la B en la 20. Dale a cada una su puerta de enlace en el router: una interfaz VLAN sobre el bridge, con la 192.168.10.1/24 y la 192.168.20.1/24.
Encendiendo el router…
Puertos de acceso, PVID y vlan-filtering
Las wifis llegan etiquetadas y ya caen en su VLAN. Pero un PC manda sin etiquetar: ¿en qué VLAN cae? En la del PVID de su puerto (Bridge ▸ Ports, pestaña VLAN). El puesto de la A, en ether2, con PVID 10; el de la B, en ether3, con PVID 20.
[admin@R-Colmena] > /interface bridge port set [find interface=ether2] pvid=10
[admin@R-Colmena] > /interface bridge port print Columns: INTERFACE, BRIDGE, HW, HORIZON, TRUSTED, TRUSTED-RA, TRUSTED-DHCPV6, FAST-LEAVE, BPDU-GUARD, EDGE, POINT-TO-POINT, PVID # INTERFACE BRIDGE HW HORIZON TR TR TR FA BP EDGE POIN PVID 0 ether2 bridge1 yes none no no no no no auto auto 10 1 ether3 bridge1 yes none no no no no no auto auto 20 2 ether4 bridge1 yes none no no no no no auto auto 1 3 ether5 bridge1 yes none no no no no no auto auto 1
Y el bridge tiene que saber qué VLAN van por cada puerto, y cómo: la tabla de VLAN (Bridge ▸ VLANs ▸ +). La VLAN 10 sale tagged por el trunk (ether4) y untagged por el puesto de la A (ether2); la 20, igual con ether3.
[admin@R-Colmena] > /interface bridge vlan add bridge=bridge1 vlan-ids=10 tagged=ether4 untagged=ether2
Hasta aquí, el bridge no hace caso de nada de esto: todo se aplica cuando se enciende vlan-filtering (en el bridge, pestaña VLAN). Entonces, en la columna CURRENT, sale lo que de verdad va por cada puerto, y lo que añade el router solo, con su D: cada puerto (y el propio bridge) en la VLAN de su PVID, y el bridge etiquetado en cada VLAN que tenga una interfaz sobre él.
[admin@R-Colmena] > /interface bridge set bridge1 vlan-filtering=yes
[admin@R-Colmena] > /interface bridge vlan print Flags: D - DYNAMIC Columns: BRIDGE, VLAN-IDS, CURRENT-TAGGED, CURRENT-UNTAGGED # BRIDGE VLAN-IDS CURRENT-TAGGED CURRENT-UNTAGGED 0 bridge1 10 bridge1 ether2 ether4 1 bridge1 20 bridge1 ether3 ether4 ;;; added by pvid 2 D bridge1 1 bridge1 ether5 ether4
Para cerrarlo del todo, Frame Types en cada puerto: el trunk, admit-only-vlan-tagged (lo sin etiquetar, fuera); un puesto, admit-only-untagged-and-priority-tagged.
Ejercicio
Cada puesto, en su VLAN
Las wifis ya tienen su red, pero los puestos de cable no: el de la A (ether2) tiene que caer en la VLAN 10 y el de la B (ether3) en la 20, sin etiquetar. Pon el PVID de cada puerto, la tabla de VLAN del bridge (el trunk de ether4, etiquetado en las dos) y enciende vlan-filtering.
Encendiendo el router…
Entre VLAN, pasa el router
Cada VLAN es una red con su puerta de enlace en el router, y el router lleva de una a otra (como entre ether2 y ether3 en el tema 2). La impresora común, en su propia VLAN (la 30), está al alcance de las dos empresas:
[admin@R-Colmena] > /interface bridge port set [find interface=ether5] pvid=30
Sin entrada para la 30 en la tabla de VLAN, el router pone sola a ether5 (por su PVID) y al bridge (por la interfaz vlan30).
Ejercicio
La impresora común
La impresora de ether5 (192.168.30.20) es de las dos empresas. Ponla en su propia VLAN, la 30, con su puerta de enlace en el router (192.168.30.1/24): el router lleva de una VLAN a otra, y las dos empresas imprimen.
Encendiendo el router…
Eso mismo es lo que hay que cortar entre empresas: como el router lleva de la VLAN 10 a la 20, la gestoría llega al estudio. El corte va en el firewall (tema 3), en forward, con las interfaces VLAN:
[admin@R-Colmena] > /ip firewall filter add chain=forward in-interface=vlan10 out-interface=vlan20 action=drop
Una red que solo tiene que salir a internet (la wifi de invitados de una charla) se aparta con una sola regla: lo que entra por su VLAN y no sale por ether1, fuera. El ! delante de una interfaz es «todas menos esa» (en Winbox, la casilla ! junto al campo).
[admin@R-Colmena] > /ip firewall filter add chain=forward in-interface=vlan90 out-interface=!ether1 action=drop
Ejercicio
Que la A no vea a la B
Cada empresa tiene su VLAN, pero el router lleva de una a otra: el puesto de la B llega al de la A. Corta el paso entre la VLAN 10 y la 20, en los dos sentidos, sin quitarles la impresora ni internet.
Encendiendo el router…
Cuando un puesto se queda sin red
Las averías de VLAN casi siempre son de este tipo:
- un PC como tagged: el puerto le manda etiquetado y un PC no lo entiende. Un PC va siempre en untagged, y su PVID, en esa VLAN;
- un PVID sin VLAN en el router: el puesto cae en una VLAN donde nadie le contesta;
- un trunk que solo admite sin etiquetar: las wifis se quedan fuera;
- un cable cambiado de puerto: el PVID es del puerto, no del aparato. Si el puesto acaba en el puerto de la impresora, cae en la VLAN de ella. No hace falta volver a cambiar el cable: basta con dar a cada puerto el PVID de lo que tiene enchufado.
Apagar vlan-filtering no lo arregla: sin él, los PCs caen en el bridge, no en su VLAN. Y si no navega nadie, mira antes la salida que las VLAN: ether1 activo, la dirección pública en él, la ruta por defecto hacia el router del operador y el masquerade de srcnat (temas 2 y 3).
Ejercicio
El puesto que se quedó sin red
Desde el lunes, el puesto de la empresa B (ether3) no tiene red: alguien tocó la tabla de VLAN del bridge. Encuentra qué está mal y arréglalo, sin apagar vlan-filtering.
Encendiendo el router…
Lo del tema, en la consola
| Para | En Winbox | En la consola |
|---|---|---|
| Juntar puertos | Bridge ▸ + y Ports ▸ + | /interface bridge port add bridge=bridge1 interface=ether2 |
| La puerta de enlace de una VLAN | Interfaces ▸ VLAN ▸ + | /interface vlan add vlan-id=10 interface=bridge1 |
| En qué VLAN cae un PC | Ports ▸ VLAN ▸ PVID | /interface bridge port set … pvid=10 |
| Qué va por cada puerto | Bridge ▸ VLANs ▸ + | /interface bridge vlan add vlan-ids=10 tagged=ether4 untagged=ether2 |
| Que se aplique | Bridge ▸ VLAN ▸ VLAN Filtering | /interface bridge set bridge1 vlan-filtering=yes |
| El trunk, solo etiquetado | Ports ▸ VLAN ▸ Frame Types | frame-types=admit-only-vlan-tagged |