Saltar al contenido
sudoquest@root
MikroTik

Bridge y VLANs

Un coworking con un solo router: los puertos en un bridge, cada empresa en su VLAN y una wifi por empresa por el mismo cable.

40 min de lectura

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